Since long before I started work on Exon, I was gripped by one action-RPG ideal: that if your sword intersected an enemy, then it should damage them. I suspect this arose from the likes of Morrowind‘s secretly dice-roll-based combat, where visually hitting somebody was no guarantee of actually hitting them.
Exon is broadly a game of melee attacks, so obviously when I started building the game I immediately implemented a system that does exactly that: using physics colliders, sword blades deliver damage as soon as they intersect a viable target.
Objective achieved, job done. So why does this system cause me so much concern?
When I was looking for pointers on how to do saving and loading, I was frustrated at the lack of depth in the tutorials that I found. I couldn’t find anything that went beyond explaining PlayerPrefs and serialisation. I mean, yes, duh, I have to read and write the data — but how should I structure it? How should I find it? What’s the best way to put it together again? What did you see?!
Thus, having recently finished a fully armed and operational saving and loading system in my own game, Exon, here is a complete run-down of how it works and why. Although I would expect saving and loading to be personal to the architecture of a particular game, I feel like I’ve ended up with a very flexible and generic system, so hopefully this dump will give future people a decent idea of how to approach this most important of features. Plus some reassurance — it’s actually not that scary!
It’s the most productive time of the year! That means it’s time to tackle those big problems that put the fear into you at in any other season. But with a couple weeks of holiday? Oh yes.
Over the weeks leading up to crimbo, I was dancing around, adding little new features and refining systems. I put decorations into the bunkers, added vending machines and guard posts, deleted the crap code that was failing to do these things before — the level generator is, dare I say it, looking pretty damn good.
The next step, then, is to take this mishmash of content and make it… into a campaign.
Yep, that’s four years since I started work on this game — it still has no name (that’s a lie, it almost has a name), but it is still blisteringly consistent with the original vision. So assuming that my constant ramblings haven’t been too coherent over the years, here’s a video so you can acquaint yourself with what it’s actually like. Also includes audio commentary if you just want to hear my dulcet tones for a bit!
Like, comment and subscribe?
Oh yes, it’s the most productive time of the year!
Well, maybe last year I got ahead of myself. The 36-feature plan I gave myself three weeks of holiday to complete in the end took more than six months (bar one remaining feature, the Towers of Hanoi puzzle, for which I have some lovely ideas). Plans, it seems, are not really my strength.
What, then, shall this festive period hold for my still-unnamed magnum opus?
Oh, that thing where you just get out of the way of writing regularly, and then it gets harder to go back to it the longer the hiatus lasts.
I might have decided to replay Dragon Age: Origins and its expansion pack and then moved on to Divinity: Original Sin: Enhanced Edition, which amounted to… well, rather a lot of time not spent working on my own game, I’ll tell you that. I didn’t have much of note to say about either, so I just didn’t say anything.
Now, though, after that holiday, it’s finally time to tackle a problem that’s been lurking at the heart of my engine for a long time now: its use of animations.
This might be the sixth time I’ve reworked my level generator. It’s incredibly complex and every time I think I’ve got it right… Well, after each rework, everything goes smoothly until I start to layer on another system — then suddenly the architecture can’t hold anymore and it’s causing more pain than gain.
Other times, yes, I’ve just been too clever for my own good and tripped over my own shoelaces. Is this one of those times? Erm, possibly…
The player Neutral Passive in Warcraft III is a special bonus player. As the name suggests, units owned by Neutral Passive are neither allies nor enemies to any other player; they offer their services equally to whomever happens to be nearby. As befits my tendancy to reimplement Warcraft III (to eventually allow for similarly structured RPG scenarios), I am now working on adding my own Neutral Passive characters.
Needless to say, due to many holes I’ve dug myself over the last three years of developing this game, this is not so easy. The key stumper at the moment is that clicking a neutral unit should not trigger the player to attack them. Instead, it should trigger a friendly reaction. When is an attack not an attack? When it’s a frob.