Welcome to symthic forums! We would love if you'd register!
You don't have to be expert in bit baking, everyone is more than welcome to join our community.

You are not logged in.

Hey! If this is your first visit on symthic.com, also check out our weapon damage charts.
Currently we have charts for Battlefield 3, Call of Duty: Black Ops 2, Medal of Honor: Warfighter and Call of Duty: Modern Warfare 3

  • "3VerstsNorth" started this thread

Posts: 1,614

Date of registration
: Apr 12th 2013

Platform: PC

Location: Guilin Peaks, Finland

Battlelog:

Reputation modifier: 14

  • Send private message

1

Wednesday, May 8th 2013, 11:47am

What kind of noise is Spread?

I've been recently playing around with math/simulations quite a bit to see the statistics of H & V recoil and their interaction with spread. This of course then depends on how spread in implemented in BF3. The aim of this thread is to see if there is an overall consensus about spread mechanics and to then explore how this affects our interpretation of the spread values / gun.

So, each gun is given a minimum spread and a spread increase per shot. Thinking of a continuous burst in isolation of other game activities affecting spread, the maximum spread for any given shot is given by

MaxSpread = MinSpread + NumberOfShots * SpreadIncrease,

where NumberOfShots, is the number of shots before the current shot.

To grasp how this number affects shooting in-game, we need to make assumptions about how spread is implemented in game code. I presume that Symplot is based on these too.

Assumption #1: Spread value is the radius within which random values are obtained. (Discussed earlier here.)

Assumption #2: A given realization of spread is obtained by creating a vector that in polar coordinates has a random angle (-pi...+pi) and a length ranging with from 0 to Spread with an uniform random distribution. (As implied by tehmoriz here.) In an equation for spread around the aim, this assumption means that

Spread(r,theta) = MaxSpread * rand(0,1) * exp(i * theta),

where the term r = MaxSpread*rand(0,1) is an uniform probability for every distance from the aimpoint for MaxSpread. Exp(i*theta) just expresses the random phase angle.

Question: Is there any way to test these assumptions in-game or from code or by personal communications w/DICE? Does the Symthic community agree with these premises?

If these assumptions are correct, there are interesting implications on the statistics of Spread distribution. Please look below:



1. "Cumulative Fraction of Hits": r = MaxSpread*rand(0,1) means that every distance interval contributes an equal amount of hits.

2. "Cumulative Area of Inner Discs": because the area inside a circle is A = pi*r^2, the area increases much slower than the amount of hits. More exactly, the fraction of total area is proportional to the square of radius. Red box is for radius = 0.25 and shows that the area inside this radius is 6.25 % (0.25^2) of the total area. Likewise, the green box shows that a radius of 0.5 encompasses 25% (0.5^2) of the total area.

3. "10000 Hits" shows random values created with this mechanism. The points would correspond to shot with an arbitrary gun aimed at (0,0) having a MaxSpread = 1 degrees. Every annulus of a given width has an equal amount of hits regardless of its proximity to 0,0 (see 1.) and hence the Hits are much more dense in the center than in the surroundings. The red and green lines again show radii 0.25 and 0.5, and correspondingly contain 25 and 50% of all Hits.

4. "Distribution of X values": a histogram of X values (think horizontal recoil and spread!) of the circular distribution is pointy and decays towards larger radii. If spread values were uniformly distributed in the circle: this distribution would be flat. It can be made flatter by changing the equation r = MaxSpread*rand(0,1) to r = MaxSpread*SQRT(rand(0,1)) (...think DICE & noobification of BF). Can we dissociate these alternatives? The distribution is important to know, because pointy and flat distributions interact in different ways with the Normal distribution (H Recoil is Normally distributed ... I'm getting back to this later).

tl;dr, if the assumptions are correct, spread (excluding recoil) can be understood so that N% (say, 25%) of all hits are around the aimpoint within the radius of N% (25%) of the current Spread value. Comments?
"Less is more? How can that be? How could less be more, that's impossible. More is more." Yngwie Malmsten
"Many bullets help." WoopsyYaya
"most rhetorically legitimate ad hominem 2015" ToTheSun!

This post has been edited 4 times, last edit by "3VerstsNorth" (May 8th 2013, 2:27pm)


Suiizide

Resident Pro

(744)

Posts: 2,784

Date of registration
: Dec 30th 2011

Platform: PC

Location: Australia

Battlelog:

Reputation modifier: 10

  • Send private message

2

Wednesday, May 8th 2013, 12:23pm

Question about this formula: MaxSpread = MinSpread + NumberOfShots * SpreadIncrease

If you fired one shot, with a spread increase of 0.1 and a base spread of 0.2, your shot would be fired at 0.2 spread, but the max spread ends at 0.3. Are the hits in the graph there accurately represented by that? I know that the effect over such a large sample size is probably negligible, but still...

Sig

The T-90 is a challenge, the BTR-90 is going to kill everyone in a 100 meter radius and go flying off a hill into a helicopter only to drive off while the corpse of the Cobra it just went through is being dragged through the beach on Oman.
The game will include a fully automatic An-94 launcher, literally firing Abakans at 600 RPM.
clicky
I expect rep.
If J3ST3R is dead, I think I just heard the entity that is grammar let out a sigh of relief...
To say nothing of the inordinate expense incurred by adding functionality to the gun that I may not ever use.
IKEA is the problem! Its all Desksdesksdesksdesksdesksdesksdesksdesks but oh, oh the second you say you want a table they chuckle and say "A table? You mean a kitchen table? How about a bedside table? Oh! Oh you must mean a dining room table!" and I'm like "NO! NO I JUST WANT A STANDARD, BLACK, BORING TABLE!" and they look at me then smile and go "You mean this? 170..." :(
Also, why does the RANDOM thread have a topic?

Why do fish have legs?
Fucking dutch.


  • "3VerstsNorth" started this thread

Posts: 1,614

Date of registration
: Apr 12th 2013

Platform: PC

Location: Guilin Peaks, Finland

Battlelog:

Reputation modifier: 14

  • Send private message

3

Wednesday, May 8th 2013, 12:38pm

I presume that each shot is fired at the spread value cumulated across preceding shots. 1st shot: MinSpread, 2nd shot: MinSpread + SpreadIncrease, 3rd shot: MinSpread + 2 * SpreadIncrease.

In the formula, NumberOfShots indicates the number of shots fired before the current shot. Main post is now edited for clarity.

The plot shows an arbitrary shot fired with a spread of 1. To mentally scale it for a specific gun/shot, just replace the -1 ... +1 x/y-axis values with -MaxSpread ... +MaxSpread.
"Less is more? How can that be? How could less be more, that's impossible. More is more." Yngwie Malmsten
"Many bullets help." WoopsyYaya
"most rhetorically legitimate ad hominem 2015" ToTheSun!

Miffyli

Symthic Developer

(6,073)

Posts: 3,644

Date of registration
: Mar 21st 2013

Platform: PC

Location: __main__, Finland

Reputation modifier: 16

  • Send private message

4

Wednesday, May 8th 2013, 1:27pm

Quoted

Is there any way to test these assumptions in-game or from code or by personal communications w/DICE

In-game testing for this is problematic simply because of randomish recoil (right?) plus it wouldn't give reliable values. Checking game code is possible but I guess it's part of compiled code so it would require reverse engineering skills to do that. As for asking DICE, I have no idea.

About the assumption. Couldn't it also be recursive formula? Instead of increasing number of shots it sums up last calculated spread and new spread or something similar.
Links to users' thread list who have made analytical/statistical/mathematical/cool posts on Symthic:
  • 3VerstsNorth - Analysis of game mechanics in BF4 (tickrates, effects of tickrate, etc)
  • leptis - Analysis of shotguns, recoil, recoil control and air drag.
  • Veritable - Scoring of BF4/BF1 firearms in terms of usability, firing and other mechanics.
  • Miffyli - Random statistical analysis of BF4 battlereports/players and kill-distances. (list is cluttered with other threads).
Sorry if your name wasn't on the list, I honestly can't recall all names : ( . Nudge me if you want to be included

  • "3VerstsNorth" started this thread

Posts: 1,614

Date of registration
: Apr 12th 2013

Platform: PC

Location: Guilin Peaks, Finland

Battlelog:

Reputation modifier: 14

  • Send private message

5

Wednesday, May 8th 2013, 1:43pm

Quoted

Is there any way to test these assumptions in-game or from code or by personal communications w/DICE

In-game testing for this is problematic simply because of randomish recoil (right?) plus it wouldn't give reliable values. Checking game code is possible but I guess it's part of compiled code so it would require reverse engineering skills to do that. As for asking DICE, I have no idea.

About the assumption. Couldn't it also be recursive formula? Instead of increasing number of shots it sums up last calculated spread and new spread or something similar.


Agree about in-game, although there are symthicians that have so good recoil compensation skills that testing with a low-recoil gun "quantifiable" conditions (known distance from wall and known FOV) could actually deliver data for dissociating the radial noise (here) vs. uniform noise hypotheses.

Asking DICE would be easiest ofc if anyone has the connection.

Re recursivity, I doubt it because 1. it would turn spread from noise into a random walk which could interact really weirdly with the random walk of aimpoint (H Recoil) and 2. programming spread is easiest with the equation above and I know that programmers are fucking lazy when it comes to getting the job done in a simple vs. in a complex manner :D . On the other hand, in the absence of evidence, anything's possible.
"Less is more? How can that be? How could less be more, that's impossible. More is more." Yngwie Malmsten
"Many bullets help." WoopsyYaya
"most rhetorically legitimate ad hominem 2015" ToTheSun!

Posts: 4,259

Date of registration
: Apr 6th 2012

Platform: PC

Location: From the heart of Europe.

Battlelog:

Reputation modifier: 16

  • Send private message

6

Wednesday, May 8th 2013, 2:12pm

I think it was implicitly confirmed somewhere in the plotic thread. However for long bursts you can see how the angle is not independent of the previous shot.
[Aristocrat's Shoes]
TLDR -
Teamwork is where players function by themselves, but their effectiveness is multiplied when they work together. Not a checklist of "did we bring a healer so we can start playing?"

  • "3VerstsNorth" started this thread

Posts: 1,614

Date of registration
: Apr 12th 2013

Platform: PC

Location: Guilin Peaks, Finland

Battlelog:

Reputation modifier: 14

  • Send private message

7

Wednesday, May 8th 2013, 2:53pm

I think it was implicitly confirmed somewhere in the plotic thread. However for long bursts you can see how the angle is not independent of the previous shot.


Ok, interesting, thanks! The dependence on the previous shot(s) could still be caused by the H recoil though. H recoil does have an iterative formula and which will always lead to shot-to-shot correlations even with perfect compensation of the mean H recoil.
"Less is more? How can that be? How could less be more, that's impossible. More is more." Yngwie Malmsten
"Many bullets help." WoopsyYaya
"most rhetorically legitimate ad hominem 2015" ToTheSun!

Posts: 4,259

Date of registration
: Apr 6th 2012

Platform: PC

Location: From the heart of Europe.

Battlelog:

Reputation modifier: 16

  • Send private message

8

Wednesday, May 8th 2013, 2:55pm

Fire a LMG with low h recoil on a bipod. That shit goes in fucking circles.
[Aristocrat's Shoes]
TLDR -
Teamwork is where players function by themselves, but their effectiveness is multiplied when they work together. Not a checklist of "did we bring a healer so we can start playing?"

Aenonar

Data Analyzer

(2,795)

Posts: 7,863

Date of registration
: Dec 16th 2011

Platform: PC

Location: Sweden

Battlelog:

Reputation modifier: 20

  • Send private message

9

Wednesday, May 8th 2013, 3:23pm

Fire a LMG with low h recoil on a bipod. That shit goes in fucking circles.

Yeah, either it's a graphical glitch or spread is going clockwise

Quoted

(14:06:57) Riesig: I should stop now. People might get sig material again

  • "3VerstsNorth" started this thread

Posts: 1,614

Date of registration
: Apr 12th 2013

Platform: PC

Location: Guilin Peaks, Finland

Battlelog:

Reputation modifier: 14

  • Send private message

10

Wednesday, May 8th 2013, 3:51pm

Ok, let's take 50 rounds of bipodded M60. Without spread, the aim location will wander around like this:



When the horizontal component (vertical ignored for clarity here) spread is added, the aimpoint+spread will look like this:



So, already after ~5 shots, spread dominates the angle where bullets end up flying (I can compute this more precisely later...). If hitmarks on wall are not spread all over (= uncorrelated), the spread mechanism is not the one assumed here.

...time to go shooting at walls?
"Less is more? How can that be? How could less be more, that's impossible. More is more." Yngwie Malmsten
"Many bullets help." WoopsyYaya
"most rhetorically legitimate ad hominem 2015" ToTheSun!

This post has been edited 1 times, last edit by "3VerstsNorth" (May 8th 2013, 8:20pm) with the following reason: Spread in lower figure now has the correct SpreadIncreasePerShot (was 0.12, now 0.012 when considering the 0.1 multiplier from bipod).