Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
568
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. The scope mouse sensitivity multipliers are completely incorrect for the different scope magnifications present in the game. This severely impacts muscle memory for making shots while zoomed in between different scopes.
  2.  
  3. Currently, it seems that the DefaultFOV is used together with a multiplier (on a per-sight basis) to determine the zoomed in FOV for a scope.
  4. The mouse sensitivity is also adjusted the same amount. For example, if a scope is supposed to adjust the FOV to 35% of the original FOV, then it reduces
  5. the mouse sensitivity to this amount as well. But FOV is not linear in the view space! So this will not result in similar feel. To keep the same "sensitivity" at the zoomed in level, you must divide the existing sensitivity by the change in focal length. Currently, this is not what happens, and as a result every single sight feels different zoomed in.
  6.  
  7. Example: zooming in on a "1x" sight, which decreases FOV by 10% in the game (not actually 1x), actually cuts the sensitivity by nearly half. So your zoomed in muscle memory is completely different from your hipfire memory.
  8.  
  9. A "2x" scope (if it were to exist) should decrease the sensitivity by half. A "3x" scope should decrease the sensitivity to a third.
  10. Using the scheme implemented in game, if a scope has an FOV multiplier N, where 0 < N <=1, then the ScopeFOV is:
  11.  
  12. ScopeFOV = DefaultFOV*N
  13.  
  14. and the sensitivity is:
  15.  
  16. HipfireSens = MouseMultiplierSensitivity * MouseMultiplierSensitivitySlider
  17. ScopeSens = HipfireSens * XFactorAiming * XFactorAimingSlider * N
  18.  
  19. Where it really should be (where cot denotes cotangent):
  20.  
  21. DefaultFocalLength = cot(DefaultFOV/2) (DefaultFOV is divided by 2 because we're talking about the angle from the center of the screen to the top edge)
  22. ScopeFocalLength = cot(ScopeFOV/2) (ScopeFOV from the original calculation)
  23.  
  24. Why the cotangent? Consider the following diagram of the screen (apologies for poor ASCII art):
  25.  
  26. / |
  27. / |
  28. / | y
  29. / t |
  30. ------------------
  31. x
  32.  
  33. Assume y spans from the middle of the screen to the top edge and x is the focal length of the in game camera. t is the angle between the middle of the screen
  34. and the top edge of the screen (the vertical FOV divided by 2).
  35. The cotangent of t will give the ratio of x to y. Assuming y is 1, as it scales linearly with vertical resolution anyway, we get cot y = x, the focal length.
  36.  
  37. Now, we can determine the magnification for the scope:
  38.  
  39. ScopePower = ScopeFocalLength/DefaultFocalLength
  40.  
  41. And finally, the correct multiplier for the scope sensitivity:
  42.  
  43. ScopeSensCorrect = HipfireSens / ScopePower
  44.  
  45. So, for an ACOG scope which is supposed to reduce FOV to 35% of the original, we would obtain the following values, assuming a DefaultFOV of 60:
  46.  
  47. DefaultFOV = 60
  48. ScopeFOV = 21 (from 60 * 0.35, the multiplier for ACOG)
  49.  
  50. DefaultFocalLength = cot(60/2) = cot(30) = 1.732051 (approximately)
  51. ScopeFocalLength = cot(21/2) = 0.540569 (approximately)
  52.  
  53. ScopePower = 1.732051 / 0.540569 = 3.204125 (approximately)
  54.  
  55. Indeed, the ACOG actually has approximately 3.2x magnification at 60 FOV. You can test this in game yourself.
  56. And the FOV of the ACOG, like all scopes, will vary depending on your DefaultFOV value. Choosing smaller DefaultFOVs will result in more
  57. scope zoom than higher DefaultFOVs.
  58.  
  59. Finally:
  60.  
  61. ScopeSensCorrect = HipfireSens / 3.204125
  62.  
  63. This will achieve the correct sensitivity for the scope using the game's given FOV.
  64.  
  65. Examples of games that implement this correctly are Battlefield 4, Battlefield 1, Battlefield V, Apex Legends, and Kovaak's FPS Aim Trainer.
  66.  
  67. To test my theory at 74 DefaultFOV, use the following settings in the config:
  68.  
  69. DefaultFOV=74
  70. XFactorAiming=0.015509
  71.  
  72. Set the ADS slider to 57 when using ACOG and 94 when using a 1x scope. This will result in very similar feel between the two scopes, despite the radically different zoom levels.
  73.  
  74. Now that Kali is in the game, with a 5x and 12x variable optic, switching between these slider values will no longer become practical.
  75.  
  76. Some simple suggestions to fix this:
  77.  
  78. * Provide sliders for all scope magnification levels in game, including 1x, 2.5x, 3x, 5x, and 12x
  79. * Implement the above formula for mouse sensitivity changes between different scopes
  80. * Provide finer grained XFactorAiming values in the config file, one per scope magnification (1x, 2.5x, 3x, 5x, and 12x)
  81.  
  82. Thank you.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement