Bug or feature - shield recovery/assist rates

0

Not sure if this is working as intended or not, so figured I'd post to check in case it's a bug.

I naively assumed (before testing) that when you have engineers assist a damaged shield, they'll recharge it at a rate and cost based on that shield's stats to construct it. So, a T2 shield will recharge quicker, and more cheaply, than a T3 shield (when applying the same build power).

However, I can't actually figure out what the relationship is - using some crude testing by having a T3 artillary firing at an assisted T2 sera shield, and a t3 sera shield, with 12 T3 engineers assisting it, the T3 shield cost 13 mass/s per engi, vs 12 for the T2 shield, but the T3 shield recovered all damage a bit before the next shell landed, vs the T2 shield. The t3 engi power usage was almost twice that of the T2 shield engis though (125/s for the T2 shield, 231 for the T3 shield.

So in short, the following appear to be the case:
-Mass cost of restoring damage is roughly the same for T2 shield vs T3 shield
-Energy cost of restoring damage is about 70-80% higher for T3 shield vs T2 shield
-T3 shield restores damage slightly faster than a T2 shield for the same build power
-The amount of build power needed to restore damage is significantly more than if the same build power was used to build a brand new shield (e.g. you can build a fully charged T2 shield in a similar time as it took the engineers to repair the damage from 1 artillery's shell; a new T2 shield would have 13k shield health, vs the 5.5k damage from the artillery shell

In terms of numbers, 12 T3 engineers assisting the T2 shield cost about 126 mass/s and 3k energy/s and was almost recharging at the same rate as the damage taken from the arti (but not quite)

By contrast, if you compare the T2 and T3 shield stats, to construct them:
-T2 shield is far more mass (and energy) efficient for the shield health
-T2 shield constructs far faster

In terms of mass efficiency of 'assist vs construct new', for a T2 shield you get 13k health for 700 mass; A t3 UEF arti with T3 power around it deals 5500 damage every 6s I think, or 917dps, so the mass cost per second of building T2 shield where the shield health gained equaled 917 would be a 49 per sec mass cost.

I'm aware from forum posts of a FAF feature where overlapping shields take damage to prevent shield stacking; is there some similar behind the scenes script that causes this outcome? If so, is it documented anywhere?

Replay ID of me attempting to test this is #14393241

0

maybe we changed it here ?
https://github.com/FAForever/fa/pull/2702

0

Thanks. With the caveat that I've I've never looked at FAF code before and haven't dealt with the language in question I can't see anything here that looks like it would cause this behavior. Is there separate code that handles the effect of assisting a unit (which might itself cause the shield to be regen)?

Per line 191-196 if the shield is damaged but not destroyed, then the shield should start to regenerate, which is handled in line 210+
per 214, the shield will then be repaired every tick by the RegenRate / 10

This is subject to an adjustment in 240+ where the build rate has changed, which is meant to correct some sort of glitch with 'free' shield regen.

From what I can make out, if you've got units assisting, then it creates an array of these units (previousTickAssisters), and creates a 1-off adjustment to the health for these engineers; However, it looks like this will only happen once, i.e. if your engineers are assisting there'll be a change in your BR, which will trigger the adjustment to fix the free regen glitch, but each tick after that there's no change in your engineers so unless i'm misreading the code, this special adjustment shouldn't occur for seconds 2+ hence wouldn't be the cause of the issue I'm encountering.

That suggests either I'm misreading how the code works (quite possible!) or code handling assisting a unit is handled elsewhere, and as part of that it adjusts the shield health and determines the resource cost.

0

After a bit of searching, it looks like EnhanceTask.lua might contain code relating to assisting a building construction, but I couldn't see anything for adjusting a shield's health:
https://github.com/FAForever/fa/blob/7542596ea1c16be28615fdc40cc9bf9c8bb5481a/lua/sim/tasks/EnhanceTask.lua

I also found the following but they appear to relate to AI commands for assisting/AI logic more generally:
https://github.com/FAForever/fa/blob/7542596ea1c16be28615fdc40cc9bf9c8bb5481a/lua/platoon.lua

https://github.com/FAForever/fa/blob/7542596ea1c16be28615fdc40cc9bf9c8bb5481a/lua/sim/EngineerManager.lua

Reclaim appears like it might be covered in Prop.lua:
https://github.com/FAForever/fa/blob/7542596ea1c16be28615fdc40cc9bf9c8bb5481a/lua/sim/Prop.lua

Github then decided I'd triggered an abuse mechanism with my scrolling through search results so I can't look any further to see if there're any other scripts I've missed that might affect a shield's health or an engineer assisting more generally.

0

i have investigated it before balance team was implemeting bugfix that would fix situation when you can assist shields at 100% efficiency even if you are stalling resources really hard

2e821dce-ea5d-4d0b-8e97-975db74ea3a6-image.png

Resource / BT means shield's cost divided by shield's build time

There rest what i say about Cybran ED3,4,5 might have been changed already since that time

0

Thanks, if I'm reading the "drain per 1 bt mass" as meaning the mass cost of an engineer assisting with a build power of 1, then I think the actual values might be different to this now - I did a bit more testing with other shields using the same method as before, and trying to get the no. of engineers need to assist a bit more precise (so it's probably within 1 of the correct value) and got the following:

Shields Testing.png

However it sounds from your post that it was intended that it should cost more mass to repair damage via assisting a T2 shield than repairing the same amount of damage via a T3 shield (even if the values appear a bit different) such that a change to this would belong in the balance section rather than bugfix?

0

Updated to correct the mass cost (I forgot to multiply by the 6s of every shot!) and to factor in estimated natural (free) shield regen so its a bit more accurate:
Shields Testing.png

0

Tldr: most mass efficient way to tank with assist is Sera t3, most mass efficient overall is Aon t2. If you have no mass: spam t2 Aon shields. If you have infinite mass make serat3 shields and hive assist. In any case stay away from uef and cybran shields.

I just gained 300 gap rating.

0

There was fixes like this one to make reparing cybran shield drain less ressources : https://github.com/FAForever/fa/pull/2703