js13kGames Resources
List of useful tools, materials, and tutorials for creating a js13kGames entry, and post-mortems from already created games. The items are in no particular order. Please feel free to suggest additions or edits to the list either by sending a pull request on GitHub or emailing them to contact@js13kgames.com.
Micro game engines and boilerplates
- ox - tiny 2D game framework for the web
- Selfish - class-free, pure prototypal inheritance
- Mibbu - Javascript game microframework
- jAllegro - JavaScript port of a game programming library
- Ocelot - minimalist HTML5 2D game engine, Ocelot aims for simplicity and small filesize
- js13k-boilerplate - js13kGames boilerplate
- JS13k Gulp workflow - A gulp-powered workflow with source file minification, image optimization and zip generation
- js13k-toolkit - starter repository for js13kGames, a set of tools for developing a JS game and keeping it under 13kb
- js13k-requirejs - require.js-powered application template with build tools
- js13k-rollup - gulp/rollup.js powered template with support for ES2015 modules and build tools
- js13k-starter - sample js13k project structure, example and Gulp build process
- Tiny-Canvas - lightweight minimal implementation of a batched and stack matrix based Canvas with WebGL backend
- Ga - tiny, cute and friendly system for making HTML5 games
- Umbra - modernized and compressed spiritual successor to Ga, created for the 2020 JS13KGames competition.
- platform-engine - 2D platform engine that handles collisions, slopes, rotations, etc.
- js13kGames-boilerplate - includes game loop, utility functions and webpack config to package game with just one command
- js13k-webpack-starter - build with a single command, dev server, es2015 support
- js13k-base - simple commands, a server, and a sample game + framework
- js13k-webpack-typescript-starter-party - starter Webpack project to transpile TypeScript, build, and zip your game
- js13kgames-parcel-starter - starter repo to build, zip, and check the file size of your game with a single command
- responsiveTouchGameFramework - responsive canvas game framework with unified mouse / tactile inputs
- Tweetwork - a 140b canvas game framework
- Kontra - a lightweight JavaScript gaming micro-library, optimized for js13kGames
- JS13K 2017 Kit - a pico-8 like graphics engine and game boilerplate
- JS13K starter - gulp starter watching changes, and tasks to compile, minify, inline, and zip you game for better optimization
- js13k-ecs - a 1kb entity component system, designed for js13k
- js13k-2d - a <2kb 2D WebGL renderer, designed for js13k
- floppy - a micro game engine for beginners
- CSS3Dframework - a hackable ~1.7kb framework to display and animate CSS3D shapes
- MiniDragAndDrop - a DOM-based, easy-to-use drag&drop library for desktop and mobile browsers (639 bytes)
- Mini2Dphysics - a 1.5kb 2D physics engine. Just set the gravity, create Circles and Rectangles, and watch them fall and collide. (see index.html)
- Jabo Micro Game Engine - lightweight and beginner friendly micro game engine
- Craters.js mini game framework - simple to use hackable framework, compact at ~2kb zipped leaving enough room for game logic
- 280 bytes responsive, hackable, mobile friendly game framework with native arrow keys / WASD / ZQSD key inputs detection
- gamejam-boilerplate - a small, extendable boilerplate for 2D canvas games with keyboard/mouse/touch support, live reload and build script to package the game as an optimized ZIP
Sound and music
- SoundBox - an HTML5 synth music tracker
- jsfxr - as3sfxr synth port to JavaScript
- Arcade audio for js13kGames - blog post about generating your own sound effects
- Sonant-X - small JavaScript synthesizer library
- Web Audio API prototypes - demos using the Web Audio API to synthesize audio in the browser
- TinyMusic - simple, lightweight music synth/sequencer in JavaScript using the Web Audio API
- miniMusic - draw a melody with your mouse, choose the tempo, volume and base note, then export it as a super short JS code
- Google Music Creator - a simple music creator by Google
- ZzFX - Zuper Zmall Zeeded Zound Zynth
- ZzFXM - A tiny JavaScript music renderer for ZzFX
Artwork and fonts
- OpenGameArt - free graphics assets
- Sprite generator - 1 color sprite interpreter
- Voronoise - procedural pattern generation
- Blockies - identicon generation
- Pixel map generator - generate pixel maps
- Pixen - pixel art editor for Mac OS X
- CompressPNG - compress PNGs online
- TinyPNG - advanced lossy compression for PNG images that preserves full alpha transparency
- Pixel Font - tiny pixel font
- js13k-graphics-editor - Draw with your mouse and export the result as a tiny JS snippet
- Piskel - Pixel Art and Animated Sprites
- aseprite - animated sprite editor & pixel art tool
- Pyxel Edit - is a pixel art editor designed to make it fun and easy to make tilesets, levels and animations
- mini pixel font - Generate your pixel-art font with a few lines of JS
- js13k mini-svg editor - Create mini-svg graphics for your js13k game using a webbased editor
- js13k-path - draw polygons where every point is encoded on 1 ASCII char
- MiniPixelArt - a 8-color pixel-art editor and exporter (pure JS, no PNG)
- Twemoji-webfont - helps you live-load an Emoji webfont for any browser, after asking the user if he/she's okay
- SVGenerator - a dynamic SVG generator with custom colors
- CSS3D - The shortest way to write CSS3D cubes, pyramids and sprites (source code)
- Canvas-Txt - The better way to print multiline text on HTML5 canvas with auto line breaks and alignments (source code)
- SpriteStack - SpriteStack is a voxel editor suited for 2D artists featuring hand crafted retro renderer with animation support. It exports spritesheets, slices and vox models.
- tinyfont.js - Tiniest possible pixel font for your JS games (<700b zipped)!
- emoji - a webfont that can be loaded from your entry to fix/complete the emoji that can be seen by all your future players
Minification
- babeljs - JS (ES2015/2016/2017) minifier based on Babili, choose your flavor in the "presets" dropdown
- Packer - JavaScript compressor
- JavaScript Minifier - minify your JavaScript
- RegPack - self-contained packer for size-constrained JS code
- Closure Compiler - compile your code
- UglifyJS - JavaScript parser / mangler / compressor / beautifier library for NodeJS
- Extreme Javascript minification - compression experiments
- ADVZIP - zip file optimizer / recompressor (can reduce a 13kb zip to 9~11kb)
- miniMinifier - tiny (but super efficient) HTML and CSS minifiers
- Minify - a JavaScript and CSS minifier
- JSCompress - a compression tool for javascript
- ZPNG Minifier - in-browser jsExe
- int2binary2html - helps you to encode a long list of integers (0-255) in binary and embed it in your index.html
- Terser-online - a live version of the Terser ES6+ minifier, with extra compression options because every byte counts
- Efficient Compression Tool
WebXR resources
- A-Frame Documentation - introduciton to A-Frame
- A-Frame Slack invitation - ask questions here
- A-Frame Registry - useful components
- Awesome A-Frame - many more A-Frame resources & examples
- Gyro.js - harmonizes the gyroscope/accelerometer output across all mobile devices
- js13k A-Frame Webpack boilerplate - build with a single command, dev server, es2015 support, basic example
Other tools
- Video Game Name Generator - generate a name for your game
- stats.js - JavaScript performance monitor
- Live Editor - edit JavaScript code
- Minivents - small event system for JavaScript
- Maths and trigonometry cheat sheet for 2D games
- js13kserver - sandboxed JavaScript game server
- js13k-level-editor - 1kb 2D map editor that you can use for your game (or include in your game!)
- 3D-level-editor - CSS3D map editor with customizable 3D shapes and 2D sprites
- timestore - library to manage multiple timers inside separate contexts
- innerself - a React/Redux-like view and state management for your game's UI, in less than 400 bytes
Tutorials
- How to minify your HTML5 game for the js13kGames competition
- js13kGames tutorial - How to make a text game with HTML5
- Getting started with HTML5 game development
- Tiny platformer
- A first-person engine in 265 lines
- HTML5 game development Gulp workflow
- Trigonometry cheat sheet
- js13kGames tutorial video series by Zenva Academy - create a Frogger game in 13kb or less
- How to support arrow keys, WASD and ZQSD keyboard inputs in just 160b of JS
- How to make games with CSS3D
- A-Frame School
- Making Asteroids with Kontra.js and Web Maker - handy tutorial from Steven Lambert, the author of Kontra.js
- Procedurally Generated Dungeon Tutorial
- Creating simple music using the Web Audio API
- WebGL guide
- How to master screen orientation with HTML5 - 6 technics to detect, react and control screen orientation on mobile devices
Videos and audio
- Jupi Plays Indie Games 2014 - YouTube playlist with Jupiter Hadley playing all the games from the 2014 edition
- Let's play vids for js13k 2015 - YouTube playlist for 2015 entries by Keith Karnage
- Jupi Plays Indie Games 2015 - YouTube playlist for 2015 entries by Jupiter Hadley
- Jupi Plays Indie Games 2016 - YouTube playlist for 2016 entries by Jupiter Hadley
- JS13K 2017 games compilation - YouTube video by Agar3s
- Jupi Plays Indie Games 2017 - YouTube playlist for 2017 entries by Jupiter Hadley
- The Game Developers Radio: Game Design Daily 068 - game dev article round up part 02 on SoundCloud
- How to squeeze a HTML5 game in 13 kB? - Andrzej Mazur's introductory speech. Subtitles by B0dz1o
- Edge Guard podcast #111 about js13kGames 2019
- Jupi Plays Indie Games 2019 - YouTube playlist for 2019 entries by Jupiter Hadley
Blog posts and post mortems
- untitled13 by Gabor Heja
- 2015 post-mortems:
- Nomis by Nick Branstein
- Tiny Stealth by Eduardo Lopes
- Time Worm by James Wright
- It's a Lovely Day for a Drive by Jay Oster
- Raw | space by Bitowl
- GeoQuiz by Maxime Euzière
- Behind Asteroids — The Dark Side by Gaëtan Renaudeau
- Galactic Backfire by Rene Hangstrup Møller
- Road Blocks by Ash Kyd
- The Cursed Mirror by Marco Emiliozzi
- Poust by Chris Glover
- Bombs Away by Makeshift Mitten
- ParaTec Systems by Logan Franken
- Bokosan by Gabor Heja
- 7 Great JS13K 2015 Games by Paul Hack at Gamejolt Fireside
- Jam Favorites: JS13KGames Jam by Jupiter Hadley at Gamejolt Fireside
- js13kGames: Code golf for game devs - 2015 winners share their JavaScript tips and tricks at Mozilla Hacks
- Game Development, JavaScript and Codility - interview with FatFisz recruited by Codility after js13k 2015
- 2016 post-mortems:
- Super Chrono Portal Maker by Xem
- yoctoPets by Walsh9
- Shuttle Power Dash by Mary Bush
- Nexus Overload by Pixel Jerry
- PULSE by Marco Fernandes
- Blade Gunner by Jerome Lecomte
- Glitch Hunt by James Wright
- Glitch Torpedo by Plissken2013es
- Nomis 2 by Nick Branstein
- Buggy SnAkE by Zosia Korcz
- Phosphorus Dating by Bruno Croci
- Build a game in 13kB or less with js13kGames - a recap of some entries from previous years and GitHub's invitation to 2017
- A-Frame comes to js13kGames: build a game in WebVR - Mozilla Hacks introducing new A-Frame category in 2017
- Interview with Andrzej Mazur - Game Development Using JavaScript - Jscrambler blog post
- What is the js13kGames competition? - blog post by Davit Markarian
- Lesser-known developer contests you can join in 2018 by Mike Sedzielewski at FreeCodeCamp
- 2017 post-mortems:
- Lost In Labyrinth by Daniel Lawrence
- Scribble by Vishnu Bharathi
- Adrift by David Stark
- The Lost Packets by Andrew Higson-Smith
- LOSSST by Maxime EUZIERE (warning: big ass story: 10500 words + 80MB of images)
- Greeble by Ryan Malm
- Lost in Asterion by Santiago Zapata ⁄ Slashie
- Lost in Cyberspace by Zosia Korcz
- A Day in the Life by Mattia Fortunati
- Lost in Jungle by Zendrael
- AMAZ3D by Gaëtan Renaudeau
- Fly South by Christian Paul
- The Forest by Alex Porter
- Lost in the woods by Abdun Nihaal
- A Tourist In Paris by Jerome Lecomte
- Vernissage by Platane
- Lessons learned from the A-Frame category in the js13kGames competition - tips and tricks from the WebVR category
- Organizing a successful competition that doesn’t scale - a look back at a few issues that occured during js13kGames 2017
- Create a 13 kB JavaScript game in 30 days with js13kGames - GitHub's tips and tricks article by Lee Reilly
- 2018 post-mortems:
- 13Kars by Kesara
- Disconnected by Nick Shillingford
- Offline: O.E.C.T by Ben Fox
- Goblin Tower 13k by Mys
- JS13K Battlegrounds by Cody Ebberson
- Off The Lines by Kev Etchells
- You Are Offline by Kev Etchells
- Risky Nav by Sebastian Dorn
- ONOFF by Daniel Marino
- [Hoverla] by Viktor Uhryn
- SYSTEMS by nesrak1
- Bo the Dog by Asisa
- Bellwoods by Matt DesLauriers
- Underrun by Dominic Szablewski
- An Offline Life by André Jaenisch
- Earth That Was by Jaime Gonzalez Garcia
- When my vpn goes offline(...) by Lucas Bersier
- Planet Figadore has gone OFFLINE by picosonic (Jasper Renow-Clarke)
- Wired by Bojan Pejkovic
- Watashi no Shashin by Brian Hambley
- WiFiHunt by Shreyas Minocha
- Lasergrid by Timmy Kokke
- Exo by Jack Oatley
- Quest of Tod by Samir Hodzic
- The Core by Matthew McCord
- Whirled on the JS Game Jam Code by Andras Serfozo
- Twisty Polyhedra by Aditya Mishra
- Keep-Alive by Surbhi Mahajan
- Anti_Virus by Punit Gupta
- Sum It Up by Hemkaran Raghav
- Up & Down by Dinkar Pundir
- Robo Galactic Shooter by Ashish Bardhan
- Geoquiz2 / Envelope / Man on Wire by xem & friends
- KickIt! by archiewald
- ArcherFire: Duet of Aces by Santiago Zapata
- Ranger Down by Nik Coughlin
- SUBmersible WARship 2063 by Jerome Lecomte
- Planetfall by Ian Chiao
- 13 Games in ≤ 13kB of JavaScript - GitHub's highlights by Lee Reilly
- These amazing browser games are 13 kilobytes or less in size by Logan Booker at Kotaku.com.au
- Tiny JavaScript games from the JS13kGames competition by David Cassel at The New Stack
- Eighth annual js13kGames challenge by Lee Reilly on GitHub's blog
- js13kGames — a review by eBay Tech
- This Real Time Strategy Game Is Just 13 Kilobytes by Karl Bode at Vice Games
- Highlights from the js13kGames 2019 competition - top 10 winners showcased by Lee Reilly on GitHub's blog
- 2019 post-mortems:
- Making a Progressive WebXR game with 13Kb + three.js by Arturo Paracuellos
- Back To The Stars by Marco Fernandes
- BackFlipped: Back to the Basics by Tom Hermans (@Auroriax)
- Backstabber Hero (Part 1 - Sources of inspiration) by Niklas Berg (@nkholski)
- Back on Track (mania) by xem
- How to design a javascript game? (in 13KB or less) by Joao Lopes (@mrlopis)
- Retrohaunt by Donitz
- Back from Kooky Island by Alexander Curtis
- Creating a 13KB JS Game using SVG by Joao Lopes (@mrlopis)
- Get Back From Robot City by Kev Etchells
- BACKSPACE - Return to planet Figadore by picosonic (Jasper Renow-Clarke) (@femtosonic)
- Lights Back On by Alejandro Molina (@amolinasalazar)
- Quick Wins by Ryan Tyler (@Carelesslabs)
- Backside Ball - Entering JS13KGames 2019 as a Beginner by Vertfromage
- Backpack Monsters by @slashie_
- The Making of VOIDCAL by Dominic Szablewski
- Racer by James
- Random Learnings from Entering JS13K Games 2019 by @JohnKilmister
- JS13k 2019 Developer Commentary by Daniel Lawrence (@64Mega)
- Backshot Tactics - A Multiplayer Game for js13kGames by Antonio Salvati (@salvan13)
- A story of making a 13 kB game in 30 days. “The Wandering Wraith” post mortem. by Mateusz Tomczyk
- Back to life by Serpent7776
- Do Not Look Back! by Jerome Lecomte
- Bubba's Back Room by Eric Rowell
- Bounce Back Postmortem: A Boomerang Adventure by Frank Force
- Backcountry by Michał Budzyński and Staś Małolepszy
- 2020 post-mortems:
- Minipunk - Voxels and Bloom Shaders and boss fights, oh my by Cody Ebberson
- Coding Golf - Broken Links by picosonic (Jasper Renow-Clarke) @femtosonic
- JS13K 2020: Planet Not Found by Josep del Rio (@joseprio)
- You have found - js13k game build with Haxe - by @mknol
- Employee not Found - A journey of self-inflicted hardships - by @jayther
- Manipulating SVG for fun and profit- Game devlog and postmortem - by @benjymous
- Flow of Four - Intention Postmortem - by @SubZtep
- Ned Snow - How did I design a WebVR game - by Juankz
- 404 - Rhythm Not Found - by agar3s, mapedorr, QuietGecko and Slashie.
- Find the theme - game made with OCaml - by @Serpent7776
- Island Not Found - a post mortem - by Ben and Salvatore
- 404 BC Pinball post-mortem by Adrian Lissot (@adrianlissot)
- Building a Pseudo-3D Racing Game for the 2020 JS13k Game Jam by @mattmckenna
The first version of this list was originally created by John Kilmister.