FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login

    Bug or feature - shield recovery/assist rates

    Scheduled Pinned Locked Moved Game Issues and Gameplay questions
    9 Posts 5 Posters 655 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • maudlin27M
      maudlin27
      last edited by

      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

      M27AI and M28AI developer; Devlogs and more general AI development guide:
      https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
      https://forum.faforever.com/topic/5331/m28ai-devlog-v150

      1 Reply Last reply Reply Quote 0
      • UvesoU
        Uveso
        last edited by

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

        1 Reply Last reply Reply Quote 0
        • maudlin27M
          maudlin27
          last edited by

          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.

          M27AI and M28AI developer; Devlogs and more general AI development guide:
          https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
          https://forum.faforever.com/topic/5331/m28ai-devlog-v150

          1 Reply Last reply Reply Quote 0
          • maudlin27M
            maudlin27
            last edited by

            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.

            M27AI and M28AI developer; Devlogs and more general AI development guide:
            https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
            https://forum.faforever.com/topic/5331/m28ai-devlog-v150

            1 Reply Last reply Reply Quote 0
            • ZLOZ
              ZLO
              last edited by ZLO

              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

              TA4Life: "At the very least we are not slaves to the UI" | http://www.youtube.com/user/dimatularus | http://www.twitch.tv/zlo_rd

              1 Reply Last reply Reply Quote 0
              • maudlin27M
                maudlin27
                last edited by

                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?

                M27AI and M28AI developer; Devlogs and more general AI development guide:
                https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
                https://forum.faforever.com/topic/5331/m28ai-devlog-v150

                1 Reply Last reply Reply Quote 0
                • maudlin27M
                  maudlin27
                  last edited by

                  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

                  M27AI and M28AI developer; Devlogs and more general AI development guide:
                  https://forum.faforever.com/topic/2373/ai-development-guide-and-m27ai-v71-devlog
                  https://forum.faforever.com/topic/5331/m28ai-devlog-v150

                  1 Reply Last reply Reply Quote 0
                  • epic-bennisE
                    epic-bennis Banned
                    last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • K
                      keyser
                      last edited by keyser

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

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post