Firing Accuracy Testing
This page is a scratch page re: testing how Firing Accuracy works. Results will be summarized back to relevant pages when done. Page initiated by User:MikeTheRed, but anyone is welcome to jump in. This is an informal page.
Notes & Nomenclature:
- FAT is short for Firing Accuracy Testing. Sorry... it just worked out that way!
- FFA is Final Firing Accuracy - the quoted percent seen when about to fire a weapon. Otherwise, there is soldier FA and weapon FA, plus other factors as seen in Accuracy formula and Firing Accuracy. For this work, only soldier and weapon accuracy have been hacked/tested, unless otherwise noted.
- Unless otherwise noted, all testing used:
- Autofire
- Mutons
- A "direct" line of fire (i.e., not a diagonal shot)
- A clear field (no obstacles)
- Same level (both soldier and Muton on ground)
Background
There's been a lot of conjecture about Firing Accuracy on the wiki and in X-COM forums. I couldn't recall much actual testing, so here we go.
- Soldiers can have FA from 40 to 125.
- Common weapons have the following FA:
Weapon Auto Snap Aimed Heavy Plasma 50 75 110 Std. Rifle 35 60 110 Laser Rifle 46 65 100 Std. Pistol -- 60 78 Laser Pistol 28 40 68
If you want to hack files yourself, here are bytes of interest. But also see BombBloke's Map Editor, which makes a lot of this cake.
"Max" means a large number; "z" (122) is the largest single-keystroke value when using MS EDIT:
UNITREF.DAT, record length 124: Offset Description 23 Firing Accuracy. Decreased by injury, so heal all your soldiers. 12 Current TUs - 250 for soldiers, 0 for aliens 25 Base TUs - 99 for soldiers, 0 for aliens 35 Energy Recharge - Max all 15 Current Energy - Max all 27 Base Energy - Max all 45 Energy Usage - Max all 18-22 Current Armour, F/L/R/B/U - Max all so nobody gets hurt. 29-33 Base Armor - Max for all 63-68 Fatal Wounds - Heal everybody 81 FA (hits) counter - Make sure it's zero 57 Psi strength - Aliens to 0, soldiers maxxed 37 Psi skill - Same thing 13 Current health - Set to Base Health. (You are injured if Current Health < Base Health.) 26 Base health 17 Strength - If you want to carry a lot, eat yer spinach. OBPOS.DAT, reclen 16: 0 Object type (ref. To OBDATA Row # id) - Edit ammo quantity for all weapons you're using. It's a lot easier to just e.g. set all Pistol clips (Object Type 1) to 250 than to try to figure out who's holding what. 8 Ammo quantity - Set to 250 \GEODATA\OBDATA.DAT, reclen 54: Row 0 Pistol Row 1 Pistol clip Row 34 Heavy Plasma Row 35 Heavy Plasma clip 22 Average weapon strength - Set to 1 (no damage since armor is so high) 31 Ammo damage type. 0=AP, 3=Laser, 4=Plasma. FYI (shouldn't matter) 32-34 FA, Auto/Snap/Aimed. Here's what counts 35-37 Percent TUs, for the same. Set to 1. This compares against soldiers' Base TUs and is rounded down. 1 Percent of 99 rounded down would happen to be 0 TUs :) 38 Clip size - Set to 250. Might be irrelevant after setting OBPOS, shrug. 49 Ammo boolean - Keep it set for clips
Note that because OBDATA is in \GEODATA, you have to seperately put it in any pkzip savegame backups you might be using. Also note that it's reloaded each time you start a combat for DOS X-COM, but it might not be for WinCE (GEOSCAPE and TACTICAL are one .EXE for WinCE). Be that as it may... if you e.g. set Weapon Accuracy to 100 and leave it there, then soldier FA decides your FFA.
For most testing (unless trying to watch each shot), set your Fire Speed to 6. And if you're using DosBox with DOS X-COM: Crank your CPU cycles way up, 30k or higher (Control-F12). Bullets hit practically instantaneously. (Does the WinCE version have a similar thing?)
A savegame that incorporates most everything above is Media:FAccTest1.zip. All desert dunes have been levelled so you've got clear shooting with the four soldiers in upper right.
Test 1: Benchmark
I chose a middling FFA:
Soldier Accuracy 90% Weapon Accuracy 50% Final FA 45%
Here are the results for FFA 45%:
Observed Percent Hits Observed Calced %Miss Model Versus Dist Min Ave ± SDs Max Ss Shots Tot N Spread Spread =Hit % Hit Observed 1 98.8% 99.6% ± 0.6% 100.0% 4 250 1000 0.0 2 74.8% 80.2% ± 3.3% 86.0% 8 250 2000 0.9 1.0 68% 80.5% +0.3% 3 62.4% 68.0% ± 3.3% 72.8% 8 250 2000 1.3 1.5 45% 66.7% -1.3% 5 53.2% 58.6% ± 2.4% 61.2% 8 250 2000 3.0 2.5 27% 55.6% -3.0% 10 48.8% 51.3% ± 1.9% 53.8% 9 240 2160 5.0 5.0 14% 47.3% -4.0% 20 38.0% 44.2% ± 4.2% 48.8% 8 250 2000 11.0 10.0 7% 43.1% -1.1% 40 36.4% 41.5% ± 3.4% 46.8% 8 250 2000 17.0 20.0 3% 41.1% -0.4%
Where
- Dist is distance from soldier to Muton; 1 means, soldier is directly adjacent to target (Soldier is 0, Muton is 1 away).
- Stats are explanatory. SDs = Standard Deviation of sample
- Ss = Soldiers, each of whom made Shots shots, for a Total N as shown.
Example: For Distance 1, 1000 shots were made (4 soldiers x 250 ammo), of which 996 were hits (Unitref[81]). Thus, Average Percent Hits is 99.6%. The single soldier who missed the most (Min Hits) had 247 hits (247/250=98.8%). Etc. Min, Max, and SDs are included as estimates of the variability I saw (and you might, too). Average is always total hits divided by total shots. Then comes some model-related info, explained below:
- Observed Spread is how "wide" I saw the farthest misses miss the target by, to his side. In other words, if the Muton were a target on a firing-range wall, I saw misses as far as e.g. approx. 2.5 tiles to the side of the alien's center (a "radius"), which makes for a total "diameter" of 5 tiles centered on (and including) where the alien target was on the firing-range wall. Diameters are used instead of radii because they're easier in the math model.
- Calculated Spread is the linear model calculation estimating the observed spread.
- Percent Miss = Hit is, as per the model below, if 100%-FFA% of shots are "expected" to miss, but the target takes up X percent of the firing-range wall, how much of those equally-distributed misses then become "accidental" hits.
- Model Percent Hit is the total of pre-determined hit percent plus accidental hit percent. (It's not e.g. 45% plus 68% for distance 2 because only 55% of shots are missed; only 68% of 55% adds to 45%. But I get ahead of myself; read model details.)
- Versus Observed is Model Percent Hit minus Observed Average Percent Hits.
As can be seen, this Final Firing Accuracy of 45% is in fact only 45% at a distance of approx. 20.
Digression re: Final Firing Accuracy as quoted in the game
It's clear that the FFA seen in the game (the pop-up when preparing to fire a weapon) is some sort of general statistic. It can't possibly apply to actual situations. Consider that you might be faced by five aliens. The dudes are at greatly differing distances, with some half-blocked, others not. Or maybe even, there isn't a single target to be hit. What are you quoted? The same old FFA, regardless of anything going on. Or not going on.
Final Firing Accuracy has always been found to follow the Accuracy formula - a formula which includes zero target information.
Although FFA is devoid of target information, of course it had to have in-game relevancy. And distance is an important part. What's the most relevant distance in a game? Very near? Very far? At the moment, I lean toward FFA being the likeihood of hitting an average-sized alien at distance 20 on an open field (outdoors, no blockage).
So. FFA is a generalized number. Never intended to show specific FA versus a target. As work progresses, I/we hope to pin down what the programmers considered a/the commonly-encountered game situation.
Notes
Currently (11/17/06), ideas on FA testing are being discussed in BombBloke's StratCore thread on his great automation tools. Please drop by and jump in!