As Sunday drew to a close I had completed 18 of my 34 festive features. Which is simultaneously encouraging and demoralising; I knew 34 was a stretch, but I managed to batter through just over half of them anyway. Well, maybe I smudged a few, but I compensated by overstepping the bounds on others.
Needless to say, the end of the festive break does not mean the end of the line. There is still work to be done!
Post-Holiday Progress Report
A. Level Generation
I’ve moved away from level generation right now so it’s still sitting at 5 of 8 features. I had a stab at A6, the addition of different room shapes, but it turns out my circle-drawing code is a mess — the circles spread outside their intended bounds and do other horrible things that break the layouts.
Needless to say, I haven’t touched decorations yet and that’s making my levels awfully bare and boring so I’m sure I’ll tip over that edge soon enough.
B. Level Navigation
I had delved down a rabbit-hole with the occlusion system so I’ve dialled that right back and called it quits. The current system is not perfect but it’s not too crap either; I’m just aware that it’s a massive timesink with nothing particularly exciting coming out the end of it. So that’s 1 of 2 features done here, by some definition of done…
C. Item Systems
I added even more sword models, and finally dropped in a couple of shields. There are now 22 melee weapons available, and they include fast short swords that do less damage as well has hulking great pick-axes that are slow but powerful. The bulk of the swords are normal ones, though, just shiny variations to add visual excitement.
I’ve also fixed the degradation rate of swords — they now degrade a static amount per hit rather than degrading based on the damage they deal. Degrading based on damage dealt would make condition effectively static — higher quality items have higher condition but also deal more damage, so there would be no tangible improvement when getting a better weapon, or it’d be a tedious race to keep stronger weapons from falling apart in your hands. Ultimately weapons should degrade based on the substance they hit, such as stone armour doing more damage than metal, but I don’t have that kind of distinction just yet.
4 of 4 features are definitely done here.
D. Ability Systems
After firing in the stunning system last time I haven’t touched the ability system. It’s still 2 of 2 features completed, though I’m becoming increasingly aware that my current level is set “underground” and that maybe the mortar gun needs to be swapped out for something less likely to explode directly above you…
In related news, I have been playing with particle effects. I’ve just discovered how to do bouncy particles that hit off a floor plane, which looks lovely for sparks — but more importantly, I’ve added melee attack impact effects so that there’s a bit of feedback to confirm you’ve scored a hit.
I still haven’t touched destructible crates. How can I not have added crates yet? The mind boggles. 2 of 3 features are done here.
F. Neutral Passive
Nope, 0 out of 3 features here means there are still no allies in my dungeons.
Finally, some real progress!
The pathfinding integration has been spruced up (feature G1), though not quite as much as I’d hoped. It looks like a feature I’ll need for the decoration system, being able to feed the A* Pathfinding Project a bitmap rather than letting it detect the level for itself, is a paid feature — so I might be forking over the wonga for this a little sooner than expected. I’m not actually fussed, it’s so far an absolutely brilliant library and it’s totally saved my bacon, so it’s high time to drop some more cash.
While adding the bot investigation system back in (G2), I ended up scope-creeping and doing a whole load of work on the bot “senses” too. This is the system that allows bots to understand what’s within their range of awareness; it’s a check for all units and items in range, which is then post-processed to narrow down what’s in the cone of vision and so on. The feature creep here comes in that the bots are now aware of nearby allies, so if they spot an enemy they’ll trigger those allies to come and help (if they are not otherwise engaged).
The other big improvement is that my enemy roster has expanded from 1 to 3 (G4), with the addition of the Spiderbot and a ranged Archer to go along with the melee Warrior enemy. The spiderbot is a fast melee attacker but it mostly dies in one hit, while the Archer shoots slowish molten metal slugs (i.e. fireballs). I’m keeping the enemies light and easy at the moment; things will get tough once the systems are more comfortable.
Adding new enemies required a big chunk of changes under the bonnet. I did the Spiderbot in particular not because I’m creatively bankrupt (though that is true), but because it’s a low and wide unit that melee attacks without a turret — whereas all the previous units have distinct turrets and are at least as tall as they are wide. It took a bit of wrangling but now the melee attack system can cope with controlling only a turret or cooperating with the main movement system.
More off-the-books wrangling came as I tried to make sense of how to organise units and unit types. There are several layers to a character in my world — there’s the core prefab that contains hard constants tied to the way I’ve animated the model, then there’s the unit type layer that contains variable statistics like maximum health, and then there’s the unit’s actual appearance. These three layers were previously tripping over each other but I think this is finally the right set of boundaries.
Oh dear. 0 out of 4.
I. User Interface
No further progress on the UI, still only 1 of 3 features done here.
Which puts me at 18 out of 34, leaving 16 features still to go. And that’s not counting any of the features that are starting to tickle the back of my neck as I test each new piece of the puzzle — the absence of combo-kill announcements, the need for a “wander” bot behaviour rather than just “patrol” and “stand there”, a character creation screen, and and and and… It’s easy to formalise things that your game “needs” off the top of your head, but they pale in comparison to all the little things that creep up on you as you actually play it.
But I will remain resolute and undaunted. It’s definitely a game and it’s definitely coming, slowly but inexorably, piece by piece. 2017 will be the year of the release of phase one, mark my words.