some of my games:
http://2darray.itch.io
some free gamedev tutorials:
http://demoman.net
#pico8
?"\^!5f10█▒1⬇️3⬅️;⌂♥7"
::_::flip()cls()w=t()/8for i=0,700do
for j=0,1do
srand(i)f=w+j/120g=i*.618a=g+sin(f+g+rnd()/9)y=cos(f+g)r=sqrt(1-y*y)x=r*cos(a)z=r*sin(a)h=120/(z+3)u=x*h+64v=y*h+64if(j<1)p=u q=v else line(p,q,u,v,rnd(9)+1)
end
end
goto _
#pico8
?"\^!5f10█▒1⬇️3⬅️;⌂♥7"
::_::flip()cls()w=t()/8for i=0,700do
for j=0,1do
srand(i)f=w+j/120g=i*.618a=g+sin(f+g+rnd()/9)y=cos(f+g)r=sqrt(1-y*y)x=r*cos(a)z=r*sin(a)h=120/(z+3)u=x*h+64v=y*h+64if(j<1)p=u q=v else line(p,q,u,v,rnd(9)+1)
end
end
goto _
eventually this will have some stealthy line-of-sight stuff, but for now the spider just has magic awareness
eventually this will have some stealthy line-of-sight stuff, but for now the spider just has magic awareness
getting more and more interested in making the whole game one continuous/seamless map, instead of doing room-transitions...
getting more and more interested in making the whole game one continuous/seamless map, instead of doing room-transitions...
works in a traditional way: source text -> lexer -> parser -> AST -> bytecode
works in a traditional way: source text -> lexer -> parser -> AST -> bytecode
flurry, 274 bytes
?"\^!5f10076=1▒"
s={}::_::cls()for i=0,2do
add(s,{x=rnd(130),y=-10,d=1+rnd(5),u=0,v=0})end
for i,p in pairs(s)do
p.u=(p.u+rnd(.3)-.16)*.98p.v=(p.v+rnd(.4))*.8line(p.x,p.y,p.x+p.u,p.y+p.v,p.d)p.x+=p.u/p.d
p.x-=flr(p.x/130)*130p.y+=p.v/p.d
if(p.y>130)del(s,p)
end
flip()goto _
flurry, 274 bytes
?"\^!5f10076=1▒"
s={}::_::cls()for i=0,2do
add(s,{x=rnd(130),y=-10,d=1+rnd(5),u=0,v=0})end
for i,p in pairs(s)do
p.u=(p.u+rnd(.3)-.16)*.98p.v=(p.v+rnd(.4))*.8line(p.x,p.y,p.x+p.u,p.y+p.v,p.d)p.x+=p.u/p.d
p.x-=flr(p.x/130)*130p.y+=p.v/p.d
if(p.y>130)del(s,p)
end
flip()goto _
#pico8
cls(6)m=8192?"shit",3,3,1
memcpy(0,m*3,m)::_::cls()w=-t()/2rect(36,54,37,127,2)for x=0,60do
a=x/45
for y=0,30do
c=sget(x/3,y/3)+(x+y)%2+.2p=a*(sin(x/20+w)+cos(y/16+w))q=a*(cos(x/23+w)+sin(y/19+w))u=x+p
v=y+q+a*7circfill(u+39,v+54,1,c+p/3-q/3)end
end
flip()goto _
#pico8
cls(6)m=8192?"shit",3,3,1
memcpy(0,m*3,m)::_::cls()w=-t()/2rect(36,54,37,127,2)for x=0,60do
a=x/45
for y=0,30do
c=sget(x/3,y/3)+(x+y)%2+.2p=a*(sin(x/20+w)+cos(y/16+w))q=a*(cos(x/23+w)+sin(y/19+w))u=x+p
v=y+q+a*7circfill(u+39,v+54,1,c+p/3-q/3)end
end
flip()goto _
?"\^!5f101😐<😐1🐱2🅾️◆?7♥웃8☉2"
::_::u=rnd(128)v=rnd(128)g=u-99h=v-64d=max(20,sqrt(g*g+h*h))c=9+d/20+rnd()
if(v>65)p=v-64z=120/(v-64)x=(u-64)/p d=sqrt(x*x+z*z)s=z/d+x/d/4w=(z+sin(x/3+t()/8)+rnd())%4c=w+(c-w)*min(z/40+s^14/4,1)
pset(u,v,c)goto _
?"\^!5f101😐<😐1🐱2🅾️◆?7♥웃8☉2"
::_::u=rnd(128)v=rnd(128)g=u-99h=v-64d=max(20,sqrt(g*g+h*h))c=9+d/20+rnd()
if(v>65)p=v-64z=120/(v-64)x=(u-64)/p d=sqrt(x*x+z*z)s=z/d+x/d/4w=(z+sin(x/3+t()/8)+rnd())%4c=w+(c-w)*min(z/40+s^14/4,1)
pset(u,v,c)goto _
sectors are always rectangles, so any two points inside the same sector are guaranteed to have line-of-sight to each other. this should allow a much faster raycasting strategy!
sectors are always rectangles, so any two points inside the same sector are guaranteed to have line-of-sight to each other. this should allow a much faster raycasting strategy!