NOTE: This is part of a "quick bites" series I'm trying out - for shorter, more frequent posts. Let me know if these are helpful! This is (intentionally) following the theme of the post: getting something out there rather than waiting for the perfect thing.

The hardest part of any project is getting started. Writer's block, coder's block, whatever you may call it - you've seen it. I recently hit this myself.

For the longest time I've wanted to make a non-trivial game, but I never could quite get started. Over the last few weeks, I finally got over the hump and made a tiny (but non-trivial!) roguelike game: it has graphics, multiple levels, weapons/items/monsters (configured via data files), multiple map types, and is a good 2-5 minute game. Not amazing by any means, but I think it met my goals.

After years of trying, I consider it a win to finally have something that exists: and now that it exists, it's so much easier to spend an hour here and there adding a minor feature and get the dopamine hit of "I spent some time working on a game".

Here's what I did to get over the hump:

  • Lowered my standards: I always wanted to make the perfect, big, grandoise game. I still do. But aiming for perfect meant I'd get stuck in analysis paralysis and never make progress. This time I set out to "just spend an hour every few days" and see where it got me.
  • Reused things where possible: I'd always have grand ideas for the gameplay but get stuck just starting. It's so overwhelming. This time I decided to just follow a tutorial (an excellent book). I still got to learn a lot since I implemented it in Bevy instead of the author's framework, but getting over the game design hump and having an idea of what features to implement made it easier. You're likely not doing novel work. Find any tutorial, just start!
  • Pushed through known blockers: I hate UI code. It's always my stumbling block. This time I said I will just get something working - even if it's not pretty (either to look at, or code wise) and go from there. I embraced the boilerplate (even using AI to generate some of it)
  • Celebrated wins: Instead of worrying about how much better things could be if I did them "right", I set myself small milestones each day (achievable in < 1hr) and decided to be happy with what I did, even if it was just e.g. "now the player moves if I hit a key"

AI: As an aside, I tried to use AI to help speed up the process, and ... had mixed results (unlike with $DAY_JOB where things are generally more positive). It helped a lot when I needed to generate boilerplate code (and I'd use it again for that). But I tried to use it to generate more complex code that had tons of edge cases (pathfinding algorithms, where I didn't have them due to not using the book's library) and ... I had two separate instances where the AI got code that looked right, and needed 3+ hours of debugging before I gave up and decided to write my own (this included things like it generating a < instead of a <=)

What are your thoughts? How do you get over the initial hump of activation energy needed to start something new?