Some players were having a hard time aiming their guns at enemies.
But that wasn't surprising, because I locked the aim input to only support 8 directions!
Why would I do something silly like that? And how could I help players hit their targets?
Support a Friend
I took a couple weeks off,1 and out of nowhere a friend of mine announced Frostliner, their new city-builder-on-a-train set in a post-apocalyptic frozen wasteland - and it looks sick! Give it a wishlist if that's your jam.
Aiming Options
You're running around and you see an enemy, so you move your mouse over them and click, only to find:
Why on earth would I restrict aiming to 8 angles!? I'll tell you:
- You don't get as much accuracy with a controller (or if sharing a keyboard) as with a mouse; I wanted to lean into that.
- I also wanted to encourage players to use "perks" to customize their guns to better deal with enemy positioning.
- Most importantly, the online multiplayer netcode requires restricting rapidly-changing inputs to get good performance. 2
Now, with a little more experimenting, I did recognize that it's important to have an option for precise aim so you can set off fun chain reactions:
This made sense to me, but everyone who actually played the game got annoyed by struggling to hit enemies above or below them.
And yet... enabling precise aim all the time would destroy performance in networked multiplayer.
And bumping the number of aiming angles from 8 to 16 or 32 was even worse than having only 8 aim angles.
I could see only one answer...
Hello Aim Assist
I did actually have some sort of aim assist in the game already:
Those were cool, but I couldn't rely on players finding those perks. 3
Enter the Aim Bot
Instead I hacked up a prototype where players automatically & explicitly pointed their gun at the nearest enemy:
Suddenly hitting enemies was easy and fun!
It was.. maybe a little too easy? You just run around and hold the shoot button to win.
Tuning Aim Assist
A major improvement was to use that original 8-angle aim direction to restrict the aim assist:
Under the hood, this works by finding the closest in-range enemy within a specific cone, centered on the mouse.
Here's a visualization using a controller for aiming:
There are some tricky nuances to actually implementing this:
- As an enemy gets closer, it's easier for their center to be outside the cone - so you gotta look at their entire dimensions.
- Normally only visible enemies inside the outer purple circle (see above) are considered, but what if a player wants to shoot at an enemy through a wall? Well, if an enemy gets within the inner purple circle, then we'll lock onto those.
Of course, you can still precisely aim when you need to as well.
The neat thing is it kills three birds with one stone: it gives a good first-time experience, it can be dialed up to 11 for accessibility purposes and it can provide some variation and progression too: higher damage weapons might auto-aim less or not at all, or a perk might increase the range or arc of your auto-aim.
Feedback Requested!
Please try out the aiming below with a mouse (or a gamepad controller), and let me know how it feels! Here's last update's build for comparison.
Does it feel good? Is it too overpowered, or is it frustrating? Please let me know!
Playable web build
- Keyboard: Move with WASD, aim with the mouse, left click to shoot or hold right click to "precise aim".
- Gamepad controller: Press Start to drop in & press J (on keyboard) to kick the keyboard player. Then use the right trigger to shoot or hold left trigger to "precise aim".
Refresh the page to try again with a different weapon. Press F2 and tick Player >> Debug Auto Aim
to see the debug visualization.
Be very, very careful because this build also incorporates quite a few other small bits of polish: you may accidentally find yourself having fun.
I only took two weeks off, but you haven't heard from me in a month because I was dealing with some business stuff, and prepping for a recent playtest. (Playtest went well, except for one aspect: the aiming scheme - hence today's update!)
For a discussion of "why" inputs must be restricted, see my Rollback Performance update.
I briefly considered adding some subtle homing to every bullet shot by players, like in Towerfall, but having bullets curve away from the barrel you're aiming at to hit an enemy instead isn't very fun.