I made 7 1k javascript demos in 2 weeks for JS1k!
Just uploaded a blog post about my experience making 7 JS1k games, check it out!
I made 7 1k javascript demos in 2 weeks for JS1k! (epic postmortem)

Just uploaded a blog post about my experience making 7 JS1k games, check it out!

It's Robotron in a Capitalist Dystopia!
Playable in browser, works in chrome and firefox, no loading!
https://ldjam.com/events/ludum-dare/44/currency-wars
https://youtu.be/rUmNFSKD5NU
* https://ldjam.com/events/ludum-dare/44/currency-wars *
Here's a video of me doing it... https://youtu.be/j-1cz1DsS24
I just uploaded my source to GitHub so it's easier to view and update!
https://github.com/KilledByAPixel/LudumDare44
Here's a link to my entry...
https://ldjam.com/events/ludum-dare/44/currency-wars

I discovered that it's possible to stretch my game over both of my monitors and it's actually kind of awesome!
https://youtu.be/cnlniT0SB5o
The theme for Ludum Dare 44 was “Your Life is Currency”. This was my 9th Ludum Dare and first one using Javascript. It’s been over 4 years since the last time I’ve competed in a Ludum Dare so I’m excited to get back into it. I think this is one of my best entries, a super difficult twin stick shooter demake of Robotron.
https://www.youtube.com/watch?v=rUmNFSKD5NU
My main goal going into this compo was to make a game in Javascript with sound effects using my sound effect maker ZzFX. I knew this would be a difficult Ludum Dare because it’s been years since I’ve done a 48 hour jam. On top of that I already bought tickets to see Avengers: Endgame on Saturday!
This Ludum Dare had a somewhat unusual theme: “Your Life is Currency”. I grappled with it for a while and scribbled down some ideas, here are a few…
That’s about as far as I got the first night. I always find it impossible to start moving on an idea right away, usually the best ideas don’t come until later.
I woke up with a decision made tried to hit the ground running. I had an interesting idea for the core mechanic that I wanted to experiment with. Trying something I haven’t done before helps me get motivated. In a nutshell the idea is that shooting costs energy but kills give it back.
That mechanic implied a scoring system that is based on the money spent not the money owned, which seems weird at first. For example, if bullet costs 1 cent but a kill gives it back it sounds like a break even. The trick is that your score is money spent so every kill actually adds 1 cent to your total. The copyright symbols give the player a way to recover lost money and keep hope alive.
I started by building on top of my JS1k game “Queen’s Gambit”. The code is so simple and small that I ended up just rewriting almost everything. Most of the tricks I used for JS1k actually make the code harder to work with. By late afternoon I had most of the rewrite done and the art switched over to a currency theme.
I decided to sacrifice a few hours to see Avengers: Endgame on Saturday evening. I still don’t regret it! After getting home from the movies I worked on getting the core gameplay implemented. Some things I added were: pickups, bitcoin movement AI, enemy wave spawning, quick art pass, quick sound pass, and other gameplay improvements. I went to sleep around midnight with a rough but functional first playable.

By Sunday morning I had a clear idea of what I wanted the game to be. I started by making a prioritized list of everything I wanted to do and just hammered through it all day. Here’s the main tasks I did in chronological order…
I also just spent a lot of time just balancing the game and improving small aspects of it. I’ve played a ton of Robotron, so I tried to leverage that knowledge that as much as possible. Maybe I went too far because everyone says the game is too difficult. I am currently offering a $20 prize to the first person to get $20 in my game, so far I’m the only one who has done it!
Another huge thing I added was the sound effects. For most previous game jams I’ve used a tool like Bfxr, which is great. This time around I wanted to test out ZzFX, a tiny opensource javascript sound effect player that I made for JS1k.
ZzFX was super fast to iterate with, and in total I made 14 sound effects. There are some limitations though and finding the right sound can be tricky. After this experience I’ve have some great ideas for the next version. Mainly I want to make a more feature rich tool less focused with code size but retaining the ability to quickly paste in sound effects.
Being able to iterate quickly is extremely important for short game jams. This was my first Ludum Dare using javascript and it is by far the fastest way to iterate that I’ve found. Being able to play the game in browser without a lengthy download is just icing on the cake! It’s safe to say that most of my future Ludum Dares will be done in javascript.
If you’d like to see the code for my game, I made it available on Github.
Thanks for reading, and have a great day!

I thought a few of you might be interested in this 1k demo I just released. It's actually an entire album with 9 tracks and visualization in just 1k of Javascript. Warning, this is probably loud an annoying to most people.
Should I do more stuff like this?
https://youtu.be/0QnqpcoO-cE
I had the game scaling up to match the screen size, but that was causing it to be harder on small monitors and easier on large monitors. So now I've just went ahead and locked the canvas size to 1080p so it's a standardized playing experience! I also figured out how to embed it on itch and run it automatically. Feels good.


c.width=99
T=t?T+1:0
X=99-T%120
Y=40+9*S(i=T/110)
T&&y<99&!(X>0&X<24&(y>Y|y<Y-19))?y-=W-=.03:(T=W=0,y=25)
for(j=2;j--;x.fillRect(X,Y-125*j,19,99))onclick=v=>W=1
x.fillText(i|0,19,y,9)
After you play that, check out my LD44 entry SPENDOTRON: 2019!

This is a game that fits in a tweet! The javascript code...
c.width=99
T=t?T+2:0
i=T/160
X=99-T%160
Y=40+9*S(i*2)
Q=S(i|0**2)>0
T&&y<99&!(X>-49&X<15&(Q?-y+Y-14>0:y-Y>0))?y-=v-=.03:T=v=y=0
x.fillRect(X,Y-120*Q,59,99)
x.fillText(i|0,9,y,9)
onclick=_=>v=1
https://www.youtube.com/watch?v=txcH9sB9UTM



Howdy everyone, I've just finished up a massive rewrite of zzfx.
This is a JavaScript sound effect generator similar to bfxr but a little simpler. The really cool part if you use this, you don't need to mess with wave files at all. Just a play seeded sounds with a simple function call like, ZZFX.z(6)!
The browser has had a major upgrade also and is much more user friendly. There options to lock, reset and mutate parameters. You can even save out the sound as a wave file!
ZzFX Features
ZzFX UI Features
Here's the latest version of the ZzFXmicro JavaScript code you can use directly!
// ZzFXmicro - Zuper Zmall Zound Zynth - MIT License - Copyright 2019 Frank Force
zzfx_v=.5;zzfx_x=new AudioContext;zzfx=(e,f,a,b=1,d=.1,g=0,h=0,k=0,l=0)=>{let S=44100,P=Math.PI;a*=2*P/S;a*=1+f*(2*Math.random()-1);g*=1E3*P/(S**2);b=0<b?S*(10<b?10:b)|0:1;d*=b|0;k*=2*P/S;l*=P;f=[];for(var m=0,n=0,c=0;c<b;++c)f[c]=e*zzfx_v*Math.cos(m*a*Math.cos(n*k+l))*(c<d?c/d:1-(c-d)/(b-d)),m+=1+h*(2*Math.random()-1),n+=1+h*(2*Math.random()-1),a+=g;e=zzfx_x.createBuffer(1,b,S);a=zzfx_x.createBufferSource();e.getChannelData(0).set(f);a.buffer=e;a.connect(zzfx_x.destination);a.start();return a}


This will be my 10th LD! I plan to use javascript.



Just a quick reminder that my super tiny open source sound effect engine ZzFX is available for use in your Ludum Dare games!
There are now 15 games using ZzFX audio! Here are a few of the best...
I also used it for my Ludum Dare 44 game, Spendotron: 2019
Here is the entire code for the micro version of ZzFX. Just paste this code into your JavaScript file and you can play ZzFX sound effects!
// ZzFXmicro - Zuper Zmall Zound Zynth - MIT License - Copyright 2019 Frank Force
zzfx_v=.5;zzfx_x=new AudioContext;zzfx=(e,f,a,b=1,d=.1,g=0,h=0,k=0,l=0)=>{let S=44100,P=Math.PI;a*=2*P/S;a*=1+f*(2*Math.random()-1);g*=1E3*P/(S**2);b=0<b?S*(10<b?10:b)|0:1;d*=b|0;k*=2*P/S;l*=P;f=[];for(var m=0,n=0,c=0;c<b;++c)f[c]=e*zzfx_v*Math.cos(m*a*Math.cos(n*k+l))*(c<d?c/d:1-(c-d)/(b-d)),m+=1+h*(2*Math.random()-1),n+=1+h*(2*Math.random()-1),a+=g;e=zzfx_x.createBuffer(1,b,S);a=zzfx_x.createBufferSource();e.getChannelData(0).set(f);a.buffer=e;a.connect(zzfx_x.destination);a.start();return a}

I going to try for my 10th Ludum Dare! Planning to code it all in vanilla JavaScript.
Over the past year I've made some really nice open source tools to share with everyone...
A sound effect generator similar to to BFXR/SFXR but reworked from the ground up. You can save out wave files to use the sounds in any game, but the best part about using JavaScript is you don't need wave files at all! Just paste in a bit of code to play your sound.

Procedurally generates tiny pixel art sprites with options for mutation and animation frames. Sprites can be copied to the clipboard for easy pasting. It's great for finding interesting ideas to use as a starting point.

Evolve HD textures for use in your games. The texture code can be copied and is ShaderToy compatible.

Bounce Back - Boomerang Zelda Homage
Bogus Roads - Lowres Retrowave Racing
Good luck everyone! ✌️😀
Looking for a game engine for Ludum Dare? Try Little JS, a simple yet powerful HTML5 game engine! You can also use ZzFX for sound effects whether or not you use LittleJS.
https://www.youtube.com/watch?v=chuBzGjv7Ms
Hi everyone. If you are still deciding on a game engine, check out LittleJS! This engine is both super tiny and incredibly powerful. I made this engine with rapid prototyping in mind and I think it would be great for Ludum Dare. It is fully open source with the MIT license on GitHub.
* LittleJS on GitHub * 🚂
https://youtu.be/chuBzGjv7Ms
For an example of what the engine can do when pushed a bit farther, check out my game Space Huggers, originally released for JS13k.
* Space Huggers - Run and gun platformer made with LittleJS *
Thank you for reading, have fun and take care of yourselves!