Game Development

Blog 662: Welcome… to the Arena

Every day my game inches closer to functionality, but every day I realise anew the vast gulf between my dreams and my abilities.

The plan is to have built a fully armed and operational player-versus-bots deathmatch arena by the end of my festive holiday. Is it possible? This is, after all, the season where dreams come true.

Welcome… to the Arena

It’s more possible than you might think. I’ve been slaving away over some of the core mechanics required, and even if it might not have multi-kills and sprees (or even audio) it should at least have victory and defeat conditions.

I’ve started with an eight-player arena. Player 1, the human player, is on the red team with a single bot companion; every other team comprises two bots. Every player will be equal in their abilities, but make no mistake — this is a purely singleplayer enterprise. It’s an extreme form of stress test, really; I want to push my systems to the limit so that when I start to make the proper narrative-driven open-world-ish missions then my bots will already be well-equipped to handle them.

And, well, maybe I also love Unreal Tournament-style announcer commentary and I won’t be able to do that when I crack open the story train. An in-universe tournament, however…

I was originally aiming for a Mayan/Incan vibe, but then I started channelling the Sunken Ruins colour scheme and ended up somewhere in Egypt.
I was originally aiming for a Mayan/Incan vibe, but then I started channelling the Sunken Ruins colour scheme and ended up somewhere in Egypt.

Thematically, I’m going to take step away from the brutalist concrete modules and go back to my roots — ancient ruins. With the advent of textures.com and episcura I have access to all sorts of textures that mean I can indulge myself, rather than being limited to the palette I can assemble for myself. The mix of procedural and real textures has so far worked quite well as far as I’m concerned, and even the smallest resolutions they offer at the free tiers are far higher than my needs, so I can really go to town.

The arena also has the classic layout of a central pyramid in a square compound, with a team base at each corner and a locked gate in the middle of each side. Annexes and bonus objectives will grow in time from these hooks, just as they always have.

I still need to find a relief or mural or runes or something to put onto the pylons, but... it's a start.
I still need to find a relief or mural or runes or something to put onto the pylons, but… it’s a start.

The first stepping stone was actually to tie together respawning and kill count tracking. Unlike Warcraft III, where a single hero is persistent beyond death, continuously rising and falling, my units — regardless of whether they are player or bot-controlled — disintegrate into meaty chunks upon death, replacing each of their constituent parts with an equivalent piece of wreckage and then disposing of themselves.

So every unit is given a Character to link its many lives together. This character is where all the high-level stuff goes on, tracking who has killed whom over the whole span of the match, and it is this object that will ultimately signal victory — or defeat. In the long run, it will contain customisation options so you can dress up your mech, and it will track multi-kills and sprees and hits and misses and all these things that make tournaments such fun. Indeed, if I play my cards right, it’ll track all this data between matches, allowing you as a player to build up a persistant profile. So many dreams!

Trust me when I say that 1 kill in the corner came from me lasering this enemy mech.
Trust me when I say that 1 kill in the corner came from me lasering this enemy mech.

For now, though, the arena is just based on life and death. I need to keep it simple because I have eyes far bigger than my stomach, so anything that doesn’t directly contribute to this version of the arena is being mercilessly dropped right now. Otherwise, well, I’ll never release anything.

I already have four weapons in the game from previous development — the rams, the laser rifles, the shard rifles, and the cannons. This is not quite a roster to match Unreal Tournament so I need to build some more weapons to fill the gaps. I’ve added weak and inaccurate pistols to go along with the ammoless rams as basic starting weapons, then I’d like to bring back the quadshot from Project Y4 to be my version of the flak cannon, plus a minigun and if I’m a reallllly good boy I’ll see if I can’t make some kind of sniper rifle too.

I put flashlights on the pistols because that's generally all they're good for in games. From those spots on the wall behind me, you can also see that somebody is coming...
I put flashlights on the pistols because that’s generally all they’re good for in games. From those spots on the wall behind me, you can also see that somebody is coming…

Up until recently, of course, my bots couldn’t actually use any other weapons than the ones they were born with. Their eyes are quite adept at spotting enemies in their vision cones but items are a slightly different story, namely because they can be held by other characters. Much as having your cannon pickpocketing off you in the middle of a fight could be a beautiful mechanic in future, it’s definitely not something I want right now, and believe me, after a whole heap of wrangling they’re still nabbing items off each other — though at least I’ve got them to stop stealing items from their own inventories.

Yes, an inventory is necessary too. I’ve had a rudimentary ammunition stockpile so far, but weapons — real, solid items — are a slightly different kettle o’ fish. Eventually I will use a grid-based inventory tetris system, but for now a scroll-up-and-down UT-style toolbelt is all we need.

Okay, this is WC3 levels of terrible lighting, the flashlights clearly need a bit of work.
Okay, this is WC3 levels of terrible lighting, the flashlights clearly need a bit of work.

My inventory strategy is, as is my way, probably more complex than it needs to be. I’m hiding the items inside the unit that is carrying them, to facilitate a Nox-style lootsplosion on death, where your entire inventory splatters out all over the floor. It’s complicated by the fact that all my items occur in pairs — yes, those cute Delta mechs dual-wield items and it’s a right royal pain in the arse to do things with pairs.

Well, maybe it’s my own fault. I want my engine to deal with these item pairs transparently, so that everything “just works” when I get to the fun stuff. Effectively this means every inventory method has multiple if item has mirror blocks, but I’m willing to take that hit to contain all such logic within the inventory class(es) — the rest of the world can just not care whether an item is alone or has a lifelong soulmate.

Oh, the life of an amateur game developer. Have a proper crimbo everyone!

6 thoughts on “Blog 662: Welcome… to the Arena”

  1. The day textures.com got their new domain and switched to a paid tier model was a sad day. Everything used to be free, back in the days before UDK was a thing and Unity still cost too much money for what it offered.

    The game is definitely moving along, looks great!

    Like

    1. Ahhhh, but the free tier is good enough for me. My terrain textures are all 256×256 — and you’re hard pressed to get even the lowest res textures at less than 1024! 😀

      Like

      1. The free tier definitely is good enough, I mostly just don’t like the 15 download limit now. It makes things a pain, especially when I’m on a spree, trying to iterate on a bunch of different textures.

        Like

      2. Hehe, I work slowly enough that the limit hasn’t hurt me yet. Maybe I’ll start grumbling once I get a functional game that only needs decoration…

        Like

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 )

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.