probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 3, 2014 3:28:28 GMT -5
So anyone perusing the Ghosts Recoil Plots may have come across something that appears to violate the known Laws of Nature (or at least what has been preached about recoil here on the Den Kirson forums):
Ignoring all the other weird stuff going on with this weapon - the invisible boundary and the square at the top right corner are all well-understood phenomena resulting from how ViewKick and Idle work - I'll point your attention to the slanted lines the second and third shots form (in blue). This appears to be sacrilege, since the plot of every second shot on every gun ever has formed a rectangle due to the way the game draws random velocities for the yaw (horizontal) and pitch (vertical movements) independently. Indeed, if we focus only on ViewKick, that's what typically happens. These plots are from Call of Duty 4 and show the second-shot behavior (ViewKick only) of a few Assault rifles:
So what's going on with the Lynx in Ghosts? Where did the rectangle go? Well, first off, it should be noted that the Lynx (in-game and in a typical simulation) does not behave the way its "normal" ViewKick numbers suggest it should. The Lynx has the following ViewKick numbers: 25 down, 50 up, -25 left, -50 right and 650 CenterSpeed. For comparison, the Barrett in Call of Duty 4 had: 80 down, 95 up, -80 left, -95 right and 1000 CenterSpeed. If this was all there was to the story, then you'd think the Lynx was a tame kitten with only moderate kick, and a plot would suggest the same:
This, of course, is completely, totally, wrongedy-wrong wrong:
Something else had to be happening with the Lynx. While I was trying to figure out what that something was, I noticed that, in the fastfiles for the game, there was a fifth number beside the four that Marvel4 had declared the ViewKick numbers. (Thanks for never mentioning it to me, scrub!) For example, with the Lynx we have
And now we get to the point of this post: what does that number do? Well, first, we need to define what the magnitude of a kick means. For those who don't know, ViewKick works by randomly selecting (angular) velocities in the range prescribed by its "directional" numbers and applies those numbers to the movement of the viewport. So, for example, if you draw a yaw velocity of 60 degrees per second and a pitch velocity of 30 degrees per second, your viewport (camera) will start to rotate right and up at those speeds. (There are many exceptions to this - too many to cover here - but it suffices to make my next point.) The magnitude of a kick is the overall speed of the viewport resulting from the kick. Unfortunately, it's not as simple as adding together the two component velocities. Because the two velocities are perpendicular to each other, we have to use the Pythagorean theorem to arrive at the overall speed of the kick:
In the diagram, the component pitch and yaw velocities (red) are represented as vectors that point up and right, respectively. The magnitude of the kick, then, is just the length of the vector formed by these two component vectors (blue). In this example, our component velocities are 30 and 60, respectively. So to arrive at the magnitude of the overall kick, we calculate the length of the resultant vector as Sqrt[ 30^2 + 60^2 ] = 67.08 degrees per second.
You can probably guess now what the new number is supposed to due based off of this information and the title of the post: the new number guarantees that the kick of the weapon as a magnitude equal to or greater than this number. In the case of the Lynx, this number defines the recoil behavior of the weapon. This is because, even in the worst-case scenario, the Lynx can only receive a kick whose magnitude is Sqrt[ 50^2 + 50^2] = 70.71 degrees per second. Thus, every shot from a Lynx has its kick "scaled up" to meet the minimum magnitude of 100. In this case, both velocities must be scaled by a factor of 1.414, since 50*1.414 = 70.71, and Sqrt[70.71^2 + 70.71^2] = 100. In another example, if the drawn velocities are 30 up and 45 right, then the scale factor would need to be 1.849, since 30*1.849 = 55.47, 45*1.849 = 83.21, and Sqrt[ 55.47^2 + 83.21^2] = 100. In general, the scale factor needed to guarantee the minimum magnitude is reached (in cases where it isn't already) is given by
where x and y are the drawn yaw and pitch, respectively, for that kick, and minMagnitude is the new number. Note that, because we have scaled both velocities by the same number, that the angle at which the gun kicks is preserved, so that it goes at the same angle it otherwise would have.
There are three interesting things to note in the case of the Lynx. First, because every kick is being scaled to meet the minimum magnitude, only the ratio between the chosen yaw and pitch velocities matters in determining how the gun kicks. For example, drawing velocities of 25 (yaw) and 25 (pitch) is exactly the same as drawing velocities of 35 and 35, or 45 and 45, etc. In all these cases, the gun will kick at exactly a 45-degree angle and with a speed of 100 degrees per second. The second thing to note is that this means that 45 degrees is the most likely angle at which the gun will kick, with other angles on either side dropping off in likelihood until the most extreme cases - 25 (yaw) and 50 (pitch) results in a 63.43-degree kick (above horizontal) and 50 (Yaw) and 25 (pitch) result in a 26.56-degree kick.
The Lynx is not the only weapon that has this new minimum magnitude mechanic. Below is a table showing the minimum kick magnitude for every weapon in Ghosts:
SC-2010 | 0 | SA-805 | 0 | AK-12 | 20 | FAD | 12 | R5 Remington | 20 | MSBS | 0 | Honey Badger | 0 | ARX-160
| 30
| Maverick | 15 | | | Bizon | 28 | CBJ-MS | 30 | Vector CRB | 5 | Vepr | 0 | K7 | 15 | MTAR-X | 25 | | | Ameli | 30 | M27-IAR | 12 | LSAT | 13 | Chain SAW | 0 | | | MR-28 | 20 | MK14 EBR | 30 | IA-2 | 20 | SVU | 36 | | | USR | 70 | L115 | 0 | Lynx | 100 | VKS | 0 | Maverick A2 | 90 | | | Bulldog | 0 | FP6 | 0 | MTS-255 | 0 | Tac 12 | 40 | | | M9A1 | 0 | MP-443 Grach | 0 | P226 | 0 | .44 Magnum | 0 | PDW | 40 |
So yeah, that. Good night!
Edit: gosh darn golly gee whiz that is an ugly table. I'll fix it tomorrow never.
|
|
|
Post by kylet357 on Jan 3, 2014 3:50:55 GMT -5
In summed up layman terms: Recoil is higher than what regular stats will make it look like.
|
|
Lexapro
True Bro
PSN: Lexa_pro
Posts: 1,066
|
Post by Lexapro on Jan 3, 2014 8:13:44 GMT -5
If the magnitude is minimized, why are the slanted lines not arcs of a circle?
Also, why does the recoil stop in the upper right hand corner like that?
Is this min-magnitude value modified by viewkick altering attachments and effects?
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 3, 2014 12:18:55 GMT -5
In summed up layman terms: Recoil is higher than what regular stats will make it look like. Yeah, but that would make for a boring, uninformative post: If the magnitude is minimized, why are the slanted lines not arcs of a circle? Also, why does the recoil stop in the upper right hand corner like that? Is this min-magnitude value modified by viewkick altering attachments and effects? 1. Two reasons. The first is that CenterSpeed isn't directed radially, meaning it isn't pointed towards the center (except in the rare case when the kick received is at exactly 45 degrees.) The second is that the acceleration caused by CenterSpeed switches to 1/16th the original value once the viewport starts to move back towards the center in each respective dimension. Also, if you look close enough, you can tell that the band of second shots is slightly curved - look closely at the top of the band. 2. That's due to the invisible boundary that prevents the viewport from rotating more than ten degrees in any direction. You'll hit it pretty easily yourself if you spam the Lynx fast enough. 3. Yes. The easy way to see it is with the Chrome Lined attachment. It increases ViewKick by a factor of 1.2. If it only affected the "usual" ViewKick numbers, then the largest possible magnitude would still be Sqrt[ 60^2 + 60^2 ] = 84.85, meaning the minMagnitude would still be bumped up to 100 on every kick and that the Lynx's recoil wouldn't change. But of course we know it does, and so it's a good assumption that the minMagnitude number is scaled whenever the other four ViewKick numbers are.
|
|
|
Post by ChloeB42 (Alexcalibur42) on Jan 3, 2014 14:34:37 GMT -5
So if 3 is right, then grip is more beneficial on some guns more than others. Interesting
|
|
|
Post by iamthehater on Jan 3, 2014 16:28:01 GMT -5
Amazing work yet again... This is really interesting, I'm assuming adding these numbers to your recoil model would be relatively difficult. It seems accurate recoil plots are becoming increasingly more difficult to recreate. Overly impressive work yet again. I'll double your pay if you start working these numbers for me haha.
|
|
banana
True Banana
Zoro > Law
Posts: 1,577
|
Post by banana on Jan 3, 2014 16:38:53 GMT -5
Amazing work yet again... This is really interesting, I'm assuming adding these numbers to your recoil model would be relatively difficult. It seems accurate recoil plots are becoming increasingly more difficult to recreate. Overly impressive work yet again. I'll double your pay if you start working these numbers for me haha. I'm pretty sure they are already taken into account
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 3, 2014 16:45:04 GMT -5
Amazing work yet again... This is really interesting, I'm assuming adding these numbers to your recoil model would be relatively difficult. It seems accurate recoil plots are becoming increasingly more difficult to recreate. Overly impressive work yet again. I'll double your pay if you start working these numbers for me haha. I'm pretty sure they are already taken into account They are: figuring out what was going on with the Lynx contributed most to the delay in getting the plots out.
|
|
|
Post by kylet357 on Jan 3, 2014 18:57:15 GMT -5
So if 3 is right, then grip is more beneficial on some guns more than others. Interesting Hasn't it always been like that though?
|
|
pachiderm
True Bro
Chewing some serious leaves
Posts: 647
|
Post by pachiderm on Jan 3, 2014 19:49:18 GMT -5
Why do some of those weapons have minimum kick values of zero? Does that mean they could potentially fire a shot and not kick at all? Or am I not understanding how this works?
|
|
|
Post by Voice from the Basement on Jan 3, 2014 20:05:17 GMT -5
Why do some of those weapons have minimum kick values of zero? Does that mean they could potentially fire a shot and not kick at all? Or am I not understanding how this works? I suppose it actually means that when you play with these guns, you can actually forgot the existence of Minimal Magnitude mechanic – your gun will use normal ViewKick numbers as it was in previous games. Sorry if I'm not right.
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 3, 2014 20:52:48 GMT -5
Why do some of those weapons have minimum kick values of zero? Does that mean they could potentially fire a shot and not kick at all? Or am I not understanding how this works? I suppose it actually means that when you play with these guns, you can actually forgot the existence of Minimal Magnitude mechanic – your gun will use normal ViewKick numbers as it was in previous games. Sorry if I'm not right. clown is right. It's a minimum, meaning if that number is zero then every kick meets that minimum and will be left unscaled.
|
|
|
Post by sirknumskull on Jan 5, 2014 10:37:15 GMT -5
Good work! Basically a recoil plot should have a circular hole in the center with the radius equal to the guns minimum magnitude (after recoil altering effects ofc). Is that correct?
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 5, 2014 10:50:07 GMT -5
Good work! Basically a recoil plot should have a circular hole in the center with the radius equal to the guns minimum magnitude (after recoil altering effects ofc). Is that correct? No, because the minimum kick is the smallest possible velocity at which your view can rotate, not the smallest deflection distance. If CenterSpeed is high enough (or the time between shots long enough) the weapon may still recenter before the next shot is fired.
|
|
|
Post by sirknumskull on Jan 5, 2014 11:13:33 GMT -5
Thanks for the clarification!
May some guns have a hole in the middle? I'm looking at the ARX-160: high min magnitude with fairly high rpm. Or is that completely ruled out by some mechanic I fail to comprehend?
|
|
|
Post by ChloeB42 (Alexcalibur42) on Jan 5, 2014 12:16:35 GMT -5
Thanks for the clarification! May some guns have a hole in the middle? I'm looking at the ARX-160: high min magnitude with fairly high rpm. Or is that completely ruled out by some mechanic I fail to comprehend? What do you mean "hole" in the middle? The first shot is always somewhere in the middle. Because of that it will always have shots in the middle, plus the ARX has reduced recoil on first 2 shots
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 5, 2014 17:04:49 GMT -5
Thanks for the clarification! May some guns have a hole in the middle? I'm looking at the ARX-160: high min magnitude with fairly high rpm. Or is that completely ruled out by some mechanic I fail to comprehend? The plots that are published here account for GunKick and Idle Sway as well as well as ViewKick. It may be the case that, in some of the 10,000 simulations, the weapon "doubled-back" and allowed the weapon to fire closer to center than what ViewKick on its own would. Also, any off-center kicks (with respect to each dimension) that are directed towards the center have their velocity reduced to 1/16th the original value. For example, say your viewport is sitting left of center after your first shot (i.e., as you fire the second). If you draw a velocity of 48 right for that shot (after minMagnitude is facored in), that velocity is reduced all the way down to 3. This can help to keep the viewport from fully recentering but still be closer than it was to the origin when the next shot is fired. Finally, ViewKick always starts each shot fired with the newly drawn velocity. So even when CenterSpeed has given the viewport significant return speed, if the next velocity drawn for the next shot is small - which it likely is if it is directed back towards the center, for the reasons I mentioned already - then that recentering momentum is lost as the viewport begins a new trajectory at the new velocity. I'm not at home right now, but when I get back I can concoct and plot a clear-cut example of a weapon that always moves away from center and exhibits the behavior you're describing.
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 6, 2014 22:58:20 GMT -5
Thanks for the clarification! May some guns have a hole in the middle? I'm looking at the ARX-160: high min magnitude with fairly high rpm. Or is that completely ruled out by some mechanic I fail to comprehend? Here's the example I promised: The numbers I used are: - fireTime = 0.07 (857 RPM)
- adsViewKickPitchMin = 10
- adsViewKickPitchMax = 60
- adsViewKickYawMin = 60
- adsViewKickYawMax = -60
- adsViewKickMinMagnitude = 70
- adsViewKickcenterSpeed = 1500
Note how I had to remove GunKick and Idle and how high I set the minMagnitude number to achieve that gap.
|
|
|
Post by Voice from the Basement on Jan 7, 2014 13:39:30 GMT -5
Small question: GunKick's "adsGunKickSpeedMax" is just the same as Minimal Magnitude for the ViewKick, although it actually reduces (or doesn't change it if it's lower than adsGunKickSpeedMax) the velocity to the given one, not increases? And yes, is it used for both dimensions simultaneously?
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 7, 2014 15:07:32 GMT -5
Small question: GunKick's "adsGunKickSpeedMax" is just the same as Minimal Magnitude for the ViewKick, although it actually reduces (or doesn't change it if it's lower than adsGunKickSpeedMax) the velocity to the given one, not increases? And yes, is it used for both dimensions simultaneously? "adsGunKickSpeedMax" is just a cap on how fast the viewmodel (weapon) can rotate due to GunKick (in each dimension). Basically, it's a failsafe against the gun accumulating too much speed, as GunKick preserves the kick velocity from the previous shot and adds it to the next.
|
|
|
Post by sirknumskull on Jan 13, 2014 18:05:08 GMT -5
Little late, but still: thank you!
I realised that you had already posted an example of a gun with the behaviour I mentioned - the Lynx.
|
|
|
Post by Voice from the Basement on Jan 16, 2014 8:00:28 GMT -5
Small question: what happens if I receive 0 both for yaw and pitch Viewkick? Nothing?
|
|
|
Post by Voice from the Basement on Jan 16, 2014 9:46:39 GMT -5
And what about direction of the kick?
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 16, 2014 11:03:05 GMT -5
And what about direction of the kick? Good question. I suppose it would depend on how the minMagnitude was coded into the game. My guess is that, somehow, the answer would turn out to be the square root of half of minMag for both yaw and pitch - the magnitude of the kick would still come out to minMag. Or, failing that, the values would both stay at zero. Heck, it might even crash the game! Edit: Had a half-baked thought in there that needed a little more time in the oven.
|
|
|
Post by Voice from the Basement on Jan 16, 2014 13:56:23 GMT -5
Heck, it might even crash the game! Yes, because, according to your formula, I should devide by ze… NOT YET! It would be funny if there were a feature that, if you have totally zero ViewKick numbers with existing MinMagnitude (≠0), the game crashes. Maybe that's the reason I crash sometimes?
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 16, 2014 14:01:13 GMT -5
Yes, because, according to your formula, I should devide by ze… NOT YET! It would be funny if there were a feature that, if you have totally zero ViewKick numbers with existing MinMagnitude (≠0), the game crashes. Maybe that's the reason I crash sometimes? Right, but my formula isn't necessarily the only way to code this into the game and achieve the same effect. But yeah, that'd be pretty, uh... entertaining (in a way).
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 28, 2014 22:25:40 GMT -5
Updated with minimum magnitude statistics for the Maverick and Maverick A2.
|
|
|
Post by Voice from the Basement on Jan 29, 2014 2:36:25 GMT -5
You forgot about AK-12 (20 instead 18, according to Marvel4).
|
|
probaddie
True Bro
You're triggering my intelligence
Posts: 11,043
|
Post by probaddie on Jan 29, 2014 2:44:25 GMT -5
You forgot about AK-12 (20 instead 18, according to Marvel4). Fixed. Thank you for pointing that out.
|
|