Log In  

Cart #racenosun_560-0 | 2019-11-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Looks like I finally made something with voxelspace terrain recent studies https://www.lexaloffle.com/bbs/?tid=35654

This Race The Sun partial demake is my first entry to #TweetTweetJam N°3, in Pico8 with a 560 characters limit !

The Goal

You must go as far as possible, with no sun :D

Controls

Use < / > arrow to move your ship

Ctrl + R to restart after crashing

Good luck and have fun !

P#69968 2019-11-17 14:50 ( Edited 2019-11-17 14:52)

I made a commented version of the code.

In the process, I saw I could win 3 more characters by inlining i in h=d[i]

and also make the death rotation slower by adding /4 to v+=0.02/4

What is missing most, I think, is a way to increase difficulty by the time, by adding more obstacle or make the ship faster.

d={} -- land colormap / texture
v=0 -- view angle
m=4 -- x on the map
n=0 -- y on the map
g=0 -- game state 0 running 1 dead
::★::
cls()
-- "graphics engine", voxelspace
z=44
while z>8 do
 -- defining zone to display
 w=z*cos(v)
 t=z*sin(v)
 o,p=-w-t+m,t-w+n+9
 q,r=w-t+m-o,-w-t+n-p+9
 -- each 2 columns of the screen
 for k=0,127,2 do
  -- pick the pixel in color-map
  i=bor(band(o,0x7f),shl(band(p,0x7f),7))
  h=d[i]
  -- low land waves / height, could be 0
  j=36-cos(o/64)*sin(p/64)*4
  -- obstacle
  if(h==5) j=24
  -- z perspective, 32 horizon
  l=32+j/z*24
  -- display the "voxel"
  rectfill(k,l,k+1,127,h)
  -- preparing next pixel to pick
  o+=q/64
  p+=r/64
 end
 z-=1
end -- end of graphics "engine"

-- pick up position in colormap
f=bor(band(m-1,0x7f),shl(band(n-1,0x7f),7))
-- if collision, gamestate is ended
if(d[f]==5)g=1
-- game is running
if g==0 then
 -- smooth turning
 f=0
 if (btn(0)) m-=1 f=-0.02
 if (btn(1)) m+=1 f=0.02
 v=0.7*v+f*0.3
 -- preparing next texture line
 -- just behind viewpoint
 e=shl(band(n,0x7f),7)
 for i=e,e+127 do
  -- light/dark gray checkerboard
  d[i]=6+(flr(n/8)+flr(i/4))%2
 end
 -- placing new obstacle randomly
 -- on the same line
 s=flr(e+rnd(127))
 d[s]=5 
 d[s+1]=5
 -- ship move forward
 n-=1
else
 -- game ended
 -- death rotation
 v+=0.02
 ?"dead",56,24,9
end
-- score
?-n,1,1,7
-- ship :d
?"☉",58,120,13
flip()
goto ★
P#70025 2019-11-18 21:03 ( Edited 2019-11-24 19:10)
:: dw817

Make it get faster over time with _set_fps(), @dhostin. I talk about this HERE:

https://www.lexaloffle.com/bbs/?tid=35970

P#70029 2019-11-18 22:35

Thanks for the tip !

P#70036 2019-11-19 07:38

actually could you make the player more visible because its hard to see it

P#72917 2020-02-08 19:52

You can edit the last number of the line below, which is the color of the ship

 ?"☉",58,120,13
P#72935 2020-02-09 17:05 ( Edited 2020-02-09 17:06)

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2020-06-01 05:52 | 0.030s | 2097k | Q:44