Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Npc Accuracy


[DE]DanielB
 Share

Recommended Posts

Enemy accuracy has been a hot topic for some time, so I thought it would be a good topic for a Developer Workshop post to explain how the system works under the hood and what changes are coming in this week’s update on PC.

 

We’ve been using the same system for controlling NPC aiming for quite some time now - all the way back to the original Dark Sector! When an agent wants to shoot at a target, we consider a cone based on the agent’s accuracy, the distance to his target and the size of the target he is shooting at. We calculate a hit chance and then test to see if he should hit or not. If the shot should hit, we aim the shot at the target. However if the shot should miss, we calculate a position for the agent to aim at that should miss the target, but that should be in the target’s field of view. This should make the situation feel more intense with the player seeing ricochets and tracers hitting all around them.

 

This cone based algorithm has some issues.

A) It’s really hard for designers to control the actual hit / miss chance of the NPC agents. They can adjust the aim error angles, but other than larger aim error angles means less accurate, it is hard to predict the actual hit chance.

B) The actual hit probability has a strange characteristic where most NPCs end up being 100% accurate less than about 12m and their accuracy drops off dramatically until they almost can’t hit you at all at about 30m! A graph of the hit probability for a typical Grineer Lancer illustrates the problem clearly. 

jCUlgcD.jpg

 

These issues really don’t help reinforce the ninja gameplay we’re after, so we decided it was time to retire this venerable system and do something new.

 

Our new system is very designer-centric. We can define an “AimGraph” for the agents to use. This graph explicitly maps target range to hit probably. Each weapon can be assigned a different AimGraph, so we can now make an NPC aiming a pistol more accurate up close and have the hit chance drop off rapidly, while an NPC with a sniper rifle is now far less accurate up close, but gets more accurate at medium - long range before dropping off slowly. This allows us to simulate how unwieldy a weapon is, or the effects of a scope.

 

gbUloZU.jpg

Pistol graph

aNjdLK3.jpg

Sniper graph

 

Additionally, the agent’s accuracy now will take some time after spotting you to ramp up to his maximum. No more sneaking up on a sniper only to have him spin around and instantly shoot you in the head!

 

Finally, we’ve addressed the accuracy discrepancy between host and client, which has been discussed at length here: https://forums.warframe.com/index.php?/topic/381733-hosting-causes-drastic-increase-of-enemy-accuracy-please-read-de/

 

With the new aiming system in place, designers have more control over the accuracy of enemies and the weapon the NPC is using will have far more impact on his accuracy. You’ll be better off staying at long range against enemies with pistols and shotguns, but getting in close is now a good counter to long range snipers. Combined with the acrobatic aiming penalties, fast, agile Tenno should have plenty of options to avoid danger and dispatch their foes! You’ll be able to put your skills to the test this week on PC!

 

-DanielB

Link to comment
Share on other sites

That sounds great. This new accuracy system gives us an immersive and balanced way to combat enemies. For hit-scan, close combat units will be appropriately deadly when in range. For snipers, it means we can fight them more safely up-close as we should, but they are deadly at their appropriate range.

Edited by MechaKnight
Link to comment
Share on other sites

The system should incorporate temporal lag. 

 

Let me introduce the concept of temporal lag: 

 

Critical Targets - initially Tenno and Bosses only - would have a Temporal LOG. On each frame of simulation time, the critical target would be on a specific position, moving on a specific vector at a specific speed. This would be be recorded, with a cap. Let's say the game simulation (and netcode) runs at 30 frames per second, this log will have the same pace. It would be capped though, at 300 frames (or 256 or whatever) to conserve resources.

 

Depending on enemy rank, level, eximus-ness, and any variable you can think of that should affect accuracy, the enemy would either:

 

Use the latest sample from the Temporal LOG;

Use a previous sample from the Temporal LOG, T frames behind.

 

T would be higher depending on the factors penalizing accuracy. 

 

Tenno powers which cause slowness would increase the T penalty.

 

The T-penalty alongside the Temporal LOG would be invaluable to reinforce the importance of Tenno's mobility. A Tenno standing still is filling its Temporal LOG with the same value, wasting a potential debuff to the enemy. The faster the Tenno moves, the more it extracts from this potential debuff. 

 

T can be used in new Temporal-based powers to simulate time drift and make Tennos appear to be somewhere else in the eyes of the enemy, or in Dark Sector PvP. 

 

 

Depending on the resource consumption, the Temporal LOG feature can be added to every enemy. 

Link to comment
Share on other sites

Your second graphs axis reach 1.2. 

 

Seeing as 1 in probability is 100% does this indicate that some mobs will get regions of SUPER HITS?

 

I jest, I jest. I assume you just didn't crop those graphs. 

 

However as a former Science teacher I am going to mark you down for not listing your units or labeling your axis. Tut tut.

 

But sounds interesting and more dynamic overall. Should allow us to see more range appropriate "threat-ing" from mobs. 

Edited by MDRLOz
Link to comment
Share on other sites

This is a great post. I really appreciate you taking the time to explain the current system, especially doing it in a way that is accessible to non-programmers/ statisticians. I also like that you are changing the system in part due to community feedback, or at least I will assume that community feedback played at least some role in the process even if just as a impetus for taking a second look at accuracy.

The new system looks like it will be a nice change to avoid having those corpus crewmen with detron's slaughter Tenno from across the room. I'm very interested in seeing if this will affect bombards/napalms. I'm guessing it won't affect bombards; though I really hope they could be given a maximum range reduction or make their missiles unable to follow you through a doorway then turn 180 degrees and hit you in the back. That would be great.

Link to comment
Share on other sites

Guys... THIS MEANS NO MORE GETTING INSTAGIBBED BY NULLIFIERS WHILE IN THEIR SHIELDS

*heavy breathing*

 

But yeah that whole "Sneak up on a ballista and it does a 360 noscope on your family jewels" thing going away will be awsome.

Link to comment
Share on other sites

But how does agility affect accuracy? That is what I want to know the most. What are the mechanics of that?

 

Is it straight reduction to the hit chance? Is it additive or multiplicative? Is it applied before or after the range calculation? Is it part of the calculation from the start? What moves reduce accuracy the most, is there even a difference? What is the lowest possible hit chance you can achieve by agility and so on...

 

The ramp up is good, it means that hit and run in and out combat makes a difference for the accuracy. This is the most annoying thing about the old system, that is getting hit THE INSTANT you leave cover no matter how you do so (sprint, jump, fly, whatever). But again, is it based on alertness for each enemy? Or is it reset by losing line of sight? Is it reset instantly?

 

So many questions.

Edited by LocoWithGun
Link to comment
Share on other sites

I'm excited to see new aiming mechanics, but I'm having trouble figuring out just what they are with an unlabeled graph. I'm assuming 1 means 100%, .8 means 80%, etc? And then the marks on the bottom seem like range, but is every tick 5m, 10m, or...?

 

gbUloZU.jpg

Pistol graph

aNjdLK3.jpg

Sniper graph

 

Edited by StrahlTiger
Link to comment
Share on other sites

Good news, I stoped playing because of aimbot, does this mean the bug between archwing and normal gameplay has been resolved ? IIRC since archwing was introduced the npc accuracy went off the charts in the normal gameplay because they had to be aimbot in archwing for a chance to hit anything.

 

So now the accuracy is seperate with each game mode ?

 

thank you

Edited by Tr1ples1xer
Link to comment
Share on other sites

While I love the fact of not getting insta-gibbed by Nullifiers and Ballistas anymore, like others, I still want to know how agility and parkour affects this system, or if it was taken into consideration when creating it. I don't see anything in the post mentioning how it works

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...