Whelp, that didn’t work.
I made an attempt to complete a 7-day roguelike challenge over at 7DRL. I didn’t expect to complete it in time, but I had hoped to get more done. The game is Dead Grinder.
Scavenge and travel during the day, barricade and fight undead during the night. Make your way to the heart of the city for some reason/maguffin/plot device to be determined at a later point. First time building a roguelike, and I’ll finish it, but maybe not by Sunday.
There were several reasons I didn’t get anywhere near done. Part of the process of trying to improve is to exposing myself to greater accountability. In other words, share with a load of strangers my ineptitude as an incentive to learn lessons.
- Late Start
- Did Not Leverage Work of Others
- Weak Design
- Weak Architecture
I started late. Partly that’s a failure to commit the time on my part, and partly it was real life interfering. I had some work, financial and medical issues to deal with, and I just didn’t cope with the extra stress that adds.
I found myself going back and forth re-architecting a roguelike engine around HaxePunk, so by the end of the week I had very little of a game in there. There are RL engines available, and I could have used them, which is definitely something you want to consider when you’re working under a severe time constraint like 7DRL. I chose not to. I’m okay with my reasons for this – mostly it was my desire to maintain a commitment to Haxe. It’s a good language, and I love like the rich variety of target platforms you get with NME (targeting mobile, desktop, or browser) using the (mostly) same codebase. I’m also trying to realize the benefits of maintaining a commitment to HaxePunk, built on top of Haxe/NME, but the implementation has been shifting so much lately that I consider the current build still broken. I wasted time trying to work in the latest 2.x build before rolling back to 1.72a which is the most stable build out there. I KNEW I shouldn’t have wasted time doing this under a time constraint, and I should have stuck with the older API; this is somewhat an element of self-sabotage, which I’ll cover in a bit.
I’ve been developing apps for other people for many years, and one of the problems I have writing apps for myself is failing to maintain a clear delineation between the hats I have to wear, namely the Designer Hat and the Developer Hat. Because of this, I was not only guilty of feature creep, which is bad, but “developing for maybes.” That’s when you skimp on the design because you want to get right to coding and hope that “if you have time” later you can fit in these broader, vague ideas. It’s akin to not designing at all, or coding by instinct. You’re not really sure what you need to implement, because you haven’t committed to it, so you wind up trying to add support for ideas that probably aren’t going to make it in and you haven’t thought through how it’s supposed to work. If a paying client tried to get me to start coding without a clear set of requirements I’d raise hell, that’s what they pay me for. Why would I not demand that of myself? Worse yet, I also skimped on wearing the Architect hat, pressuring myself to jump into coding and winding up making numerous knee-jerk architecture changes along the way. C’mon man, be professional.
Knowing it was not going well, that there was precious little time left and that I had made mistakes from the offset, I wasted more time on self-sabotage. That’s when I procrastinate. Sometimes it’s your explicit, run-of-the-mill procrastination; reading your social media, or taking another “coffee break” that winds up eating an hour. But more often it’s under an insidious disguise. Trying to get HaxePunk 2.1 to work, as I mentioned earlier for example, appears on the surface to be a useful endeavor, but it is a terrible time sink I’ve encountered before. Once I realized it wasn’t a slam dunk, I should have stopped, putting it off until a point where I’m not under a time crunch. Or even better not start subconscious-distractions-as-procrastination at all. I think time-boxing might be a helpful technique to raise my awareness of self-sabotage and the challenges I’m having/avoiding. It’s easy to let your frustration guide you, rather than your intellect.
I’m going to continue working on Dead Grinder until it’s playable, at least. I’d like to use it for my March 1GAM. To that end, I decided to finally READ my copy of Game Engine Architecture. At least the bits that are relevant to a non-AAA 2D game. I’m generally resistant to learning other people’s best practices, preferring to invent my own path, like an idiot. I’m clearly not an academic, teaching myself to code 30 years ago when I became a teen. That’s one of my personal issues I’m trying to address: leverage the work of others. Drop my arrogance and acknowledge that despite all my experience, my knowledge of practical, real-world game development is fairly limited, and it’s never too late to open your mind.