Log In  
Follow
jahndis
:: Unfold ::

Cart #vision_quest-0 | 2022-09-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

"Vision Quest"

I hardly remember the sand stinging my face or the burning fatigue in my limbs, my entire spirit absorbed by the spectacle dancing before my eyes...

280 characters

w,t,s,c,r=128,0,sin,cos,rnd::_::pal({1,2,8,9,10,12,13,14,7},0)for x=0,64 do?"웃",32,87,0
a=38*(x+t*2)b=(x%27*9)%64line(a*2%w-9,b,a%w+9,b,9)for y=0,64 do
n=s(x/w+t)+c(y/w+t)+s(y/w+t*3)*c(x/w+t)pset(x*2+r()*2,y*2+r()*2,y>48+r()+s(x/80)*4and 15or(3*n%3+t*4)%8+1)end
end
t+=.001goto _
P#117502 2022-09-16 06:29

:: Unfold ::

Cart #gravity_wrangler-1 | 2022-09-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

"Gravity Wrangler"

Each world hurtles into the deep, feigning a wandering heart, accelerating their demise. What would they think if they realized that, through the eons, I was the only one standing between them and the frozen abyss...

279 characters

m,o=128,{}for i=1,9 do
o[i]={rnd(m),rnd(m),0,0}end::_::for i=1,18 do
for j=1,64 do
pset(rnd(m),rnd(m),rnd(m)<1 and rnd(3))if(i<10 and j<10)a=o[i]b=o[j]x=a[1]-b[1]y=a[2]-b[2]d=sqrt(x^2+y^2)+.1a[3]-=x/d/999a[4]-=y/d/999
end
a[1]+=a[3]a[2]+=a[4]pset(a[1],a[2],i%9+7)end
flip()goto _
P#116709 2022-09-01 05:10

:: Unfold ::

Cart #strummin_along-0 | 2022-08-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

"Strummin' Along"

280 characters

n,m,t,w,o,l=32,128,0,0,ovalfill,line::_::cls(1)for i=0,n do
c=4if(i==n)c=9
o(16,64-i,m,99-i,c)o(-n,78-i,m,m-i,c)end
for i=16,m do
x=97-i
c=4if(i%9>7)c=6
if(i<20or i>46)l(i,x,i+n,x,c)o(n,48,84,62,0)end
for i=7,n,5 do
l(9+i,82,m+i,-n-(w+i)%3,7)end
flip()t+=1if(t%n<1)w=9
w*=.9goto _
P#116084 2022-08-21 04:49

:: Unfold ::

Cart #celestial_defender-3 | 2022-08-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

Celestial Defender

Save the universe from ancient celestial beings in this procedural shoot-m-up boss runner!

Or complete 24 custom missions ranging in difficulty from a walk in the park to a chaotic hell!

Controls:

  • Use the arrow keys and Z to select Infinite Mode or a custom mission.
  • Use the arrow keys to dodge the celestial being's energy blasts

Based on a game my brother and I collaborated on a long while back, mostly to experiment with writing music.

Enjoy!

Update 8/13/2023:

  • Added the excellent suggestion to make being closer to the enemy do more damage.
  • Added sound effects
P#115730 2022-08-14 02:02 ( Edited 2022-08-14 05:15)

:: Unfold ::

Cart #hitting_the_slopes-1 | 2021-03-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

"Hitting The Slopes"

280 characters

t=0n=0m=64z=128::_::if(n%9<1)then
cls(1)n=1for i=0,z*2 do
line(32,m,i-m,z,7)line(z,50,i-m,z,7)end
end
if(t<1)r=rnd(z)s=32-rnd(m)n+=1
for i=0,z do
?"$",i*6,z-i%4*i,3
for j=0,z do
if(pget(i,j)>7)pset(i,j,6)end
end
x=r+s*sin(t/m)y=t+5if(pget(x,y)>1)pset(x,y,8)
flip()t+=.5t%=z
goto _
P#89324 2021-03-21 19:45 ( Edited 2021-03-21 22:56)

:: Unfold ::

Cart #im_a_big_fan-0 | 2021-03-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

"I'm A Big Fan"

271 characters

t,m,z,l,o,s,c=0,64,999,line,ovalfill,sin,cos::_::cls(1)rectfill(63,0,m,m,5)for j=0,1 do
for i=j*z/4,40+j*z/4 do
x=c((i+t)/z)y=s((i+t)/z)l(m-x*40,m-y*10,m+x*40,m+y*10,0)end
end
o(58,62,69,66,3)o(60,m,67,68,7)pset(m+s(c(t/z))*m/3,m+3+s(c(t/z*2))*m/7,6)flip()t+=4t%=z
goto _
P#89287 2021-03-20 23:19

:: Unfold ::

Cart #ziggy_frog-2 | 2021-03-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

Ziggy Frog

Enjoy the simple life of Ziggy the frog as you help him catch flies on his log!

Controls:

  • Use Z to charge the vertical power of your jump.
  • Use Left and Right to charge the horizontal power of your jump.
  • Use X to do one last jump and exit if you're all done playing :)

Eat flies at the peak of your jump! Each fly will give you more jumps!

There are different levels of difficulty for whatever you think seems most fun, along with a "Lazy" mode with an infinite number of jumps, if you're just looking to relax and catch some flies.

Based on a goofy mechanic my kid and I worked on together, I took some extra time to give it some polish and finish it up.

Enjoy!

Update 3/19/2021:

  • Added jump power/direction UI to better show how high and which direction you'll be jumping
  • Added shrinking circle that better shows when the frog will eat a fly
P#83103 2020-10-19 05:06 ( Edited 2021-03-20 05:52)

:: Unfold ::

I was setting up PICO-8 on a raspberry pi on my TV, and I thought to myself, "Wouldn't it be nice if I could use my phone as a controller?". Obviously not ideal for games where tight controls are necessary, but a perfectly valid use case for slower or turned-based games.

Enter in Unified Remote!

At it's core, Unified Remote allows you to turn your phone into a remote, and it comes bundled with a bunch of remotes for various applications. However, I couldn't find anything that worked with PICO-8 out of the box. So I took it upon myself to create a custom remote.

This tutorial will assume you are running PICO-8 on a raspberry pi, and does not go into the setup of that piece.

First, you'll need to install the Unified Remote Server on your raspberry pi:

wget -O urserver.deb http://www.unifiedremote.com/d/rpi-deb
sudo dpkg -i urserver.deb 
rm urserver.deb 

Next, you'll need to setup Unified Remote Server to run as root whenever your pi starts up:

sudo modprobe uinput # just in case this hasn't been loaded yet

Modify /etc/rc.local (as root) and add the following somewhere before the "exit 0":

/opt/urserver/urserver-start &

Now, when you reboot your pi, Unified Remote Server should start up automatically.

Next, you'll want to add the custom PICO-8 controller that I've put together (feel free to tweak it to your needs using the Docs). To do this, you'll need to create a directory for custom remotes. For me, this was /opt/urserver/custom (even though the documentation says otherwise). You may want to go to the Unified Remote Server Manager interface at http://yourpihostnameorip:9510/web/#/log and see where the logs say it's looking for custom remotes to be sure. So in my case:

sudo mkdir /opt/urserver/custom
sudo mkdir /opt/urserver/custom/pico8

# Set permissions to a user other than root, so it's easier to work with
# Substitute your user here (or don't do it at all and just use root)
sudo chown pi /opt/urserver/custom/pico8
sudo chgrp pi /opt/urserver/custom/pico8

Then, you'll want to put the following files in the new pico8 directory:

meta.prop

meta.name: PICO-8
meta.author: John Langewisch
meta.description: Gamepad for PICO-8
meta.tags.category: gaming

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<layout orientation="landscape" scroll="none">
  <row weight="1">
  </row>

  <row weight="6">
    <space weight="1"/>

    <grid color="#84769C" weight="4">
      <row>
        <space/>
        <button icon="up" ondown="core.keyboard.down,up" onup="core.keyboard.up,up"/>
        <space/>
      </row>

      <row>
        <button icon="left" ondown="core.keyboard.down,left" onup="core.keyboard.up,left"/>
        <space/>
        <button icon="right" ondown="core.keyboard.down,right" onup="core.keyboard.up,right"/>
      </row>

      <row>
        <space/>
        <button icon="down" ondown="core.keyboard.down,down" onup="core.keyboard.up,down"/>
        <space/>
      </row>
    </grid>

    <space weight="1"/>

    <grid weight="4">
      <row weight="2">
        <button image="logo.png" scale="fit" color="transparent"/>
      </row>

      <row weight="1">
      </row>

      <row>
        <space weight="1"/>
        <button text="SELECT" weight="6" ondown="core.keyboard.down,escape" onup="core.keyboard.up,escape"/>
        <space weight="1"/>
        <button text="START" weight="6" ondown="core.keyboard.down,enter" onup="core.keyboard.up,enter"/>
        <space weight="1"/>
      </row>
    </grid>

    <space weight="1"/>

    <grid weight="4">
      <row weight="3">
      </row>

      <row weight="4">
        <button icon="select" color="#FF6699" weight="2" ondown="core.keyboard.down,z" onup="core.keyboard.up,z"/>
        <space weight="1"/>
        <button icon="docclose" color="#FFCCAA" weight="2" ondown="core.keyboard.down,x" onup="core.keyboard.up,x"/>
      </row>

      <row weight="3">
      </row>
    </grid>

    <space weight="1"/>
  </row>

  <row weight="4">
  </row>
</layout>

icon.png (I just took the PICO-8 icon)
logo.png (I just took the PICO-8 logo)

Once you've added those files under /opt/urserver/custom/pico8 you should be able to restart the server to load the new remote either through the web UI, or by running:

/opt/urserver/urserver-stop
/opt/urserver/urserver-start

If things don't seem to be working, you can go to the web UI and check the logs for issues.

Now, you'll need to download the Unified Remote app to your phone (I paid for the full version, but it shouldn't be required). When you start the app, it should automatically find your server. Hopefully, when you add a new remote, and open the Gaming category, you should see your new PICO-8 remote. Add it, select it, and you should be able to control PICO-8 while it's running on your pi!

A few caveats:

  • The files assume american style keyboard, feel free to tweak the buttons in the layout if that's an issue.
  • I have the layout set to landscape orientation, but apparently Unified Remote doesn't respect that. I have to turn on screen rotation and make sure I'm in the correct orientation for it to look decent.
  • I had some issues with the Unified Remote app picking up changes made to the meta.prop file. Clearing the app data, and starting from scratch solved it.
  • I am using the wifi data connection for Unified Remote. This obviously relies on semi-decent network speeds to be responsive. Apparently there's also bluetooth connection, but I have not attempted that.
  • "Select" is Escape, "Start" is Enter. Again, tweak to your heart's content.

Hopefully this is useful to folks!

P#82795 2020-10-11 06:09 ( Edited 2020-10-11 06:23)

:: Unfold ::

Cart #keep_it_alive-0 | 2020-04-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

"Keep It Alive"

280 characters

p,v,t,m,z,f,s=0,0,0,64,128,circfill,sin::_::cls(0)c=3
for i=0,m do
if(i==m)c=0
x=m+9*s(i/z+p/z)y=z+4-i+4*s(i/z+t/z)-4*s(p/32)f(x,y,18+c-i/8,c)end
f(m,t%m,2,12)for i=0,m do
f(x+i/4*s((i+p*5+t)/z),y+7-i/2+i/7*s(p/z),4-i/16,8)end
flip()a=.1-rnd(.2)t+=2v=max(-1,min(1,v+a))p+=v
goto _
P#74918 2020-04-18 05:51

:: Unfold ::

Cart #weaver-0 | 2020-03-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

"Weaver"

280 characters

poke(24364,7)::n::z,a,r,f,p=64,0,rnd,rectfill,pset
cls(0)w=r(32)h=r(32)c=1+r(14)d=c+1+r(14)x,y,b=z,z,r(1)f(w,h,z,z,c)f(w,h,w-9,z,d)::_::p(x,y)p(x,h+z-y)p(w+z-x,y)b+=r(.4)-.2x=min(max(x+cos(b),w),z)y=min(max(y+sin(b),h),z)::m::flip()
if(x>w and y>h)goto _
a+=1
if(a>z)goto n
goto m
P#73780 2020-03-09 04:24

:: Unfold ::

Cart #lunar_blackout-0 | 2020-03-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

"Lunar Blackout"

279 characters

t,m,v,z,r,c,p=0,16,64,128,rectfill,circfill,pset::_::cls(1)c(99,24,20,7)r(0,v,z,z,0)for i=0,8 do
x=z-i*9y=abs(sin(i*.11))r(x,v,x+7,v-y*44,0)for j=0,z do
c((1+j%4)*t/9%z-i*5+j%63*m-z,m+y*4+j%2*m,6-y*2,2)end
g,h=i*m-t%m,i*32+t%32p(g,v,7)p(h,v)p(g+1,v,8)p(h-1,v)end
t+=1flip()goto _
P#73685 2020-03-05 06:55 ( Edited 2020-03-05 07:05)

:: Unfold ::

Cart #sonder-0 | 2020-03-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

"Sonder"

276 characters

b,z,x,y,d,r,g=0,128,{},{},{},rnd,pget
cls(0)::_::for i=0,z do
for j=0,z do
c=g(i,j)
if(c>0)pset(i,j,c-1)
end
end
for i=1,9 do
if(b<9)b+=1x[i]=r(z)y[i]=r(z)d[i]=r(1)
circfill(x[i],y[i],2,9)x[i]+=cos(d[i])*r(3)y[i]+=sin(d[i])*r(3)d[i]+=r(.1)-.05x[i]%=z
y[i]%=z
end
flip()goto _
P#73651 2020-03-04 05:41 ( Edited 2020-03-05 07:05)

:: Unfold ::

Cart #pandemic-0 | 2020-03-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

"Pandemic"

265 characters

z,g,s,r,f=128,pget,pset,rnd,flr
cls(0)
for i=1,9 do
x=f(r(z))y=f(r(z))
s(x,y,8)
end
::_::
for i=1,z do
x=f(r(z))y=f(r(z))
c=g(x,y)
a=g(x+1,y)+g(x-1,y)+g(x,y+1)+g(x,y-1)
if(c>1)then
s(x,y,c-1)elseif(c==1)then
elseif(a>4 and r(a)>4)then
s(x,y,8)end
end
flip()
goto _
P#73629 2020-03-03 07:32 ( Edited 2020-03-05 06:56)

:: Unfold ::

Cart #sweet_sip-0 | 2020-02-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

"Sweet Sip"

279 characters

m,z,t,c,l,s=55,127,0,circfill,line,sin::_::cls(0)for i=-6,6 do
c(m-i*3+s(i*t/z),80+i*6,12-i*i,7)l(46+i,90,41,115,7)c(60,m,9)l(66+i/6,48+i/7,87,36,1)end
?"●",m,50,1
for i=0,z do
l(m-sqrt(i),66+i/8,m+s((t-i/9)/z)*50,66+i/m-s(t/z*2)*9,3)l(z+4,3,90+i/9,9+i/4,8)end
t+=4
flip()goto _
P#73275 2020-02-20 05:46 ( Edited 2020-03-05 06:57)

:: Unfold ::

Cart #evening_train_ride-0 | 2020-02-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

"Evening Train Ride"

280 characters

z,t,r,c=128,0,rectfill,circfill::_::cls(2)
c(40,64,25,10)
r(0,90,z,z,1)
for i=0,z do
r(i,64-sin(sin((i-t)/999))*20,i,90,3)
r(i,70,i,99-sqrt(abs(sin((i-t*4)/z)*640)),6)
end
for i=0,32 do
r(40+24*i,65,64+24*i-2,69,5)
if(i%8<7)then r(41+3*i,67,42+3*i,67,9)
end
end
t+=1
flip()goto _
P#73198 2020-02-18 06:58 ( Edited 2020-03-05 06:57)

Follow Lexaloffle:          
Generated 2023-02-02 02:37:53 | 0.070s | Q:62