I’ve been putting off adding audio to Exon for, at this point, years. I didn’t want to tackle it until all my other systems were pretty solid — I didn’t want to shove in a load of work to manage audio sources and play effects if there was a risk that I’d be re-engineering half of it after the fact.
Well, things have now been stable enough for long enough and… Well, I got put on furlough by my employer. What else was I going to do with the extra time locked in the flat but suck up a major project?
Exon has a top-down perspective so audio is immediately a bit weird. The game’s ear is attached to the camera, which (when centred) is between about 8 and 30 units away from the actual character depending on zoom level. This is in stark contrast to a first-person game, where the camera is in the character’s face right next to where their ear would be.
I was worried about getting the balance right for this, but I needn’t have been. Unity allows you to set a “custom rolloff” for 3D sounds, which determines the volume level based on proximity to the source. Given my camera can go in as close as 8 units and as far away as 30, I made sure that volume is at its maximum when you’re 8 or closer, and is quieter (but not silent yet) at 30. Then there’s a gentle fall-off towards about a hundred units, so you’ll be able to catch things that are happening off-screen but they won’t dominate.
So the technicalities aren’t so bad, what about the actual noises?
Ah, yes. Those.
Sound effect libraries are nice. I picked up Wavepad Masters Edition a while ago and it came with a small but fun library, which includes a few sound effects that I’ve heard in other games and so will definitely be using. However, it doesn’t have enough metal crashes and explosions and other gubbins so I’ve had to descend to the Unity asset store for a few more. At the moment I’m looking for breadth rather than depth because I don’t quite know what I need (now or going forward), so it helps to get a big blob of effects and browse through them for ideas.
The good thing is that there’s no specific genre of sound I’m going for. While my graphics are late-90s/early-00s low-poly pseudo-real, sounds just need to be “realistic” like they always have been in every game ever. While textures and models have to be vetted and modified for stylistic compatibility, pretty much any sound effect pack in existence will work here. The limiting factor is finding good ones with decent quality effects, at a price I can afford. I have bought a couple of big packs so far that are a bit mixed, so if anybody has any recommendations, please let me know!
Since I tend to listen to music in the afternoons, I’ve been splitting my time amongst other non-audio tasks too. I’ve added a new intro cinematic, where the player character arrives at the Exon Academy on a train.
… Yes, it’s not much, but it eases the game in in a way that makes it feel somehow more… legitimate. More real. Even when I was doing Project Y4 I knew that having things animated in the background made the world feel better, so it’s nice to be reaching that point with Exon.
(It is, however, not yet skippable. Maybe it never will be? … No, I have too much testing still to do, I’ll definitely get around to that.)
Before that, though, I did finally take the plunge and remove the item pair system. There are several reasons for this, most importantly that having paired items was a massive technical headache. Any action involving an item, from equipping to degrading with use to even just spawning the damn thing, had to be propagated to its mirror if it had one. Even status update messages had to be jiggered for potential plurality.
The other reason is more narrative, in that it would be hard to make a special item with a funny name if it was actually a pair of items. After all, Exon is a heroic fantasy game in sheep’s clothing so it stands to reason that unique items would exist in the world, either as one-off prototypes found in labs or basic equipment elevated by association with legendary figures.
It’s important to note that I have still embraced feature creep, and dual-wielding is available (albeit without a mechanism for actually engaging it yet, since there’s still no inventory screen). However, there can now be different, unrelated weapons in each hand, and this of course comes at the cost of carrying a shield. I mean, I wasn’t about to throw away the old animations now, was I?
And because it wouldn’t be a period of intense game development without rewriting a core system, I’ve turned my steely glare on the core movement system.
I rewrote it completely a while back, replacing a CharacterController-based system with a rigidbody-based one. Which was all fine and dandy for a while, but naturally, the more you play with something, the more niggles you start to notice. There’s a small but annoying issue where units bounce ever-so-slightly off the ground as they run, and stutter over tiny ledges.
So, of course, I’ve started on some refinements. It’s not a total rewrite, and I’m worried about the performance implications of doing a few extra raycasts per unit so it might be horrible… But ah well, a decent frame-rate is worthless if the game doesn’t work, right?
Anyway, that’s for later. For now, please enjoy this new gameplay video!