One of my favorite game jams is the legendary Js13kGames competition, where participants have one month to make a web browser game that fits in a 13 kilobyte zip file. To put that into perspective, a floppy disk from the before times could hold 1.44 MB, enough to fit over 100 JS13K games!
In 2021 the contest celebrated its 10th annual event. The theme was “Space” and there were an impressive 223 games submitted. It was my third year participating in the contest. That was a few years ago and I am back now to share with you the story of how my entry was made. Better late then never!
My game, “Space Huggers” is a run and gun roguelike platformer with procedurally generated environments and a pixel art style. I was inspired by games like Broforce, Metal Slug, and Contra. The engine was written from scratch in pure JavaScript and has since been open sourced under the name LittleJS. It’s a great little engine with many nice features packed into a tiny footprint with clean well documented code.
In this post I will explain how my game works and the design process I went through while developing it. We will not go into detail about the code here, but it’s all available on GitHub for you to check out. Also, there is now an improved version on Newgrounds with some bonus features like medals, a final boss fight, and even support for mobile devices.
Last week I gave a talk about tiny code for Nerd Nite in Austin Texas! This is a more refined version of my previous talk and a great introduction to creative coding and recreational programming. I hope it inspires you to write some of your own tiny programs!
Big LittleJS news! We have a game jam announcement, new logo, and some community contributions including an insane rendering speed boost.
Announcing LittleJS Game Jam
First of all I’d like to invite you all to participate in the first LittleJS game jam! It will be an exciting opportunity to unleash your creativity and develop games using the free and open source LittleJS game engine. There has already been great support with 56 people joined with 4 months before it starts. I can’t wait to see what you all make. ๐ ๐
Introducing The New Logo
We have been working on a new logo since last year and just recently unveiled it. The old logo was a simple pixel art train engine I made as an icon for the website. A good starting point, but felt a bit primitive and it was time for a redesign.
The creative process has involved gathering input from the community on discord and a forum post on GitHub. I even used AI to help prototype a few ideas. After many iterations and rounds of feedback, we have arrived at a result that I’m super happy with. One of the coolest things is that it is actually drawn using JavaScript!
Finally, there have been a number of improvements to LittleJS over the past few months thanks to help from the community!
Rendering Speed Boost: Cody Ebberson worked on switching over the rendering system to use instanced rendering which allows for a major boost. On my computer I can now draw an insane 400,000 fully dynamic sprites at 60fps, while before it topped out around 50,000. That’s an 8x speed boost! You can follow our discussion here.
ZzFX Filter Parameter: Dmitry Iv. added low and high pass filters to the ZzFX sound synth, which I also pulled into the latest LittleJS update. This extra parameter really opens up the range of sounds that are possible. You can play with it live in the ZzFX sound designer.
Engine Type Info Cleanup: E1e5en has been helping fix up many things, especially the type info which is much improved. A new file called jsconfig.json was added to the project to help preserve type correctness. The documentation has also been updated.
I’ll leave you with one of the AI generated images I made while iterating on the new logo that I thought was funny. Thankfully people in the forum steered me away from giving the logo a face. ๐คฃ All aboard the LittleJS express, full speed ahead! ๐
Hello size coding fans. Today, I have something amazing to share: A tiny raycasting engine and city generator that fits in a standalone 256 byte html file.
In this post I will share all the secrets about how this magical program works. Here’s my tweet that contains the code and a video of the outputโฆ
You may have already seen this post on my twitter timeline. After I originally released it about 2 years ago it ended up being one of my most popular tweets ever. Thank you for supporting this strange obsession of mine. Keep reading and I will try my best to explain how and why it works the way it does…
There’s a new website up for Piroot, the action adventure game that I have been working on for many years. Also, some big news is coming on Pi Day, 3.14!
It’s been over 2 years since the LittleJS engine was launched and it is still going strong! There have been improvements across the board to make the engine super tight and powerful. To name a few, post processing effects, native wave/mp3 support, typescript compatibility, and NodeJS build system. I also produced a nice intro tutorial to help onboard new users.
In this video we are celebrating some outstanding games made by the community. It is wonderful to see such impressive variety of style and genera in this collection. Here’s to the continued success and boundless potential of LittleJS. Full steam ahead, Choo Choo!
Sculpt, glaze, and fire your own virtual pottery, then mint it on the blockchain to share with the world! This interactive tool allows for a wide range of expressive sculptures to be rendered in real time and saved in HD. It was written from scratch with vanilla JS and webgl shaders using a rendering technique called ray marching.
My workshop from last year’s JS Game Dev Summit is now available for free! This three hour course starts with how to create a basic HTML file and goes to advanced graphical effects by the end. It was recorded live with a class that participated by asking questions which helped guide the talk. It’s a great introduction to making generative art and learning how it works even if you’ve never programmed before!
Aaand that's a wrap - we've accepted 180 games into #js13k 2024 already! We're still working with a couple of devs on some issues in their submissions, but hopefully it's a matter of 1-2 hours max to fix everything and accept the remaining entries.
Today I made rocks! ๐ชจ๐งโโ๏ธ Road signs! โ ๏ธ๐ง And water! ๐ I made the road 3 lanes wide and traffic spawns in ahead of you. This is just a test of the new sprites I added, tomorrow I need to rework the track generator! ๐ ๐ #gamedev #js13k #outrun
Today I made trees! ๐ฒ๐ณ๐ด And flowers! ๐ป๐น๐ชป Also wind to move the plants! ๐๐จ๐ช๏ธ Lots of cleanup and rework of systems. Tomorrow we improve the track generator and and work on gameplay. ๐๐ ๐ #js13k #gamedev #outrun
Much progress on my js13k game! ๐๐จ It now includes the full game loop! New stuff: start screen, hud, collisions with vehicles & objects, offroading, checkpoints, improved vehicles, radio, sounds.
Tomorrow I start work on level 2. ๐ ๐ #js13k #javascript #outrun #gamedev