I figure if I write a post-mortem I can put this whole thing behind me, so here we go.
What went right:
- I submitted something! This is rare. Sometimes I crash out on the pretext that I have better things to do with my weekend that stay up all night being incredibly frustrated because my brain is too sleep deprived to function but for some reason I’ve decided that coding in that state is a good idea. This is rarely true, but it makes sense. Sometimes I make half a thing that’s unplayable and don’t submit. I think this is the third time I’ve actually submitted something.
- Everything on the to-do list is basically there. This doesn’t mean too much because I write the to-do list as I go, but it’s something. There are 25 steps on my to-do list and of that 23 have a satisfying strikethrough over them.
- The idea is fairly novel. To start with, I saw ‘growing’ and thought back to some book I read many years ago about procedural generation of trees using l-systems and how I thought that was really cool. So I started coding a tree with l-systems and then had to think up a game to go with it. It’s kinda meant to be a strategy game where you’re attracting butterflies and birds to you, and doing so has effects and can be used to block your enemy’s growth or help your own.
- The technology. I used luxe, a rather new Haxe game engine. I spent the week before LD making a practice game with it, which was rather frustrating because the documentation and knowledge-base for luxe really isn’t there in an easily-digestible form. It’s much better than the entity-component model engine I built for myself over OpenFL though, and once you’ve got it worked out it’s really smooth to code with.
- The art. No, it’s not good, but it was quick to make. My LD games rarely have animations because animating pixel art is too damn hard. With vector art you just pull the little dots around and voila.
What went wrong:
- It’s not very good. I’m too close to judge it fairly, but my gut feeling is that it’s not very good. I mean, I know it isn’t good because the AI is laughably shit, but even if it wasn’t I don’t think the game would actually be fun. Though, if I were doing it again I’d probably make it hotseat multiplayer. I considered it at the time but didn’t want people without someone to play with be unable to play it. In retrospect, that’s silly, because now there’s no reason for anyone to play it given how hopeless the AI is.
- No polish. No time. Worked until the last minute, had to just throw it up as it was.
- Inefficient development. Coding on no sleep is so horribly inefficient and not-fun. It’s not even fun in retrospect anymore. I’m not sure if it would be more productive to just go to bed and miss out on a couple of hours of development time rather than stare at an obviously broken method for an hour with no idea how to fix it, but I might try that next time.
- Concept has too many parts. I knew this would be a problem but I couldn’t think of another idea to shoe-horn into my l-system tree that I’d already made, so I disregarded my earlier very stern note-to-self that anything I make for this should only have one main Thing happening which the game revolves around. Here we ended up with trees and flowers and fruits and butterflies and birds, which probably doesn’t look like a whole lot on-screen but they’re all doing their own little thing and it adds up.
- The technology. Mostly because I was tired and didn’t really know it well, but the event system really tied me up during the early hours of Monday morning. I lost track of who was sending what events and who was picking them up, and it all got mixed up and the code spaghettified. For the most part, just directly calling the components needed would have been better, or perhaps drawing a diagram as to what is communicating with what, but such practical matters didn’t occur to me at the time. This is basically my fault for not knowing what I’m doing.
- More importantly than the above – there is no debugger. This is the biggest downside of luxe – none of the output targets have a debugger that works with the original haxe code, because luxe doesn’t compile to Flash. I hear there’s a c++ target debugger in the works, which is good. Coding without one brought be back to the bad old days of university before I learnt how to use a debugger and had to solve all problems by tracing random nonsense at different points to see if it ran.
So yeah, that’s it. Lessons learnt. Probably to be disregarded next time, but I’m feeling pretty pumped for continued gamedev (not on this, though. I don’t think there’s much potential).
Not sure if I’ll get to play/rate too many games this time around – being stuck on an 8gb data cap really stops you from being able to use the internet like a normal person, and all them bloated Unity games are a real drag on things…