How to fix Integrity - Yeay Math Again!

    Joined
    Sep 14, 2017
    Messages
    666
    Reaction score
    928
    Okay, so here is an idea to try to keep integrity working in spirit how it works now, but without all the major problems. I suggested something similar to this before, but this is about system specific integrity.

    I will begin by outlining the major issues with current integrity:
    1. It enforces a singular meta shape, a cube, to maximize integrity.
    2. Basing integrity on a spreadsheet of exposed faces on a block by block basis is bad for performance, and lacks certain configuration options for server admins who want to experiment with more or less permissive systems without totally breaking the curve.
    3. It also harshly penalises smaller ships, and is difficult to visualise at various scales.
    4. Constantly recalculating surface area and penalties takes a lot of extra processing. This alone is bad on performance, and further enforces the cubic system meta.
    5. Secondary explosions as an effect are VERY bad on performance. Damage lag seems about 10 times as bad as it used to be when systems are "burning".
    6. Secondary explosions do not kill Spaghetti ships fast enough. Since each explosion destroys so few blocks on a spaghetti ship, they can afford to burn much longer than other designs allowing them to kill other ships before any noticeable effect can be felt. This means integrity fails its primary purpose of preventing spaghetti ships.
    7. Secondary explosions overflow the damage buffer which leads to invulnerability.
    The following 3 suggestions will address all of the above issues in a simple, easy to implement fashion:
    1. Only calculate changes in integrity during construction and rebooting, not from damage to systems.
      1. This will encourage creativity with system shapes by letting people build to the integrity threshold, and only punish them when they design their ship past that. This means, systems can be built in more shapes than cubes (so nice looking cylinders and spheres could work too), This will lead to more depth for PvP builds and more creativity for RP builds.
      2. It will also alleviate the combat lag from recalculating damage to a system.
    2. Instead of Secondary explosions, give each system an HP pool that determines how much damage it needs to take before becoming disabled. You can then replace integrity penalties as a damage multiplier, so that fragile systems become disabled after losing fewer blocks.
      1. This means way less math, and therefore, less lag, to achieve effectively the same outcome.
      2. It keeps your damage queue free for calculating actual weapon strikes
      3. The the effects of breaking a spaghetti ship are instantaneous instead of something you have to wait until after you are already dead to see pay off.
    3. Use an integrity calculation that allows a reactor of the same proportions regardless of the size of your ship. Ugh... but that sounds hard... but that's okay, I figured that part out for you. (see below):





    // Blockcount is how many blocks you have in a system.
    // FaceCount is how many exposed faces a system has.


    /* ##### Configs ##### */
    IntegritySensitivity = 5; // This config value means that the ideal integrity is set to the surface area of a 5:1:1 box. The following formula will work exactly the same for a 5 x 1 x 1 reactor as it would for a 50 x 10 x 10 reactor, even though they have different relative surface areas to volume. Adjusting this up or down allows for more or less creative freedom.
    IntegrityIntensity = 2.0; // This config value determines how much integrity penalizes you once you breach the threshold. Adjusting this up or down exponentially inflicts more or less bonus damage against unstable ships.

    /* ##### The Function ##### */
    X=(Blockcount/IntegritySensitivity)^(-3); // X is the length of the short leg on a 5:1:1 box based on your Blockcount
    TargetFaces =((X*X)+(X*X*IntegritySensitivity )+(X*X*IntegritySensitivity ))*2; // TargetFaces is the maximum surface area of an integrity stable reactor.
    Integrity = TargetFaces/FaceCount;
    If (Integrity > 1) {
    // a structure that is less than 1.0 integrity is stable. No need for further math
    Penalty = Integrity^IntegrityIntensity; // Applies intensity as an exponential penalty. This means slightly unstable builds will have negligible penalties, but highly unstable builds will take massive bonus damage.
    }

    Here is an example of what this looks like against a spaghetti ship with a 10k system.

    10,000 block system = 3,492 target faces
    10,000 block spaghetti = 40,002 actual faces
    10,000 block integrity = 11.46
    10,000 block Penalty = 131.22

    The block penalty in this case is a 131.22 x damage multiplier to this system's HP so instead of needing to destroy 7,500 of the blocks to disable it, you only need to take out 58. (unstable shield systems will also suffer this penalty to shieldHP).
     
    Last edited:
    Joined
    Feb 21, 2015
    Messages
    228
    Reaction score
    145
    "creative & useful"

    simple cube-integrity does seem a bit limited - and calculation load is always a concern - but Integrity concept is substantial one to work with, probably with various possible tweaks and additions possible.

    It might need some adjustments - the above suggestion seems valid.
     
    Last edited:
    • Like
    Reactions: Dire Venom
    Joined
    Feb 27, 2014
    Messages
    1,074
    Reaction score
    504
    • Purchased!
    • Legacy Citizen 4
    • Top Forum Contributor
    Some solid ideas imo.
    What really sold me was the System by system HP.
    I've been hoping fir something like that fir a long time
     
    • Like
    Reactions: GnomeKing

    Skwidz

    turtleStew
    Joined
    Jun 14, 2017
    Messages
    273
    Reaction score
    148
    Does this allow spheres linked with thick lines?
     
    Joined
    Sep 14, 2017
    Messages
    666
    Reaction score
    928
    Does this allow spheres linked with thick lines?
    Yes/maybe. At these suggested defaults, there would be enough room for some basic design liberties like that; however, a reactor that is made up of 20 balls around your entire ship connected by single block wide strings would be very unstable, and result in distributed weak points instead of massive redundancy like you would get pre-integrity.

    However, one point of this equation is its ease of customisation; so, if a server admin decides he wants to keep a meta that forces cubic systems, he could set Integrity Sensitivity to 1. Inversely, if a server wants to encourage less restrictive system layouts like the distributive system described above, they could set sensitivity really high. The other value "Integrity Intensity" lets admins decide if integrity is a hard or soft limit.

    So if admins want to increase Sensitivity to allow distributive systems, but put a hard limit on how Spaghetti is okay, they could use something like:
    IntegritySensitivity = 30;
    IntegrityIntensity = 10.0;

    At these values, a person could make a "not"-spaghetti 5 x 5 x 150 block reactor and be fine, but a 5 x 5 x 200 reactor would suffer from a (x17) damage multiplier making it total garbage.

    This way, admins who have the advantage of direct player feedback, can load in a bunch of reactor shapes that they find permissive vs exploitative, and fudge numbers until they reach a balance that fits their player base.
     
    Joined
    Sep 14, 2017
    Messages
    666
    Reaction score
    928
    upload_2018-2-7_16-10-5.png

    Some basic shapes that are right at the sensitivity of 5 threshold... in retrospect, something in the 6-7 range might make a better default since this is still a bit limited, but hey, that's why configs are for.
     
    Joined
    Feb 27, 2014
    Messages
    1,074
    Reaction score
    504
    • Purchased!
    • Legacy Citizen 4
    • Top Forum Contributor
    I would just love to see Hull blocks able to 'Stabalize' system blocks.
    E.g hull blocks are counted as if they are part of the same system group to varrying degrees to reduce integrity loss.
    End result: Yah more use for interiors!

    The more I read OPs suggestion the more I like it! What do you guys think schema Criss ?

    Silently hopes for a 'read by schine tag'
     
    Joined
    Sep 14, 2017
    Messages
    666
    Reaction score
    928
    I would just love to see Hull blocks able to 'Stabalize' system blocks.
    E.g hull blocks are counted as if they are part of the same system group to varrying degrees to reduce integrity loss.
    End result: Yah more use for interiors!

    The more I read OPs suggestion the more I like it! What do you guys think schema Criss ?

    Silently hopes for a 'read by schine tag'
    I liked this idea at first, but it would penalize RP building, and be mildly exploitable. For example, an RP builder might want to use his reactor as a decorative feature so he builds a nice 6x6x30 block reactor and makes it a central pillar in his reactor room. Then a meta gamer decides he's going to use hull just to extrude his reactor more so he encases it and makes a 3x3x120 block reactor. The tall skinny one is harder to damage due to spaghetti mechanics.
     
    • Like
    Reactions: GnomeKing

    DukeofRealms

    Count Duku
    Joined
    Sep 4, 2013
    Messages
    1,477
    Reaction score
    1,617
    • Schine
    Schine Criss DukeofRealms I was told yall are actively looking for ways to improve current integrity system... not sure if ya'll had the chance to read this.
    Since I don't see a "read by Schine" tag...
    Schine schema Criss DukeofRealms You need to see this one. Y'all've been looking to fix/improve the integrity system, so here is a great suggestion.
    Lancake is the man you want :)

    (Read by Schine tag isn't used anymore and should probably be removed)
     
    Joined
    Feb 27, 2014
    Messages
    1,074
    Reaction score
    504
    • Purchased!
    • Legacy Citizen 4
    • Top Forum Contributor
    Tag isn't used anymore :eek:......
    No wonder, it makes sense that Schema wouldn't need it if he didn't read the forums anyway
    /sarcasm

    Thanks for the informative post Sir Duke!
    We'll stop bugging you :P