Jump to content
Jade Shadows: Share Bug Reports and Feedback Here! ×

Ideas for enemy accuracy


Recommended Posts

TL;DR: The current system for enemy accuracy might benefit from a rework, and I’m wondering how many others feel the same. I dreamed up an alternate system that incorporates an element of enemy reaction time so that unpredictable movement becomes the biggest factor. Then I learned Python. I tried keeping this short, but you can see how that turned out.

Currently, Warframe’s enemies seem to hit or miss depending on a dice roll and a chart that dictates how accurate they are at certain ranges. There are other factors, but the system is very opaque and mysterious. It is also very artificial, with accuracy changing based on what state the Tenno is in (jumping, aim gliding, running, etc.) rather than how the Tenno is actually moving through the game world. A system like this is easy to imagine. The computer ultimately controls everything, so the AI with hitscan weapons will always hit their target unless RNG comes along and forces them to, right? Not necessarily.

Although I can’t help but feel vain in presuming to know how the game should work, I don't want to complain without presenting alternatives. So here's a very long alternative. I imagine a system in which the target’s current position is not taken into account. Instead, the attacker aims for a point extrapolated from the target’s position and velocity from an earlier moment in time. Depending on how responsive an enemy is meant to be -- that is, how good their 'tracking' is -- it may be given an earlier or more recent image. A shield lancer might track a somersaulting Tenno pretty well with its nimble little gun, so it would use a 180ms old image. A heavy gunner, with her unwieldy machine gun, may use one from 450ms ago. Rather than a formula giving them a chance of missing the point they aim at, you can trick them into aiming at an incorrect point.

Just to be clear, this is not equivalent to the enemies targeting the space you occupied a moment ago. They imagine where you should be now based on a moment in the past. The result is a system by which abrupt changes in direction can reliably cause enemies to miss, but uniform linear motion will not fool them. I would argue that this system is somewhat realistic, as it represents one of the main factors that cause a real marksman to miss a moving target, but I do not advocate for it because it is realistic. Instead, I find it appealing for its gameplay benefits. In my imagination, this enemy behavior accomplishes the following:

  1. Lower the role of RNG in enemy accuracy, placing more control and responsibility in the hands of the player.
  2. Implement a generalized and organic system for evading enemy fire. Imagine Jokket the opticor-toting corpus, with a long charge time and poor tracking. You see the faint preliminary beam following you as he charges the laser, so you make a sudden stop. He is unable to respond in time with his weighty weapon, so the blast of energy sears the space you would have stumbled into.
  3. Encourage a baseline level of movement during gameplay. You can avoid some fire with just a little bit of motion, while even the most dim-witted and sluggish enemies will consistently hit a stationary Tenno.
  4. Allow each enemy's tracking ability to be dynamically adjusted in response to events in combat.
  5. Leave accuracy open to other influences, like a more standard dispersion mechanic. After all, it is entirely appropriate for an enemy not to shoot with pinpoint precision
  6. Open enemies and combat to new design possibilities. Maybe all status effects inflict a stacking penalty to an enemy's tracking to represent how much of a bad day they're having. If I were somehow frozen and on fire at the same time while simultaneously hemorrhaging from puncture wounds filled with radioactive ebola, my marksmanship would not be on point.
  7. Reward the player for moving like a ninja in combat and making full use of the game's impressive parkour system.

Just for fun, and perhaps some added clarity, I made some gifs of a 2D mockup. The orange stationary circle is an enemy. The dark blue circle is a moving Tenno, while the light blue circle trailing behind is a 'ghost' retrieved from a point in the Tenno's past. Depending on how bad the enemy's tracking is, the program could retrieve a ghost from up to a second in the past. The hollow grey circle is the Tenno's position as imagined by the enemy based on the ghost's velocity and age. The thin line flashes yellow when the enemy is on target to hit the real Tenno. The images on the left are made with a constant tracking delay of 250ms, while the images on the right demonstrate a dynamic adjustment of the tracking attribute.





Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...