JS13K: Play the Games JavaScript Developers Built with Only 13K

The annual “JS13K” competition completed its 12th year, and it is still going strong: 163 developers accepted its challenge, writing original games with HTML5 and JavaScript that would all fit into just 13KB of code.
But in a larger sense, the competition has become a grass-roots gathering of the wider JavaScript game developer community. In the official rules, contest organizer Andrzej Mazur stresses that he’s not getting paid. “It’s just my own idea and it’s made for pure fun.” Mazur is a game developer himself (and also the founder of indie studio Enclave Games and publisher of the Gamedev.js weekly newsletter).
And, as a 2018 blog post from GitHub explained, the competition is “a great excuse to learn or level up your JavaScript, learn or improve upon game development skills, and have fun sharing your ideas.”
If it makes you laugh, that’s a good sign!#js13k#gamedevelopment #gamedev #indiegame #indiegamedev #indiedev pic.twitter.com/EogH7yUplL
— Bryan Perfetto (@RegularKid) August 20, 2023
By tradition the contest always begins and ends on the 13th of the month, so this year the development window ended on September 13th, with the final winners revealed later in October. And sticking with the number 13, this year’s theme for all the games was the 13th century. In an announcement on Medium, Mazur described it as the “peak” of the Middle Ages, with everything from knight tournaments and the Magna Carta, the conquests of Genghis Khan and Marco Polo. “It can even be a time-traveling or artefact-digging game if you make it right,” Mazur wrote. “That’s all up to you!”
Although in the kickoff video Mazur humorously noted that the theme got an “interesting reception. Some folks were like — ‘What? Why?!'”
But besides gifting the world with 163 new medieval-themed JavaScript games, the contest gave its participants a chance to come together as a community of JavaScript game developers.
And it’s also a great way to have a little fun…
Congratulations to everyone who took part in this year’s #JS13K competition! Here are the 13 top-rated games—all free, playable in your browser, and with a footprint ≤ 13kB 🤯 https://t.co/I8fcPjAz2s pic.twitter.com/74unsGUjAd
— GitHub (@github) October 13, 2023
And the Winner Is…
This year’s winning game was the action-packed Path to Glory, set in 1254 A.D. in the fictional Kingdom of Syldavia. (A post on GitHub’s blog quotes the reaction of Jure Triglav, one of this year’s participants, who gushed that “I love the little graphical flourishes, like the swaying trees or the rain droplets on the lakes. A wonderful game!”)
Path to Glory was built by JavaScript developer Rémi Vansteelandt in Waterloo, Ontario, who describes the game as “a historically inaccurate beat ’em up where you fight waves of enemies until you reach the final boss.”
Interestingly, this year Vansteeland coded up the game with a little help from AI — at least for the game’s soundtrack. “[C]oming up with my own composition felt like an impossible task,” Vansteelandt writes in an essay on Medium. “Luckily, I was able to leverage ChatGPT to do the heavy lifting for me. It was relatively easy to get it to generate a few patterns, and then all I had to do was to recreate and rearrange them in Sonant-X Live” (a small, browser-based JavaScript music synthesizer).
But as I wrote about the overall competition back in 2018, “The best way to experience the resulting madness is to play some of the games yourself.” For example, Robin of Thirteensley tried to recreate the look of a vintage cartridge game from the late 1970s — as displayed on a CRT terminal. The Terror of Mongolia promises “a Rogue-like shooter set in the 13th century, recounting the tale of Genghis Khan…on a quest to rescue Börte, his first wife, kidnapped by the rival tribe leader Jamukha the Jadaran.” And developer Keith Clark’s second-place entry, “Merlin vs Alfonso,” even taught players how to play Ajedrez, a medieval precursor to chess.
HERE ARE THE (OVERALL) WINNERS OF #JS13K 2023! 🎉🎉🎉
1. Path to Glory by @remvst
2. Merlin vs. Alfonso by Grav
3. Casual Crusade by @anttihaavikko
4. Tiny Yurts by @burntcustard
5. Upyri by @rob_louiehttps://t.co/wOLjNpmJISCONGRATS ALL – SHARE IT WITH #GAMEDEVJS WORLD! pic.twitter.com/O3Va2qAe2U
— js13kGames (@js13kGames) October 5, 2023
Yet behind it all you get the sense that there’s a lot of fondness for the competition itself. First-place winner Vansteelandt has entered a game every year for the last 11 years, he writes on Medium, calling the competition “my yearly excuse to write unmaintainable and unscalable code, which is a nice change from my daytime job.
“I would highly recommend participating in this competition to anyone,” Vansteeland writes. “It has a lovely community, and it allows us, once a year, to get creative both technically and artistically.”
Totally legit 13th century battle maneuver#js13k pic.twitter.com/fyrRUSfZsv
— Rémi Vansteelandt (@remvst) August 17, 2023
The JS13K Community
The official announcement for the competition even included community-oriented suggestions like “If you can help others — do so” and “Share your progress… It’s better to build in the open!”
And in addition, “There’s a whole bunch of games out there that are open sourced…” Mazur said in an online interview earlier this year, “so you can see what crazy things folks did to achieve what they did.”
Throughout the competition, developers could gather to swap their triumphs and frustrations in dedicated chat channels on Slack and Discord. And when the competition finally ended, the winners in the “Mobile” and “Desktop” categories were ultimately selected by other participants in the competition. (A pre-selected panel chooses winners in the special WebXR category for VR and AR devices, and there are also web3 experts judging games in the “Decentralized” category). Participants logged into their GitHub accounts at dev.js13kgames.com for access to a specially configured page that enabled voting and sharing helpful comments on other players’ games…
And when it was all over, 26 developers shared their own “lessons learned” in development post-mortems — about one-sixth of all the participants.
Celebrating
This year saw another special commemoration: an 11-track digital album that samples background music from 10 of the games, compiling their tiny sound files into “the first-ever js13kGames Community Soundtrack.”
And there were lots of prizes, including JS13K t-shirts, pins, and patches — along with $1,300 in the stablecoin USDC (divided among the winners in the web3-themed “decentralized” category). This year’s winners even got medals (courtesy of promotional gift company GS-JJ).
Plus, new in 2023 is a JS13K shop, where participants can purchase their official JS13K t-shirts.
The competition also attracted some big support from the community of JavaScript game-makers and tool-builders. Other prizes given away this year included licenses for:
- The WebStorm JavaScript IDE (created by JetBrains)
- GDevelop, a no-code game-making app
- The WebGL game engine PlayCanvas
- Phaser Editor, the HTML5 IDE for 2D games,
- The animated sprite editor and pixel art tool Aseprite
- JetBrains’ JavaScript IDE
- The Steam game Jump Tracks (a game based on 2018’s js13k entry Off The Line).
Updating Technologies
In a kickoff video for the event, Mazur notes that the game Jump Tracks is actually the fourth or fifth game from the competition that went on to later be released on Steam. Maybe in its own way, the contest subtly reflects how our tech stack keeps changing…
- Past years have also included a category for “Web Monetization” — a category that was “paused” for 2023. (“Because the only web monetization API provider, Coil, has shut down,” Mazur explained in a video announcing the competition.)
- Also missing is the category for server games, hosted on Heroku. But after Heroku ended its free tier in 2022, there was much discussion but no clear alternative and the category was simply eliminated for 2023.
- This year’s “Decentralized” category was more loosely defined. Introduced in 2021, the category used to involve connecting to specific decentralized technologies from NEAR Protocol, Flux technologies, or Protocol Labs (like NFT.storage or Filecoin). But this year “you don’t even need to use any blockchain technologies to qualify,” the official rules explain. “The main point is to encourage you to play with the web3 tech…”
Since 2021, there’s also been a special category for unfinished games, making sure that developers can share whatever progress they’d made to their final goal. (While these entries aren’t judged, it still allows those developers to feel like they’re participating.) Overall Mazur always tries to emphasize the well-being of developers and warns everyone not to take things too seriously. “You have a full month, so eat and sleep properly” advises one of the slides in Mazur’s kickoff video.
And the last slide’s bullet point advises “Have fun.” Mazur explained to his audience that’s there “Because it’s not a job you have to do — it’s something you want to spend your free time on. So definitely come up with something crazy, something that you wouldn’t work on during your day job… I do hope you’ll have fun building games for this competition.”
There may be more grass roots fun in the future. For the last to years Mazur has also been organizing the Gamedev.js Jam, a competition to build an HTML5 game within 13 days in April.
Plus, GitHub’s blog post also reminds game developers of November’s “Game Off,” a month-long, game developing “jam.”
“And unlike JS13K, you can use as many kilobytes and whatever languages you like!”