I wrote recently of how I intend to tackle scenario-level logic in Exon; not systems like equipment handling or projectile weapon firing, but random bits of hyper-specific “bloke talks to you when you enter his house” or “quest updates when you acquire item” type stuff. This system works but has a few quirks that I’m not entirely comfortable with, so I’ve taken my life in my hands and started to look at a Unity feature that is quite fresh but seems to alleviate those concerns…Continue reading “Blog 805: Polymorphic Serialisation”
Gosh, it’s been a while, hasn’t it? The good news is that, after changing jobs, I’m down to 4 days a week again. That means Exon is back on the menu for Fridays.
That means I need to pick up… wherever I left off.
… Where did I leave off?
Ah yes: the Datavault.Continue reading “Blog 799: The Datavault”
So I have a level editor for Exon. It’s still a bit sketchy around the edges, but it does the job: I can place decorations and modify terrain and live happily ever after.
But in a singleplayer RPG, decorations and terrain are only half the battle. These things have no life but the life I build into them, and that means I need a level scripting system.
Can you see where this is going? Oh yes.
The wonderful world of Unity editor tools is one of the most complex and irritating worlds I’ve ever had the pleasure to explore. Alas, it is one that I have to explore because I want to make it very easy to build levels for Exon. I want it to be as easy as farting out Warcraft III maps was, back in the day. Once I’ve built the engine and all the relevant bits, I want to shut Visual Studio down and never write another line of code for the rest of my life.
To get even close to that ideal, I have to go through a whole WORLD of pain — and the realisation that maybe, just maybe, one bloke in his bedroom can’t hold a candle to one of the greatest engineering marvels of the videogame world. Whatever happens here, nobody will be building the next DotA inside Exon.
The natural counterpart to the inventory screen is the shop. It’s one thing to be able to pick up, equip and drop loot, but that is only half of the ecosystem. The other half is offloading that loot so you can
hoard your wealth and never spend it because the best items are actually always in the world buy better things.
This week, I have been building shops… and quests, so you’ll have some money to spend in them (without me having to litter the train station with gold ingots).
Much as I decry the trend in games of giving the player objective markers and leading them around by the nose, they can’t be expected to remember everything — especially in a complex RPG with many moving parts. Since I am intending to build a complex RPG with many moving parts, I need a place to store information about your current objectives.
Enter the Journal.
The inventory won’t be particularly useful in the Arena, so I don’t really know why I’m doing it now. It may not an essential feature for the initial demo version of Exon, but it is an important feature for the long run — after all, you’ll find lots of equipment in your travels, not all of which you’ll want to use immediately.
So here I am, doing the inventory screen anyway because my mind did that thing where it started to fixate on the feature for no particular reason, and who am I to deny my subconscious whims?
All of life is about compromise. I started off making my mechs use the CharacterController, but shied away from it as that meant I had to reimplement lots of physics. I replaced it with a Rigidbody-based system, but that started randomly bouncing off the floor and jumping was dangerously unpredictable. In movement system rewrite number three, I seem to have ended up with… a mix of both.
It took me far too long to understand why this third approach works, but I think I’ve got it now. Since movement controllers seem to be a perennial topic in the commUnity, it’s time for me to add some words to the mix!