A lil polish
goes a long way
Before we start I'd like to get out of the way what this isn't about. This blog is not about me telling you to polish your game before you actually make the game, or to put polish high in your priority list, it's also not advocating for overblown polish and flair, ultimately, I'm trying to make the argument that you should care about gamefeel and that bringing it into your project is actually super easy, takes very little effort, and makes a big difference in the enjoyment of your game for a new player, especially during the first few minutes, which are very precious. Also this is comes from someone that makes games in the First Person perspective and mostly checks out FP games in Next Fest and such.
Let's say that the average person finds out about your game, they've seen it in a video, they find it cool, they then follow you for a while and then Next Fest comes around and, hooray, your game is in it, this is your one opportunity to both satisfy that person and also get new eyes on your baby. You've toiled at it like crazy during the weeks leading up to it, trying to have a limited amount of content but making it tight, to 'sell' the experience and invite them to imagine what it'll be like when they get their hands on the completed thing, and while that's good and all, it's also an opportunity for failure.
The average person will have a mental image of what the game is like: the features it has, what the experience will entail, and how the thing will feel like to play. But they don't know you personally, they don't know, necessarily, what inspires you, how you like to do things or even what level of competency to do well those things you're at. And all these things dictate how the actual thing is like.
It is, of course, unrealistic and fruitless to try and meet everyones demands, after all, your game should have a little friction (we'll talk about this later) but we aim to meet those demands to some extent, we should aim to meet most of them, after all, you've been 'selling' an experience to them and it 'should' feel honest. People that play something for free or cheap are often very generous, they usually come out of the experience feeling good about it, but this generosity should not be taken for granted and, assuming that your starting point is a positive sense of anticipation, you should do what you can to keep that up.
Now, what you do with your game is your business, I'm not a shark-minded techbro (at least I sure hope so) that's about to tell you to engage the player with sparks and fireworks to 'keep them engaged in the game loop' or whatever the fuck. What I want to do is simple, I want to tell you how to make your player comfortable, so that they actually give your game a chance before you put all of your cards on the table.
THOUGHT
EXERCISE
Here I am, about to check out your First Person Fantasy/Shooter in Next Fest, I've followed you for a while on the social medias and I am EAGER, I just logged off of work, downloaded a few demos and yours is the first I will check out, it's going to be good.
Now let's quantify that, as a thought experiment.
I follow your game, I love it already: +1
I am in the MOOD: +1
My working is done for the day: +0.5
I've just poured myself a cold drink: +0.5
Had to restart my computer because Windows says it really needs to update and there are no signs on the horizon that things will get any better, computers suck, computing is done, the price hike in components is absolutely obscene and owning a personal PC capable of running a game might be a thing reserved for the elite in the not so distant future as every AI company holds hostage the supply for GPUs and RAMs: -1
So, here we are, at a +2 , not bad. Of course, every player will come from a different angle, every player will be at a different point in life and have a different amount of patience, this isn't really worth worrying about, you have no control over this.
So, I boot up your game:
Cool main menu with eerie ambience: +1
No proper FOV settings: -1
Keybinds menu: +0
My computer is really revving up, this game has a 90s aesthetic why the hell is every fan on this thing at full power, oh right, the developer did not limit the framerate despite having options to do so in their menu, what were they thinking: -0.5
Can't turn off the low res retro postprocess filter: -0.5
I press 'New Game':
Game has a moody intro: +1
Good music accompanies it: +1
Looks awesome: +1
I finally get to play, we're at a +4:
Moving around feels like gliding on the ground:-1
Looking around feels stiff:-1
Attack animations are bad and have poor audio feedback: -1
Are the developers frauds? Were they selling me smoke? -1
This really doesn't meet my expectations: -1
Woah, what happened there? All that goodwill that we have accrued, it's gone, the damage is not permanent but, positive or negative feelings tend to snowball and now we're walking on eggshells.
At this point you might think that I am being unfair, that the average player does not care that much about first impressions for a game in development. But remember, this is a demo that we have made to try and sell them on the experience, it's not a pre-alpha we are sending to our fellow game developers in exchange of social acceptance and critique. This is the real deal, the real world. You are not there sitting next to the player saying "oh yea, I have to fix that, I have to balance that, it's still in progress haha..."
What's worse, the game has not started proper, and your game is going to contain, hopefully, a lot of good boy points to earn, but also you will have many points of friction, perhaps your control scheme is a bit unique, perhaps your stamina system is really restrictive, perhaps the players favourite weapon is limited in some major way. These are things you have created to support your artistic vision, and they can be balanced but they shouldn't be taken away. So it's an exercise in tug of war with the player, and it's going to be way easier on you the more good boy points you have earned before friction starts.
The Solution
Obviously games are extremely nuanced and there is no one size fits all solution haha see ya, no yea, just kidding.
As I said I'm mostly interested in First Person games, which is a good thing because we have it easy, our animations don't need to be great, and it's a good thing because animating an entire character with all its limbs and stuff is a pain in the ass, even if you enjoy it, but if you are a good animator, congrats!
I want to talk about common knowledge simple things like bobbing, hitstops, particles and audio but I want to say that I'm not an authority on the subject, I simply have applied these things in my projects and I have received praise over them which is something I'm proud of but of course I'm far from being the best, you can always play my games and find out on your own if I'm a fraud or I know ball.
Also, I want to address that there are essentially 2 ways of having a first person camera, it's either 'floating' or it's 'attached'. If it's attached to a character then things are trickier because it all depends on the animations of said character. But if it's floating and has no contraints except for the character location, it's easy to apply these things in code. I'm not going to tell you that one is better than the other, I've made games in both and it depends on the experience you're trying to have. For the sake of keeping this as short as possible I'll focus on a 'floating' camera, I will try to not get too technical and just show examples, implementation is up to you.
Objectives
Our main objective is to give the game a little flair, not just for style, but to sell the idea that in this World we inhabit a body that has limitations and feels physical. We don't want to actually limit the player, our body already sucks enough to control in real life, we just want to make the player feel like they inhabit the world. If we have a floating camera with no sauce it's going to feel extremely artificial, and I believe that this trickles down to then taking the game less seriously, feeling less immersed, which is rarely going to be desirable.
Our secondary objective is for the thing to feel good, if the player feels comfort they will have to do less work to actually like your game, remember, the game will have some friction, all good things do, you better be on their good side once that happens or things will quickly snowball towards a negative experience.
So where do we start, let's start by looking around.
Looking
Is this the year 1992? Are you doing Wolfenstein 3D? No? Good, let's juice the camera up just a little bit.
By default it feels like this: stiff, artificial, feels like a fly spastically looking around, maybe you're doing a high precision shooter and this is desirable, chances are you aren't though.
By adding spring rotation lag, the motion smoothes out at the end, some players hate this so you may want to add a slider. I personally love it, artificiality is greatly reduced.
To finally bring this home, let's bring the character into the equation by making the hands follow its owners intention. You can also have them lag behind which will contribute to a sense of clumsiness, up to you how you cook it.
Easy stuff right, this is not a tutorial so sorry for not getting into technical stuff, that said it should be super easy to find out how to execute this in your engine of choice with terms like 'camera smoothing' or 'mouse acceleration'.
Moving
Here is where we can interpret in many ways the limitation of a physical body, try this out: stand up and walk around the room, try to focus your sight on something on the far end and notice in the periphery of your sight how things move.
You'll notice how things sway around your focus point as you put your weight on your several, different legs. Your head will simply follow this shift in weight moving both up and down and side to side.
Now, this is not the greatest thing to simulate in a first person game, it doesn't feel great right off the bat, but at the very least we should have a little bit of it. How much you want in your game depends on the type of game you're making. For example, a throwback retro shooter like 'Slayers X: Terminal Aftermath: Vengance of the Slayer' can get away with just having some vertical bobbing based on your character speed, while a modern triple A shooter like 'Titanfall 2' will heavily sway from side to side while you sprint. And what you need is likely in the middle, depends on how much physicality you want to have in your game. Again, a lot of people hate this, add a slider.
Without physicality, we glide, is this good? Does anyone enjoy this? I don't. Feels like dragging a concrete block on the ground.
If we add a little sway up-down and side to side, we are starting to 'inhabit' this space. Our feet are on the ground, taking steps, our imaginary body, moving.
Again, let's bring the hands into the equation.
For flair, you can also add some tilt. Not everyone enjoys it.
And finally, we might want to do some custom stuff for jumping, launching and landing are things that take quite a lot of effort on a human body, we both need the anticipation of the launch and the recovery of the fall. A bit of wooshing audio on the launch also helps a great deal.
With these simple tricks you have pretty much improved the first few seconds of gameplay, your player is cozy and eager to explore, eager to grab a weapon and whack a skeleton in the head with it. And all things considered this has taken you what, a couple hours? And this is here forever now, improving everything else about the game, isn't that great? Even you, as a developer, will enjoy more the act of playing your own thing, and God knows how long these things take so it's not a small victory.
Combat
This is kind of a bonus round, I'm done with the important things I wanted to cover but while I'm here I'll might as well talk about melee combat which is rather difficult to get right in first person, that said this is the section with the most overlap with other types of game camera perspectives.
We have a weapon, and an animation, great, let's try it out.
Hardly better than swinging a wet sock around isn't it. Something I think is a good starting point is telling the player where the hit happened, this is something that can be nebulous, hitboxes and raycasts are an abstract thing to the player after all, but having a little particle to let them know creates a mental image of how much range you have.
As a bonus I like to push the player forward a bit when they swing their weapon and push them back if it connects. This isn't common, I just enjoy it.
It would be ideal to really bring home the physicality of that contact, a bit of hitstop achieves that, to simulate that it took some effort to connect the attack and continue it. What I'm doing here is simply slowing down the animation that's already playing for just a tenth of a second. It's not super noticeable but it 'feels' physical, it feels sticky.
The enemy reaction is also very important, you know you've hit your target, now you just need to know how effective the attack actually was. A little blood splatter or flash of color will express that, in the games logic, its health number went down. If it gets staggered then what you did was 'really' effective, accompany this with audio et voila, you have decent enough combat.
That's gonna do it for this one, I kinda just wanted to talk about gamefeel but these are a bunch of thoughts that surface every time Next Fest comes around and I try out some awesome games. Some deliver, some don't, and some others just kinda try out my patience, and it would be easier to be patient if I didn't feel like a concrete block that swings a wet sock around.
Have a good one, see ya!