I took a week off work to (surprise!) work on my game. Things did not go entirely to plan, as some time during some “routine” fiddling on Sunday or Monday it started crashing. Not crashing as in throwing exceptions from my own code, I mean crashing as in the entire Unity editor bombing out.
I unwound all the potential causes and dug around the internet for answers but basically came up with nothing. It’s something to do with turning colliders on and off and this getting PhysX into a tizzy underneath it all, but I’ve been turning colliders on and off for years (literally years) without a single complaint, let alone an engine-melting complaint.
I found a bug report to Unity which seems to cover it, but that fix won’t be released until June in the next major version. And what if this doesn’t fix my issue, and only affects one with a similar error message? Erk.
A. Level Generation: 8/8
B. Level Navigation: 2/2 + 1
C. Item Systems: 4/4
D. Ability Systems: 2/2
E. Power-Ups: 3/3
F. Neutral Passive: 0/3
G. Enemies: 5/5 + 1
H. Traps: 0/4
I. User Interface: 3/3 + 2
So I haven’t actually progressed any of my headline features as planned over the past wee while, instead bouncing between miscellaneous distractions and trying to hunt down this mother of all bugs.
I have still done plenty of fun stuff though!
- More items: with the advent of destructible crates, I had to add a system to limit how much stuff a crate can actually contain. I have added a rough volume limit and assigned rough volumes to all the item types, so a crate can contain, say, one health pack or two gold ingots or … Continuing the bastardisation of Unreal Tournament, I’ve added the Patch Kit which repairs 5 health and the Big Keg o’ Repair which nets you 100; both of these can repair you up to 199 health instead of the usual maximum of 100. To extend the theme into Quake II territory, I’ve also added the Armour Shard which gives 5 armour.
- More enemy colour schemes: I’ve always wanted to do colour schemes based on the old Lego Slizer models because they were pretty damn cool, and I’ve been meaning to recover all the team-colour camouflage textures I made for some of the earliest drafts of my Warcraft III models. I finally did, and now there are loads of ridiculous colour schemes on offer, from obvious brown and green to stylish dazzle camouflage to eye-melting danger stripes and lurid pink. Eventually different factions of opponents will stick to the same colour schemes, but for now everything is randomly applied to enemies and their equipment… and you.
- More enemies: I realised that once I added the Turtlebot (heavy melee fodder unit) and the Delta (heavy ranged unit), the proportion of melee opponents that dropped weapons went right down — and therefore your chance staying on the loot upgrade treadmill (it’s not that bad but it starts to hurt when the enemies outclass you by too much). So I built the (first half) of the “Felhound”, a turret with over-the-head arms that currently sits atop the spiderbot chassis but will eventually get its own. This does not use shields, but they are less important than swords because they have a far lower chance of disintegrating from overuse. Maybe I should implement punching for when you have no weapon as an ultimate failsafe? Hrm.
- Visual effects: possibly the tiniest thing, but I’ve upgraded my master shader to apply a lightning effect to every part of a bot when it gets stunned by EMP — I’ve still got the ball-lightning effect on top but I expect to phase this out sooner or later in favour of the lightning overlay. I always wanted a lightning overlay anyway, even in Project Y4, I just never had the technology… until now.
- Bot tweaks: I refined the bot code so they have a slight delay before calling for help, which should alleviate those situations where twenty bots pile up on you. If you stun an enemy it won’t be able to call for help, and if you kill it in one hit (with a sneaky mortar shell or a quick-witter charge) it won’t be alive long enough to call for help. There’s also a hard limit of how many allies a bot will summon, though that’s independent to each bot so I’m not sure how much difference it’ll make in the long run. Either way: stealth is your ally!
So yes! It’s not all bad. As for this crashtastic behaviour, I will do an upgrade on the side to the beta version of Unity to get a feel for whether or not it does do the job. If it does, excellent, I’ll sit on my hands until the proper release. If it doesn’t… Well, I guess I have to pare my entire project down to a “minimum crashing scene” and then fire it off to the wizards to examine.
Never a dull moment…