Wedding and find-a-new-jobbing out of the way, I finally got down my to-do list far enough to polish this “kata” off.
BOOMGUY is a janky clone of that famous and much-adored bomb-based game. I spent 43 hours on this one, and that blows my mind. (Pun fully and unapologetically intended.) It also stretched between April 16th and today, May 4th. I had hoped it would be faster than my previous “daily” kata, which took around 8 hours. Gj self.
Or look at the code and stuff!
Instructions: SPACE to place a bomb. Arrow keys to move away from it and not die.
Credits: Graphics, sound, and music from OpenGameArt.org. Check the .md files accompanying the media on github for full credits!
Dev time: 43 hours, over 18 days.
So what happened? Simple: learning!
The first thing I learned here is that I don’t think “kata” is the right space for what I want to do here. Really, it’s something closer to a quick personal game-jam. Deliberate practice, to the best of my understanding, requires two things:
- Novel tasks
- Analysis thereof
Kata are useful in many ways, but I think that the sort of “neural grooming” (to produce “muscle memory”) that works for martial arts is maybe not the best goal in development, especially game development. It seems far more effective to address a breadth of tasks and examine them than it is to re-implement them repeatedly.
I still think there’s use for that re-implementation, and it is certainly a factor in what I plan to do going forward. But is there much to be gained from implementing a Flappy Bird-style game 3 times? 5? 10? If you use the same feature set, I don’t know. I have my doubts.
So that’s what happened here: I realized that what I wanted was just to make tiny, quick games that stretched my experiences a bit. So BOOMGUY was a “victim” of intentional feature and scope creep.
The biggest part was implementing the AI, which is admittedly still quite mediocre. There’s some kind of big bug in that the bots tend to kill themselves quickly. I implemented A* since, to my surprise, I couldn’t recall ever having actually done so. There is no particular behavior prioritization, and the A* is really just used for pathfinding. Rather than use it in decision-making, I use Manhattan distance as a rough heuristic. It works out OK.
BOOMGUYs simply shift between 4 modes roughly at random: Attempt to “mine” (by blowing up bricks), chase players (just to mess with them, mostly), collect upgrades, and hunt players.
I also spent awhile getting used to Phaser’s Tilemap/TilemapLayer functionality… It never ceases to surprise me that each game engine has slightly different takes on how to build something. Oh well. 🙂
I’m not happy with the time this took, all told. I do like the idea of one-day games, and intend to limit scope more significantly for my next couple of games.