I’ve had the first pass at Exon‘s inventory screen up and running for a while now, so it’s high time I refined it further. I was using a Slug Rifle the other day and realised that while I put this gun on sale, I didn’t actually put any ammunition for it on sale, and that led me to questions of how ammunition should be handled at all. Which in turn led me to item stacking.
Item stacking is a fun one because, on the face of it, it’s very easy: you just assign a number of “charges” to a particular item, count them up as you find copies of the same item, and count them down with each use.
Oh, my sweet summer child.
For those that didn’t grow up modding Warcraft III: a “buff” is some lasting effect that is applied to a unit, such as it being stunned or on fire. Needless to say, Exon has lasting effects too. It’s not all impact-and-forget; mechs need to get stunned and corroded and all sorts of other things I haven’t thought of yet.
How hard can it be? You just stick the thing in a list and count down the timer until you turn it off… right?
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.