Game Development

Blog 815: The Next Level

The Exon Academy is complete! The first level of the first campaign of Exon is fully playable, a self-contained lump of quests along with the tentpole minigame of The Arena. Bookended by the “Insert Disc 2” notice that appears if you actually try to leave the area, it could be shipped as a demo — give or take any traditional bugs that still linger.

But I’m not going to do that just yet, because with the first level complete, it’s now time to… make more levels.

The Next Level

Five levels will comprise the Prologue of Campaign 01. The Exon Academy is where it all begins, with you, a fresh-faced wannabe hero in a new mech, arriving on a cute little train. The Friendly Arm Waystation comes next, a hub area for exons to repair, upgrade and find jobs. Since this is the Prologue, there will be only one job for now: the job that sets the story in motion. That job will take you across three other levels — a mine above and below ground, and a power station — before it segu├ęs into Chapter One and the real game begins.

The Prologue and Chapter One both occur in the same nondescript part of the UK, so the Exon Academy and the Friendly Arm at least will remain accessible for revisiting if you need to finish off any side quests (and it means I get to keep to the same tileset for the immediate future).

It’s not “done” done but the Fog of War will hide all the bits I haven’t actually “done” yet.

Just like its namesake from Baldur’s Gate, the Friendly Arm Waystation is a castle, albeit on a mech scale, which means I finally get to stretch my artistic legs. I did the Academy in the straightforward concrete bricks style you might be familiar with from my work in Warcraft III because, well, it’s a style I’m comfortable with and it’s easy. But as much as Exon is a sci-fi adventure, at heart it’s a heroic fantasy, so I really do want to lean into ancient monuments and medieval fortifications as much as factories and bunkers.

The Friendly Arm is also a much smaller level than the Academy — it really is a “hub”. Important shops and facilities will be concentrated here, in the same way important shops and facilities will be concentrated in other exon waystations in subsequent chapters. There will definitely be smaller shops scattered around the world for you to discover, but by and large, you’ll be able to offload your loot and get decent upgrades in your local waystation so you don’t have to traipse about too much.

Uncomfortably aware that the those two circular landing pads look like a cock ‘n’ balls on the minimap.

Obviously that means I finally need to work out the fundamentals — what is a level in Exon? What are the pieces of logic and meta-data that are absolutely required, and what can be swapped in and out depending on the particular setting?

It turns out, it’s not all that much. I have a single meta-data object that has all the basics like the level name name, whether or not the UI should show, whether or not intro text should show, and other gubbins like that. It looks pretty innocuous in the inspector, but under the bonnet, it also handles the bewildering complexity of saving and loading. Next to it goes a handler for Trigger Events, which has no visible properties at all but, again, handles the bewildering complexity of scenario and quest logic under the bonnet.

That’s… that’s kind of it. The rest is variable, dependent on the level’s location.

For now, we’re dealing only with the great outdoors — sunshine and birdsong (and, eventually, weather). Luckily I’m already handling lighting in a complex way, with a full day/night cycle and even shadows that move with the “sun”. That’s all just Unity prefabs I can just slot right in: here’s the track for temperate, northern hemisphere lighting, and the ambient birdsong to go with it. For when I finally start on that underground level, I don’t even need to replace this stuff — just not insert it at all.

The thing is that I don’t need any of the other basics you’d normally slap in when making a new Unity project, like a camera or a UI canvas. For years I’ve built Exon to ensure that I can “press play” from any scene and have the whole thing bootstrap itself properly — all the underlying gameplay managers, the entire user interface, it all comes in automatically on start-up, which means the levels don’t need any of that clutter.

There’s just not much to it! (… thank fuck…)

So with the bones of a new level beginning to take shape, I needed to implement the inter-level travel mechanics for which I merely built the map when I did the Datavault.

To be fair, most of the mechanics here already existed, from when I did the saving and loading system. Exon has two mechanisms in place for this: firstm a “current” save game slot that contains data for all the levels you’re not in right now, and second, an understanding of whether this is your first visit to a level when it starts. Determining first visit is easy: “is there a data file for this level in the current save or not?” If not, go ahead and do all the first-time initialisation as normal; spawn enemies, subscribe trigger events, all that jazz. If yes, then do not initialise any of these things — instead, reinstate them from the data file, along with all the player-inflicted changes in between.

I had a few teething problems but mostly it worked as expected. Yay for past Robbie and his forward planning; I’m now quite happily bouncing between the Academy and the Waystation.

It may take just under half an hour to get there and back, but somehow Warren is still walking off the map? Madness.

Is any of this necessary for me to ship a demo, though?

Nope!

Exon Academy would be a smaller demo than I’d like but it’s perfectly shippable, so I can say with more genuine confidence than I’ve ever had before that I plan to release something later this year. Whether that something contains the rest of the Prologue — the Friendly Arm Waystation and the first job levels — is the part that remains to be seen. Even if they don’t make it into the initial release, they’d definitely follow it comparatively soon after (“comparatively”) to round out the demo.

Then… Then I have to make the rest of the campaign.

… assuming anybody actually enjoys the demo…

… oh what am I saying, even if nobody cares I’m still going to keep making the same damn game. It’s Art!

And you tell me...

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.