Talk:Proposals/Obsolete Proposals/Stats, Experience and Mission Count in 2.5-dev

From UFO:AI

Most of the data for this is available at the following URL, which I can't link directly because of the anti-spam filters. Reconstruct it:

docs [dot] google [dot] com/spreadsheet/ccc?key=0AoMT-GwBufRGdDMwanlOeVBPYmVIMXZPSGN6MldORUE#gid=3

Calculating Accuracy

Accuracy and weapon skills, don't improve effective accuracy enough. The below chart shows the accuracy (as displayed in % chance to hit when aiming) of various weapons with various stats (45/40 = 45 weapon stat / 40 accuracy).

  • 20/20 = average rookie
  • 45/40 = low vet
  • 60/50 = high vet
  • 80/60 = superstar (unexpected, definitely not more than 1 or 2 per game)

Accuracy-with-weapons.png

The gain between an average rookie and a high vet is just not enough, I think. Especially not between an average rookie and a low vet. I'd like to see a high vet achieve the accuracy gains of a superstar, maybe even a little more. But its not easy to figure this out. The chart is based on % chance to hit, but this is probably not even related to the calculations done to actually fire the weapon, which are more complicated.

The following description of the math from DarkRain is useful:

accuracy = 1 - (accuracy_ability / 100 + weapon_skill / 100) / 2
(which equals to: take the average of both, divide it by 100 and then rest that from one)
first for parabolic throws (grenades and such):
first, the angle (pitch, yaw, roll) for a perfect throw to the intended target is calculated, then   it is modified this way: 
pitch += <random number  between -1 and 1> * 2 * (spread1 * (0.5 + 1 * accuracy))
yaw += <another random number between -1 and 1> * 2 * (spread2 * (0.5 + 1 * accuracy))

now for straight shots (bullets, beams, knives, anything travelling in a straight line):
again the pitch, yaw, roll angles for a perfect shot is calculated, and then modified:
first get two Gaussian distributed random numbers with median at 0 and standard deviation of 1,   let them be gauss1 and gauss2, 
then calculate a secondary injury multiplier (this one was here before wounds were implemented and  I haven't touched it):
if HP / maxHP < 0.5 injurymultiplier2 = 1 + 0.2 * ((1 / (HP / maxHP + 0.5)) - 1) * 100 / mind
else injurymultiplier2 = 1
then:
pitch += gauss1 * (spread1 * ((0.5 + 1 * accuracy) * injurymultiplier2))
yaw += gauss2 * (spread2 * ((0.5 + 1 * accuracy) * injurymultiplier2))
if the shooter is crouched, each of the above two is additionally multiplied by the crouch factor  from the fireDef


Speed Growth Mechanisms

I'm not really a fan of how speed is improved. It encourages tedious maxing out movement wherever possible, even using the last 4 or 6 TU of each soldier. Maybe that's fine and not a big deal, but I wonder if we should consider some alternatives. Here are two: --H-hour 00:02, 19 March 2013 (SAST)

  • Large Movements: Give a soldier bonus points for moving with more than 75% of his TU in a turn. We could also give a lot of bonus for using 75% of his TU and getting a kill in the same turn. This would not eliminate the tedious maxing, but would at least eliminate all the using up of any tiny excess TU. This may be more difficult to track and code, though, and would be less reliable for balancing stat gain.
  • Cumulative Growth: Like HP, we could just make this one a function of all the total XP accumulated elsewhere.

Useful Graphs

Exp-to-stat-equations.png

Skill-exp-per-mission.png

Skill-stat-per-mission.png

Ability-stat-per-mission.png