Skip to content

Game jams and tiny games: from Ludum Dare to js13kGames ​

A game jam is simple: a theme, a deadline, and a lot of people making games at once. Most entries are rough. Some are brilliant. A few become commercial games that millions of people play.

Jams and browser games grew up together. A jam game has to be easy to try, because judges and players have hundreds of entries to get through. "Click here to play" beats "download this zip" every time.

A short timeline ​

  1. 2002Geoff Howland runs the first Ludum Dare, a 48-hour solo competition.
  2. 2009The first Global Game Jam runs in January, with jam sites around the world sharing one theme.
  3. 2012Andrzej Mazur starts js13kGames: a month to make a JavaScript game that fits in 13 kilobytes, zipped.
  4. 2013Leaf Corcoran launches itch.io, which becomes the default place to host jams and their entries.
  5. 2015Maddy Thorson and Noel Berry make the original Celeste for PICO-8 in four days.
  6. 2017Mark Brown runs the first GMTK Game Jam. Baba Is You starts as an entry to the Nordic Game Jam.

Sources: Ludum Dare, Global Game Jam, js13kGames, itch.io, Celeste, Baba Is You, Game Maker's Toolkit.

Why a deadline helps ​

A jam takes away the two things that kill most hobby projects: scope and time. You can't build an RPG in 48 hours, so you build one mechanic and make it feel good. The theme gives you a starting point, and the deadline makes you finish.

That's also why jam games are a good test of tools. A tool that needs a day of setup loses a jam before it starts.

Jams on the web ​

Early Ludum Dare entries were mostly downloads for Windows. As Flash and later HTML5 got better, more and more entries ran in the browser, and raters could play them right away.

itch.io made that the default. Any entry could have a page with an embedded browser build, and hosting a jam became something anyone could do. Today the site lists jams running almost every day.

js13kGames: the size limit as a theme ​

Most jams limit time. js13kGames also limits size: the whole game, zipped, must fit in 13 kilobytes (13,312 bytes). No libraries, no big images, no music files. Entrants draw with code, generate sounds at runtime, and squeeze every byte.

It sounds like a gimmick, but the lessons carry over. Small games load instantly, start fast on old phones, and are easier to understand. The tricks people invent for js13k, like procedural art and tiny synthesizers, show up in normal games later.

Jam games that grew up ​

Some of the best-known indie games began as jam entries:

  • Celeste started as a PICO-8 game made in four days, before it became the full game in 2018 (source).
  • Baba Is You started at the Nordic Game Jam in 2017 and won the Independent Games Festival grand prize in 2019 (source).
  • Surgeon Simulator started at the Global Game Jam in 2013 (source).

The pattern is the same as in the Flash portal era: make something small, put it where players can try it, and grow what works.

What jams teach about tools ​

Jam developers want the same few things every time:

  • Start in minutes. A template that already runs, with input, sound and a game loop.
  • Iterate on feel fast. Change a number and see the jump get better without restarting.
  • Ship a browser build. One command, one folder, upload to itch.io.
  • Stay small. Fast loads help with raters, and size limits like js13k reward it directly.

Where debuff fits ​

debuff was built for this kind of game. npm create debuff gives you a running template, live-tunable params let you tune feel while the game runs, and debuff build produces a folder ready for itch.io. The starter game ships at about 19 kB brotli. That's measured differently from js13k's zip limit, so it's not a js13k entry as is, but it's the same spirit. A coding agent can also play your jam game with you, which helps when it's 3 a.m. and you can't tell if the level is fun any more.

bash
npm create debuff@latest my-jam-game

Or read more history: Flash games and the portal era and from canvas to WebGPU.