Well, that was fun. I did my first Ludum Dare and now I’m slowly playing through a bunch of entries and sometimes just voting on them in batches. But let’s go over my game, Combat Hell, and let’s see what I did right and wrong.
Combat Hell followed the theme of ‘Two Button Controls’ and it an immediate decision that that would be the best way of playing it. The actual idea of it being a topdown dogfight was made actually about a day before the jam started, when I was thinking of good potential themes that I’d like to do. Other ones included ‘One Massive Enemy’, ‘Generations’, ‘Death is not the end’, ‘Death is useful’, ‘Strength in numbers’, and ‘Isolation’; most of these would work with my current concept, but some would have worked better than others. Actually, I think stuff like ‘Death is Useful’ might have made for a better game in the end.
The game idea was simple: You’re a hired mercenary by a dick, and your job is to fly around and kill enemies. That’s it, and I took the idea of gameplay from Combat’s jet sections, where you and another player would duke it out across the solid sky; now I wish I took its controls too.
The game was released initially as a Windows standalone game, and it was later ported to Newgrounds. The game has 26 votes, the standalone version has 35 downloads, and Newgrounds has 294 plays (although most of them are likely from Newgrounds). A bit lower than I expected, but at the same time, people have already noticed my little game, so I’m pleased.
[WHAT WENT RIGHT]
Even though my execution was, uh, slightly shite, the idea of using the mouse as a directional pad and as a means of attack led to a risk-reward situation, where you could either be running away or fighting. On top of that, I had some basic different ways of attacking, although the balance absolutely broke in your favour as soon as you got even a single extra shot, especially with weapons such as the RNG shot (the ? ‘powerup’ that made you spread bullets everywhere). Honestly, I think that added to the life of the game, and I gave similar powerups to the enemies as well. Overall, that was a good choice.
Also, I’m pleasantly surprised as to how well the shop came along considering I coded its entire functionality in about 3 hours at the literal end of the jam, while also balancing the game to be a bit less random (didn’t help much though), and I had tons of issues getting the buttons and text working. If I were ever to go back to this, I’d have a 48×48 spritesheet (each of the 9 corners and middle fill), and stretch that to be the text box. That’s have worked better than the quick textbox I drew, as well as having another font instead of HaxeFlixel’s default.
Armour restores. Armour is taken away constantly and while it slowly recharges, there’s a powerup that gives you 60% of your armour back; that was such a last minute addition, I literally changed the code to throw out a -1 in the powerups, since any other value would mean you’d have to take the time and fix it, while I had about 20 minutes left.
The postrelease Flash port worked amazingly, I’m actually surprised that it ran almost as well as the standalone version, although the lack of fullscreen led to players clicking outside of the box. I wanted it to be HTML5, but I couldn’t figure out how to get rid of the right-click menu, so Flash it was.
[WHAT WENT WRONG]
This should totally have been a topdown plane Borderlands. Forget the powerup system (well except for the purple ones, those are nice), enemies should have dropped weapons with some random stat modifiers and you should have been able to select which weapon to use when flying out; if you don’t like a certain weapon, you could have scrapped it and forged either a reroll to your current one (so you could have some better modifiers, or even just changing the numerical values), or you could have made a brand new one. Persistent XP would have helped with this. If I ever get the chance to expand it, I could have a weapon slot, a hull slot, and an armour slot (since you need all three), and make the game be faster pace as a result.
The code became a mess over the last hour, trying to get it to work okay. Here’s a useful hint, don’t read it. It’s a mess, especially since the indentations broke and in the end, I’m not sure what I was coding. I mean, it worked, but still.
The movement controls, while neat, are horrible when trying to get to a corner or even going in a straight line, as the way I coded it in made the plane just fly around like it’s Pluto. Boo.
Music is just grating, I just transcoded it in an hour to a tracker file and then threw the resulting ogg into the game. At least I added in a mute button. Everything’s wrong with it, sometimes I think it shouldn’t have even been in the game. I wanted to have a military-like drumming with a strong lead, but… yeah.
I also ran this on a Llano AMD laptop processor with a clock speed of a whole… 1.4GHz. I had slowdown; now I’m not sure whether it was my code that was unoptimized or my computer was struggling to run HaxeFlixel, but it ran bad when it had over 100 entities on screen, counting the bullets. Probably my enemy plane code was unnecessarily complex, I never profiled it. Hilariously enough, I couldn’t do any work for the first few hours since both of my copies of Photoshop died, so I had to quickly get a copy of CS2 running, and FlashDevelop wouldn’t do autofill at all, so I reinstalled it and HaxeFlixel and Haxe and OpenFL so many times… it was a mess.
The shopkeep is too much of a dick because you need $1000 to unlock the sadist mode (please don’t play it), but that’s my fault. I could have fixed it really easily, but I was limited on time and energy at this point.
Overall, it’s a solid little game that could have used way more polish and a few extra days to clean up the whole thing. This took me 28 hours to code, counting the time I tried even getting anything on screen because my IDE wasn’t as fully tested as I’d’ve liked, and it was a great learning experience.
This was coded at Winnipeg’s Ludum Dare game jam, where I saw a bunch of awesome folk. Huge thanks to Dylan, Graeme and everyone at Owlchemy, ACI, and New Media Manitoba for hosting this event, this jam was awesome.