LD 45 happened at the start of this month!

Why, what’s Ludum Dare, you ask? It’s a game jam that’s been happening three times a year – or more recently, two times as of this year – since all the way back in 2002. I believe I first heard of it when notch made a game called Minicraft for Ludum Dare 22, back in 2011.

This year, for the first time, I tried participating myself.

At the most basic level the jam is split into two categories:

  • for the Compo you have to create a game from scratch within 48 hours alone.
  • for the Jam you have 72 hours alone or as a team. And you’re allowed to use existing assets, if you opt-out of the voting for that type of assets (audio, graphics, …)

All the details can be found in the official rules.

During the week before the jam people can vote on a theme across multiple rounds of voting. It’s not mandatory to adhere to or use the theme in any way, but it is encouraged.

A big part of my motivation to be a part of this came from the community posts on ldjam.com. Before the jam started people were already posting about how they’re preparing for the jam; which engines, tools and software they’ll be using for the jam; and the ideas that popped into their heads for the theme options in the voting.1

Finally, at midnight CEST on Friday (NB: at the end of Oct. 4, 2019) this year’s theme was announced:

Start with nothing.


So there I was, at the stroke of midnight, starting with… well, not nothing actually. Prior to all this I had been getting into pygame. I had a half finished Asteroids clone written with some very basic game engine stuff. On that Friday night I had worked out a system that let me bind function calls to input events, and cleaned up some of the code.

I still had no game idea per se, but I knew I wanted to do something 2D platformer-ish. So I sat down and… wrote a sorta modular menu system?! Apparently I did. Because everyone knows you can’t have a game without a main menu and a pause menu, and a way to get from one to the other. Or roughly as such was my reasoning.

So I pushed my code to my git repo and called it a night at roughly 2:25 am.2

After clocking in a good night’s sleep, I set off to work on actual game features. When I went to bed I started thinking of game ideas, all kinda outside of the scope of a game jam…

My idea was, that our main character (who is probably a slightly anthropomorphic red panda in my universe, let’s be real) lives in a thoroughly and utterly boring world. There’s just nothing to see, nothing to do. (This might also have some undertones about depression and the like, because who doesn’t love depression… woo)

But then, inevitably things get mixed up, because of plot and excitement and what have you. Some god or mystical entity shall grant interesting stuff ™ – namely game mechanics and plot points stemming from that – in exchange for also letting negative elements into the world – adding difficulty, obstacles and enemies. And then presumably you go out to do some good, fix things, and get some meaning out of this zero-sum game. I’unno.

I drew inspiration from Night in the Woods, OneShot and FEZ for what popped into my mind. For some reason my little late night scribbled note also mentions Kingdom, but I can’t figure out anymore why it would be relevant here.

Oh and in my mind your sidekick is a black cat, because black cats effin’ rule.

So, what did I have by the end of this day after I had actually been meaning to go to a meetup group, but flaked at the last minute and stayed home? Well, it wasn’t much to show, at least not when I meant to have a video game.

  • I had overhauled my system for drawing animations out of sprite sheets
  • I had a helper script to let me build JSON files that hold the meta data of said sprite sheet animations
  • I had a two frame walk cycle of a bipedal little red panda (boo-ya! See below!) made right in my browser with Piskel. Nice tool.
Look at him go!

Look at him go!

(…it was only a week later, that I realized he’s always putting the same arm & leg forward. Could prooobably use a few more frames.)

At roughly 4 am, way into Sunday morning, I called it a… well, a morning, and hit the hay.3


On Sunday I started taking a closer look at the Tiled map editor and what I might do with that.

  • I had another helper script to assemble individual image files of a 2D platformer tileset (taken off opengameart.org) into a single efficiently packed image file, and save meta data about how things are assembled in JSON format again
  • rudimentary code to load and render a map built with Tiled

Did I have anything close to a game now? No. Was I having fun coding? Most definitely!


On Monday it was back to work for me, so I did not really have any time left to continue working on things.4

So while I did not have anything to submit, I still had a ton of fun and more importantly I had been motivated to work on pygame things again. And while I still have plans to work on the actual game parts of this project, it has inevitably been pushed aside in favor of other projects for now (like getting some life onto this website!) as I imagine happened to a lot of people who planned on polishing their games after LD45.

I also went and played quite a few fun entries! While people were posting all their status updates I took all the intriguing ones and “followed” their creators on ldjam, so that by the end of it I had a list of 40 people I wanted to check out! There was some nice stuff there, but that’ll have to wait for another post. Assuming that follows this one in a timely manner as I imagine it to, in a perfect world.

I’m actually just kicking m’self in the butt to get this one out, because the month is almost over and the time to play & rate games ends soon!

Time left at the time of writing: 1 day and 6 hours, and 4 hours later the results get announced!

Time left at the time of writing: 1 day and 6 hours, and 4 hours later the results get announced!

As someone who hasn’t entered with a submission of his own I can’t vote on games though. Bummer. Maybe next time!


PS: The code I was working on that weekend can be found at https://git.redflames.space/rf/pygame-ld45 and according to find . -iregex '.*\.py$' -exec metrics \{} \+ (using metrics on PyPI) it clocks in at:

Files Language SLOC Comment McCabe
19 Python 1731 209 362

  1. Here, my own first post before the jam (after signing up) can be found. [return]
  2. Here is my second relevant post. [return]
  3. Go here, if you want to see that little panda again. I was fairly proud of him! [return]
  4. And last but not least, another post I wrote over on ldjam.com when the end was nigh. [return]