Crafting a 13KB Game: The Story of Space Huggers

JS13KGames Logo

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!

Space Huggers logo

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.

Continue reading
Posted in Game Dev, JavaScript | Tagged , , , , | Leave a comment

JavaScript Haikus – My Live Talk for Nerd Nite

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!

Posted in Generative, JavaScript | Tagged , , | Leave a comment

LittleJS Game Jam and New Logo

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

Original LittleJS 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!

This logo is already available in the engine as a optional splash screen that can appear while your LittleJS game is loading. You can see it play when opening the example game.

New LittleJS Logo

Engine Improvements

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.
  • Many other users have been helping with feature suggestion and bug reports. Join the discussion on discord and share your ideas!

Thanks for reading

That’s all I have for now. You can star LittleJS on GitHub to get the latest updates, we hope to reach 3k soon!

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! ๐Ÿš‚

LittleJS Concept Image Generated by Dall-E 3
Posted in Game Dev, JavaScript | Tagged , | Leave a comment

City In A Bottle – A 256 Byte Raycasting System

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…

Continue reading
Posted in JavaScript | Tagged , , , | 7 Comments

New Piroot Trailer – Happy Pi Day

It’s Pi day and new trailer for Piroot is here and the steam store is officially live! Wishlist it today!

Posted in Uncategorized | Leave a comment

Piroot – An Epic Adventure Game

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!

Posted in Game Dev | Tagged , | Leave a comment

Bitwise ๐Ÿ“ผ Liminal – A Short Film in 256 Bytes

I found an old VHS tape at a yard sale. It was labeled “Bitwise Liminal” in sharpie. But when I watched the video it was only static.

Then I started having vivid and surreal dreams. While awake I couldn’t stop thinking about that weird VHS tape.

After researching I learned it was a digital backup. Using some special software I recovered the data. To my shock, it was a 256 byte program…

With trembling hands I opened it in a web browser. Strange. This reminds me of the dreams I’ve been having.

Now I don’t need to sleep anymore. I just keep watching.

<canvas id=c><svg onload=setInterval("for(t+=.1,R=T=C=Math.cos,c.width=w=128,i=9986,V=t/9&3;Y=i--/w;c.getContext`2d`.fillRect(X,Y,(C(t/6)*T^V*i/1e4*T+t)%20?(R=T++,1):(T=9,19/R),5/Z))for(Z=5,X=i%w+4/R;0<(V*95+C(t/3)+Z*X/64-Z^Z|(60-Y)*Z/58)%13;Z+=.2);",t=9)>
Posted in JavaScript | Tagged , | Leave a comment

LittleJS Engine – Community Game Showcase

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!

Posted in Game Dev | Tagged | Leave a comment

FxVase – Interactive Pottery Simulation

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.

Posted in Game Dev, Generative | Tagged , | Leave a comment

Free Workshop: How to make amazing generative art with simple JavaScript code

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!

Posted in Generative | Tagged , , | Leave a comment