Advent of Games
Advent of Games
Every December, I tell myself that this is the year I’ll finally finish the Advent of Code coding challenge. I jump in with manic enthusiasm, crush a few of the easier early puzzles, and then inevitably fall off around the middle of the month as holiday festivities ramp up. It’s even harder these days now that we have a kid. There’s only so much I can get done between 5:30 and 7:00 AM before she wakes up, and sometimes I just want to sleep in, damnit.
I’ve picked up the habit of browsing Hacker News in the mornings because there’s usually an interesting article or three to read instead of doomscrolling Instagram. A few days ago, I came across a different flavor of advent calendar challenge for sysadmins: Advent of Sysadmin. That got me thinking — what if there were a similar challenge for creating video games?
The advent calendar format is perfect for this. A lot of people feel intimidated by game development, especially when working solo, but breaking it into small, daily chunks makes the whole process feel approachable. You get a guided path from a blank project to a finished, playable game.
It’s also a great blend of skills: the technical fun of scripting game logic, the artistic expression of creating assets, and even a bit of administrative muscle from publishing and sharing your work. The time constraint helps keep scope creep in check, and if you revisit the challenge every year, you’ll end up with a clear record of your growth as a game developer.
If you try this challenge and learn something, I’d love to hear about it. December is chaotic, but creativity deserves its own little festive ritual. Let’s do it!
The Calendar
- Download your choice of game engine and set up a new project.
- Create a player.
- Make the player move.
- Create a map for the player to move around in.
- Create an objective for the player to reach.
- Add obstacles to the map to make it more difficult for the player to reach the objective.
- Create some enemies and put them in the map.
- Allow the player to attack enemies to remove them from the map.
- Add a non-physical obstacle to progressing to the next level (retrieve a key, defeat all enemies, etc.).
- Allow the enemies to attack the player.
- Add physical obstacles that can harm the player (spikes, chasms, etc.).
- Add a main menu that displays when the player starts the game. Allow the player to start the game or quit.
- Add a lose condition that triggers when the player gets hurt. Allow the player to restart or exit to the main menu.
- Create another map (or three! or ten!) and allow the player to progress from one map to the next when reaching the objective.
- Let the player win the game when they reach the final objective. Allow them to restart or exit to the main menu.
- Add a pause menu that allows the player to abandon the run and return to the main menu.
- Add background music.
- Add sound effects.
- Add a score mechanism—maybe a timer, number of enemies defeated, or something else. Display the player’s current score while they’re playing.
- Save a high score list and allow the player to access it from the main menu.
- Dealer’s choice: add your favorite platformer feature.
- Dealer’s choice: add your favorite platformer feature.
- Dealer’s choice: add your favorite platformer feature.
- Test and polish your game. You’ve done it—now make it great!
- Publish your game!
Resources
Game Engines
These are just a few popular engine or engines I’ve personally used, but feel free to use whatever you like! The challenge is written with a 2D game in mind, but it can easily be adapted to 3D if that’s more your style.
Assets
Creating your own assets:
Free or pay-what-you-want assets: