My new game is an endless race in the sky inspired by 90’s 3D racing games like Skyroads, Marble Madness, and Sonic 3D. This was for the JS1024 competition where size was limited to the very small amount of 1k of JavaScript.

I made this game for the JS1024 2026 competition which is one of my favorite programming contests. This year the theme was “Dreaming.” I have participated almost every year and even won before but this time I wanted to take it to a whole new level.
My goal was to create a dreamlike nostalgic experience that wows visually with fun gameplay that is easy to pick up and play. I used every trick in the book and maybe invented a few new ones. It is by far the most impressive 1k demo I have ever made and I hope it inspires in you a sense of wonder.
Update: Skydreams is the winner of JS1024 2026!
Features
- 3D level rendering system
- 3D player sphere with shadow
- colorful sky gradient with stars
- randomly generated levels
- difficulty increases over time
- mouse controls
- enhanced version has keyboard and touch input
Here is the full code for the entire game. As you can see it is smaller then even just the this post! This html file also includes the JS1024 canvas shim not counted as part of the 1k size.
<head><title>🌈☁️ Skydreams</title></head>
<body id=b style=margin:0>
<canvas id=a>
<script>
// JS1024 shim
a.width = innerWidth;
a.height = innerHeight;
c = a.getContext`2d`;
</script>
<script>
// Skydreams by KilledByAPixel 2026 - 1019 bytes!
for(_=']=o(Ge=F=F>S=E--;)D;eDC),BBc.Av,w@p,q#,${"i(!99 e/-1e3,=(e,h,2+500,e*l/30Ge-a.heighte%4*/)**.7/t,B[m,n,lGQc.fill&&(onmouse,(40-g+M)/30**(g+e&1)3Aellipse(m,n,Math.min(.5,g-M for($&d[M+3|0][round(Q+3)]a.widthAlineTo(! +70*(g>>7B6BRect(AbeginPath(())random()Q=$=M=P=R=S=T=b=3,I=/2,d=[],ia,t=1)=>{StylF`hsl(${e}"h}%"a}%"t})`},ot)=>[/(e-Q+(t-3)**2/*cos((M+t)/49)/2-(h-t*t/.7*/t];movFF>I=e.x,downE.1,upEsetInterval(F>{F0C!170+9+M,770-9*,/2B! (e*e+M* )%,e**3.3%,0);g=M+40|0;g>M;g--){Fd.length;e<=g;)R<-8&<.2,1e4)R=4,400)B<.1b=3*|T=max(7-b,T-5*|0))BR--,d[e++]=s=[],f=7;fDs[f]=e<35|.9<|R<0&T<=f&f<T+b&>.2,M/1e4);f=2;fDF7Cd[g][e][#3 B[r,u2 B[@3 +1B[x,y2 +1Bf?(30+9@,x-v)):(9+5#,r-pB60+30#r,ux,y@))}0<=!.5,l/4,l/9,9BF C!M/9-3,9 -.7*e+.1$+.359;-4<$Q+=I//2-.25,$+=P-=.006,M+=.5,.M/5e3B$<0&-.3<)$=P=S)},16)';G=/[-#@-G]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
</script>
I also made another demo for JS1024 that is a tiny version of the hit mobile game “One More Line”. It isn’t quite as visually impressive as my other demo but still manages to be quite fun because I devoted more space to game code.
I am working on a writeup that explains how Skydreams works. For now you can check out my previous JS1024 writeups about how to make a really nice sounding piano and a fun and physically realistic pinball game.
Thanks for reading and keep on dreaming!

Leave A Comment