Category Archives: PlanetSide 2

Horizontal Recoil Tolerance

Introduction

Horizontal Recoil Tolerance is the most mysterious and elusive recoil characteristic. We all knew what it’s supposed to do: set a limit on just how far Horizontal Recoil can take you from initial aiming position.

Horizontal Recoil Tolerance

There were many hints, starting with the datamined name of this stat, and ending with this video by Vanu Labs. 

However, nobody was able to figure out how to translate the datamined HRT values into what can be seen in game.

How everybody thinks it works

Let’s take the infamous Gauss SAW as an example:

Horizontal Recoil: 0.175 / 0.175
Horizontal Recoil Tolerance: 0.525

Instantly it becomes obvious that 0.525 is divisible by 0.175 without residue:

0.525 / 0.175 = 3

So the logical conclusion would be that Gauss SAW can kick up to 3 times into one direction, after which Horizontal Recoil Tolerance forces it to bounce in the opposite direction.

But that assumption is wrong. Gauss SAW can only kick up to 2 times in the same direction.

This comes from multiple in-game tests, where I record a high resolution video of firing a weapon, and then watch it frame by frame and document how crosshair moves after each shot. 

Here’s an example of such recording:

And here’s the recorded recoil path from that video example:

Gauss SAW recoil path

You can clearly see that Gauss SAW recoils only up to 2 times in the same direction. More recorded recoil paths:

SAW HRT no grip

It’s not just Gauss SAW, this is confirmed by testing other weapons as well; they all bounce less than this theory suggests. I have a notebook full of these scribbles:

manual testing

It’s obvious that the first theory about Horizontal Recoil Tolerance is wrong.

For years nobody was able to offer a correct theory, mostly from lack of interest or necessary knowledge. 

In the meantime, the solution is painfully simple, and if not for misleading HRT values, we’d crack that nut much earlier.

How it actually works

If you imagine HRT as an angle, the center of that angle is the position of your first shot. If the gun recoils left several times and exceeds the left half of tolerance, it will be forced to to recoil right at least once. 

HRT explanation

HRT is split in halves by crosshair position of a first shot in a burst, so that’s what we care about – half of tolerance, not the whole value.

If we return to our example with Gauss SAW:

Gauss Saw Horizontal Recoil Tolerance

full path - HRT

Accumulated horizontal recoil from 2 shots of Gauss SAW is equal to 0.35, which is greater than half of tolerance: 0.2625. That is why Gauss SAW can only recoil twice in the same direction. 

So the fact that 0.525 can be divided by horizontal recoil without residue has no meaning at all. It’s a nasty coincidence, nothing more.

I have tested and retested this theory many times with at least 12 different weapons, and it remains consistent and predictable. 

The possibility that it works somehow differently behind the scenes still exists, but it is small. 

The funny part is that HRT could take different values without affecting anything. Gauss SAW could have Tolerance anywhere between 0.36 and 0.69, and the result would be exactly the same – still kick only up to 2 times in the same direction.

HRT deviation

This leads to funny and unexpected things. For example:

T32 Bull: 0.18 / 0.18 Recoil, 0.5 Tolerance
T16 Rhino: 0.2 / 0.2 Recoil, 0.7 Tolerance
TMG-50: 0.175 / 0.175, 0.7 Tolerance

T32 Bull has much lower Tolerance than T16 Rhino, yet they both kick up to 2 times in one direction.

TMG-50 has same tolerance as T16 Rhino, but lower Horizontal Recoil, so it kicks up to 3 times in one direction, giving it a wider recoil pattern.

How HRT can be used

Horizontal Recoil is the most unpredictable and uncontrollable part of the whole recoil system. You can’t compensate for random.

Horizontal Recoil Tolerance brings a piece of order into this chaos. Horizontal Recoil can bounce wildly all it wants, but only within the bounds of HRT. 

Knowing how HRT works, you can calculate the width of the recoil pattern: the distance between the extremities of Horizontal Recoil:

recoil pattern width

Notice that Width is always larger than HRT, because Horizontal Recoil can exceed half of HRT once.

Calculations

First you will have to calculate the maximum amount of horizontal recoil kicks in the same direction:

N_Kicks = Round_Down ((HRT / 2) / Horizontal Recoil Minimum) + 1

In other words, to calculate the number of kicks, you have to divide HRT by 2, then divide the result by Minimum Horizontal Recoil, then round the result down, and then increase it by one.

For example:

T5 AMC
Horizontal Recoil: 0.2 / 0.2
Horizontal Recoil Tolerance: 0.45

HRT / 2 = 0.225
0.225 / 0.2 = 1.125
Round it down to 1, then increase by 1

N_Kicks = 2

Confirmed by in-game testing.

When you know the maximum amount of kicks, you can calculate the total width of the recoil pattern:

Width = N_Kicks * Horizontal Recoil Maximum * 2

For T5 AMC:

Recoil Pattern Width = 0.2 * 2 * 2 = 0.8 degrees

This means that as long as target’s Angular Size is less or equal to 0.8 degrees, you are guaranteed to hit it, from the standpoint of Horizontal Recoil. 

Unexpected implications

Attention! The following issue was fixed in 7/7/2016 patch. It no longer works this way!

Conclusion

Horizontal Recoil Tolerance remained a blind spot of PS2 weapon community for a long time, and I’m happy to finally shed some light on it.

There is still much to do in theorycrafting of PlanetSide 2, but now we finally can predict a weapon’s recoil pattern just from its stats.

Please feel free to comment me with any questions regarding PS2 weapon mechanics.

About PlanetSide 2

Automated Command System

INTRODUCTION

Before we start: if you liked this idea, make sure to upvote it on reddit. This is the best way to get devs’ attention.

Lack of overarching, unified command structure is an old issue with PS2.

Map markers, command chat and mission system are the only tools we have, and they are not enough.

Platoon commanders of large outfits may choose to cooperate, or they may choose not to, but even if they wanted to, it’s not easy for them to communicate, and decide on objectives for each other.

Over time, people have offered different solutions to this problem, like voting in players to take over command for whole faction.

That’s not a good idea, since it depends too much on keeping the same people in game for too long. There always must be a commander online, so we would need multiple commanders, and we would arrive to the same situation that we have now – when several people are in charge, nobody is in charge.

This also leaves the problem of solo players that don’t want to bother with high organization, essentially leaving them without an easy way to be a team player for their faction.

Another problem is that it takes a lot of bureaucracy – boring accounting of how many people should be taken to which base, how many vehicles and players of certain class they will need. Nobody wants that job.

Just recently PS2 set the precedent of eliminating a piece of boringness by introducing AI elements – everybody knows how boring it is to sit in a turret and wait for an enemy attack that may never come, so we have AI modules for turrets to automate the process of overwatching.

I suggest same measures to be taken to eliminate the boring bureaucracy and take over command over each faction.

AUTOMATED COMMAND SYSTEM

The idea behind Command System is to let an AI do the boring accounting part of the game, automate communications, create clearly defined assignments for people to accept and be rewarded for, and allow combat leaders to actually lead and handle the tactical part of the game, letting the machine decide on strategy.

We already have parts of this Command System:

personality in form of the portrait and voice of faction commanders: impressed brass, benevolent papa Vanu and passive-aggressive NC chick.

mission system that assigns objectives to individual players.

What I suggest is to upscale this system.

HOW IT WILL WORK

Based on which fights are available from the lattice system, Command System creates a list of missions for each faction.

I.e. “attack that base” or “defend this base”.

Each objective is assigned an empty platoon.

All players can browse that list and accept a mission by joining the assigned platoon.

One of the players becomes platoon leader, and now it is his duty to fulfill the mission outlayed before him by the system.

The basic ruleset is that: player becomes platoon leader if he’s the only player in a squad, other players can vote other players to leading, and he can also voluntarily give up his position to anyone who would accept it.

There could be several methods to ensure that players that accept the mission have incentive to follow it through: earn XP only in mission area, receive larger XP bonus only if and when the fight for objective is complete.

So in addition to current “freelance” platoons that redeploy all over the world as they please, we will have platoons assigned to certain objectives, and players themselves pick an objective they want to commit to.

Due to XP incentives, playing in an objective assigned platoon should be more rewarding than playing in a free platoon.

The Command System will automatically limit the platoon size based on enemy presence and scale of the objective, so this should help balance out the number of people in fights, and since each side has a self-interest in completing the objective, this should lead to long and interesting fights.

That’s how it will work on the large scale.

ON THE SMALL SCALE

Within the platoon, Command System will create jobs/assignments, like “Sunderer Pilot”, “Air Support”, “Armor Support”, “Infantry Support”, “Infantry Assault”, etc.

Players in the platoon can choose any assignment they would like, and receive rewards for playing in accordance with it. Or not choose an assignment, and play as they see fit.

I.e. “Armor Support” player is expected to pull a tank, and he will get bonus points for killing enemy vehicles with it. He may also receive a nanite discount for pulling said vehicle.

Command System will also create an automatic “gunner” job for each vehicle with an empty “gunner” slot.

This way, the Command System will motivate combined arms while keeping the number of force multipliers within reason. Players will still be free to pull 48 tanks and bombard spawn with it, but they may receive better rewards if they approach the fight in a more balanced manner.

The Command System can fuel the fire with dynamic rewards. I.e. if there are no Sunderers in the platoon, the first player to accept the job of a Sunderer pilot will receive bigger bonuses than subsequent.

This is what the Directive System tried to accomplish, but ultimately failed, instead only seen as the wall of grind to separate from shiny directive rewards.

ON INDIVIDUAL SCALE (SKILL)

Skill should be rewarded, everyone can agree with that. In PS2, we’re blessed with a huge community that has players of all skill levels, and a huge amount of playstyles available.

The gap between worst playstyle of a worst player to the best of the best is planetary in scale.

To manage personal skill, the Command System will record the “performance index” of each player at each job.

So each player will have his personal performance index at being an air support player, at leading a squad, at infantry combat, and his impact in general.

The game will continuously update the performance index of each player, and reward him accordingly.

For example, by default, medics receive 75 XP reward for resurrecting an ally.

An average combat medic who accepted “Infantry Support” assignment from the Command System, will receive 25 XP bonus for reviving an ally, for a 100 XP total.

Private Johnny is a seasoned combat medic, and he has proven that he can do the job of two combat medics, i.e. revive twice as many people, heal twice the hitpoints, etc.

His Infantry Support Performance Index is = 2.0

Johnny’s XP bonus will be multiplied by performance index, so he will receive 50 XP bonus for reviving a player.

The Command System will also create less Infantry Support assignments when it sees Johnny at work.

So the Command System will not only try to equalize the number of people in a fight, it will also try to equalize their combined impact (skill).

THE AIR GAME

Air to ground aircraft are notoriously hard to deal with from the ground.

Aircraft are known for their mobility, and the ability to quickly arrive in a fight, and air to air pilots could come and assist against air to ground aircraft, but they suffer from lack of communication, and they spend too much time wandering and looking for action.

In addition to platoons tied to specific objectives, the Command System will create broad, continent-wide platoons, like like “air domination” or “air support”.

For example, whenever players spot an enemy aircraft, the AA pilots in “air domination” squad will be informed about it by the command system, and they may choose to go intercept said enemy aircraft.

IT COULD BE MORE

Obviously there are multiple details that have to be addressed, loopholes to be plugged before the Command System will be ready even on the concept level.

I’m just trying to relay the idea of using an AI for unified faction command to gently enforce the meta, while letting the players play the game instead of having a headache on how to work around allied and enemy zergs.