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!
normal mapping for floors, highlights for lit faces of walls, ambient light for the more relaxed scenes
normal mapping for floors, highlights for lit faces of walls, ambient light for the more relaxed scenes