There are 3 overarching systems in my current game design that make up the foundation of the game: Shooting/Movement Mechanics, the Magic System, and the Cover System. I want these three systems to co-exist in harmony; if any one of them overtakes another, or hinders any of the others, that's a problem for me. And so there's a special principle I'm following in regards to designing the Cover System in particular that is different from what I've seen implemented in other games: I don't want it to be a centerpiece of how a player defends themselves, but rather an addition that plays a specific role.
To set some context here, one of my favorite game franchises of all time is Gears of War, and I still think it stands as the pinnacle of smooth n' silky cover-based systems. But there's something that's always irked me about the cover design philosophy of, not just GoW, but all the cover-based systems I've played thusfar: they slow down the game and makes it "campy." Mind you, I'm not saying that's a flaw, and I want to be very clear that I understand the design choice. It's completely reasonable given the context of those games' other mechanics, because how else can a player adequately defend themselves?
However, I have a bit of an advantage in terms of flexibility here, because the theme of my game revolves around magical girls. That means magical abilities. And that means the potential to, for example, increase speed, heal quickly, deflect bullets with a timed button press, swap appearances with an opposing player, armor systems similar to Halo, etc, etc. Lots of defensive options can be regulated to the Magic System, so by balancing these things with the Cover System, I hope to reduce the importance of cover down to something that follows a philosophy more like this:
"The purpose of cover should be to allow players to MOVE around the map safely IF used intelligently. It should NEVER provide a difficult-to-attack position in which a player has a high defensive advantage when camping."
In other words, I want cover to facilitate smart movement around the map, rather than to be a safe, impenetrable fortress. Question is, how do we do that?
Some of the "big ideas" for following my design principle for the cover system are...
- Cover will never provide 100% security.
- A player hiding behind a car could have their feet shot underneath it, or the car could explode.
- Cover made of certain materials, like wood/stone, can be shot through by most weapons with reduced damage.
- Any cover too thick to shoot through will be easily flankable around the sides and/or back.
- Opponents can "peek" through walls for short ranges by aiming at them (this also reveals the location of the player who is "peeking", making camping right behind a wall while aiming impossible without being seen.)
- Player's head will slightly poke up above Low Cover when sprinting or reloading.
- Cover will facilitate and encourage smart movement around the map.
- Smart level design that allows players who prefer to play with close-range weapons the ability to move in for the kill safely if they move tactically from cover to cover.
- Easy movement in and out of cover; cancellable animations when doing cover slides or swats, ability to roll out of cover, fast vaulting, sprinting in cover speed only slightly reduced from regular sprinting.
Of course, as I actually begin implementing things, some ideas may be added or tweaked, but I'm hoping that these sorts of "nerfs" combined with some fluid defensive options in the Magic System will feel balanced, fast, and fun to play.
It's the sort of game I want to play, in any case, so there's bound to be someone else who would enjoy it too :P
Now for the more technical side of things, how to actually start implementing the cover system? Well, I was lucky enough to stumble across a Gears 5 developer vlog where one of the map designers was talking about... well, map design! I didn't find that part terribly interesting, especially since I despise map design geared towards the nebulous "Esports standard", however there was a short section where I saw at a high level how they are handling cover. You can see what I'm talking about at around 9:00 in:
Obviously, they don't go into any great detail, but I decided to take some inspiration from that because it seems quite flexible. So here are my initial ideas...
- Use Spline Components, drawn around connected pieces of cover, to control movement while in cover.
- The reference to each spline component will be contained within a variable on each "CoverCollisionBox" class actor, detailed below.
- Create a CoverCollisionBox class which holds all the relevant variables for player actions while in cover.
- For example, booleans such as bCanPeekCover could control if a player can peek while overlapping that box. bIsLowCover could drive low vs. high cover animations. bCanVault could control if a player can vault while in that box. Etc.
- Each Collision Box will also contain a component, like an Arrow Component, that will dictate where the player moves to when sliding to cover (in other words, when pressing the Action Button, the player sends out a line trace looking for a CoverCollisionBox actor. If they find one, they move to the location dictated by aforementioned component within the actor.)
- Create a separate class (or perhaps a derived class?) called CoverEdgeBox which holds all relevant variables for player actions while at the edge of cover.
- For example, while in the Cover Edge Box, the player may be able to peek around cover or move forward around cover.
- Have these boxes trace out to the right or left (depending on which side of cover they're on) for other boxes of the same class when the player overlaps. If they trace a box within a certain distance, enable the ability for the player to swat to that box (with the location defined by some component, like with the CoverCollisionBox actors).
I'm sure I'll find things that need tweaking as I go along, but for now, this idea seems flexible to me. The goal is for me to use these Collision Box actors to go into literally any map, plop them down, lay down some splines, and then have cover work if I set them up correctly. Time to get cracking...
- Flash <3
Note: The logo picture is from an old project I was working on. Cover system was fully working! But... let's just say it was less than flexible. And the whole project was in Blueprints. Live and learn!