I don't do a lot of prep before a game jam. Obviously it's important to know your tools. You shouldn't be using something completely brand new. But it's also not a bad idea to use a jam to push your boundaries slightly, as long as you don't push them so far that you can't finish the game. It also helps to have your go-to websites handy, so you aren't hunting for them in the middle of the jam.
Most of what I do is decide how to spend the time. Every jam is a different length, so I don't plan by days. I plan in slices.
- Ideas and cuts, 10%
- Build the game, 60%
- Content, 20%
- Polish and gaps, 10%
The first 10%: ideas, and cuts
I give about 10% of the jam to ideation. It can be less if the game is simple, but I tend to take a bit longer. You don't need the entire game figured out up front, but the more you understand about it, the better.
Focus on a single mechanic. That's the one rule I keep coming back to. The Universe Is Collapsing was about fuel management. Ten Thousand Floors was about entering codes and having something happen when they were correct. (Loading in new rooms was actually a revision I came up with a few days in.) I made a Ludum Dare game about delivering items on a unicycle in a circular world, and Enzyme Frenzy was about matching up colors. One mechanic works best because you can focus on it and make it good.

This is also where most of the cuts happen. Typically, cuts get made before you even start, which is why the idea stage can take up to 10%. Cull any idea you don't know how to make. It's a lot easier to cut something at this stage than after you've built a bunch of things that don't fit together.
Always have a game
The game should almost always be functional. This is a lot like agile development: always have a shippable project. That said, there are a few things I think a game needs to feel "finished":
- A main menu
- A gameplay loop
- A lose condition (some games don't have one)
- A win condition (most games have one, but some go on until you lose, like Tetris)
You need at least a win or a lose condition. That's why I'd stay away from open-ended games like city builders, or anything that's really a tool. Those are really bad ideas to tackle in a jam. Your game should be finite.
By the 60–75% mark, you should be able to say the game is completable: you can play it start to finish and it kicks you back out to the main menu. Everything after that makes the game better, but it doesn't decide whether you have one.


Where I got it wrong
With The Universe Is Collapsing, I didn't have a clear goal for what the game was. I didn't know which direction to take it, and I got a bit paralyzed choosing between them. It would have been better to throw something against the wall and see if it stuck.

I also rolled my own menus. That isn't necessarily a bad thing, but for Ten Thousand Floors I used Maaack's Godot Menus Template instead. I probably should have messed around with it before the jam, because I spent half a day or so figuring out how it all worked. That's the "know your tools" rule again. A template saves time, but only once you know it.
The last day: polish and content
The last day or so is for polish and filling in the gaps. That might be when you add a few more levels, because by then you've got all the tools to build them.
Do not add new mechanics unless you really know what you're doing. It's super risky at this point, because you can break the game. In the last few days of Ten Thousand Floors, I mostly added content.
You should also be polishing as you go. Don't focus entirely on it, but there are some things you just won't get back to.
Don't skimp on audio
Audio is a huge win for a game. Ten Thousand Floors has all kinds of sound effects: footsteps, the door chime, grinding metal, different ambient music depending on where you are, frogs croaking, power outage sounds, little creaks. It all layers together and makes the world feel more cohesive. It's also some of the cheapest polish you can add.
If it's your first jam
Start small. Like really, really small.
And never compare yourself to others. That's nearly impossible, but at least try. Your goal should always be to improve on your last game. If you keep making small improvements, eventually you'll be good enough to compete.