timiimit / UT4MasterServer

Reimplementation of Epic's server for Unreal Tournament pre-alpha
https://ut4.timiimit.com
59 stars 18 forks source link

Accuracy over 100% #108

Closed Saibamen closed 1 year ago

Saibamen commented 1 year ago

Related: #22

FYI: @belmirp

image

belmirp commented 1 year ago

@Saibamen This is case only with Redeemer, we don't know what is the logic behind it, but it seems that it can go over 100% since you killed 2 enemies with 1 shot, in the example above.

caseyswilliams commented 1 year ago

1 shot, 1.06 hits, that is in fact 106%

timiimit commented 1 year ago

Study of UT4 Redeemer inner workings

Accuracy

Accuracy = Hits / Shots / 100 ( * 100 to get %) Shots is self-explanatory. Hits is the interesting variable here which is described later. (You are not rewarded any Hits if you damage yourself).

Stages

Redeemer deals damage in 3 stages and each stage is triggered 0.18 seconds after the previous one. I was unable to determine exactly how these stages act, but it seems that sometimes only one deals damage and sometimes two deal damage.

In Stage 1, radius of dealt damage is multiplied by 0.25 In Stage 2, radius of dealt damage is multiplied by 0.75 In Stage 3, radius of dealt damage is multiplied by 1.00

Hits

At the end of each stage Hits is updated like so: Hits += HitCredit / BaseDamage

HitCredit is set to 0 at the start of each stage. BaseDamage is the maximum damage that redeemer can deal (stock value is 500).

HitCredit

When stage does deal damage HitCredit is updated like so: HitCredit += Damage

Final notes

I believe that maximum Hits you can deal with one redeemer shot is the maximum number of stages that can deal damage (2 or maybe 3). This would for example be 2 in case two stages dealt full 500 damage to one player.

belmirp commented 1 year ago

So this means that you can get 200% accuracy with redeemer, if lucky?

timiimit commented 1 year ago

Think so

timiimit commented 1 year ago

Master server deals properly with redeemer accuracy. Its just game being weird. Closing issue