newserv icon indicating copy to clipboard operation
newserv copied to clipboard

Self-Healing Dragon

Open mkjeller opened this issue 11 months ago • 4 comments

This behaviour is likely caused by not-recommended configuration, but I wanted to report it anyway in case it's not.

What Happened When fighting the Dragon (Forest Boss, Normal Difficulty) with a Player on BB (As Party leader) and a Player on DC EUv2 when the Dragon reached it's final phase (diving into the ground), the BB player could consistently do damage (as seen by the health-bar patch), however if the DCv2 player did damage the Dragon's health-bar would re-set to either half or the beginning of the final phase.

The Dragon was defeated after the DCv2 player stopped attempting to apply damage and the BB player finished it off.

Relevant Config.json

  "CompatibilityGroups": [
    0x0000, // PC_PATCH
    0x0000, // BB_PATCH
    0x0004, // DC_NTE compatible only with itself
    0x0008, // DC_11_2000 compatible only with itself
    0x00b0, // DC_V1 compatible with DC_V1, DC_V2, and PC_V2
    0x00b0, // DC_V2 compatible with DC_V1, DC_V2, and PC_V2
    0x0040, // PC_NTE compatible only with itself
    0x00b0, // PC_V2 compatible with DC_V1, DC_V2, and PC_V2
    0x0100, // GC_NTE compatible only with itself
    0x32B0, // GC_V3 Compat V1-4 Compat?
    //0x1200, // GC_V3 compatible with GC_V3 and XB_V3
    0x0400, // GC_EP3_NTE compatible only with itself
    0x0800, // GC_EP3 compatible only with itself
    //0x1200, // XB_V3 compatible with GC_V3 and XB_V3
    0x32B0, // XB_V3 V1-4 Compat?
    //0x2000 // BB_V4 compatible only with itself
    0x32B0 // BB_V4 V1-4 Compat?
  ],

Not Tested DCv2 player hosting. Was initially attempted, however the Party would not display for the BB player. But the Party hosted by the BB player appeared for the DCv2 player. I suspect the DC_V2 and PC_V2 lines would need to also be set to 0x32B0 for this to work?

Notes All other elements of the run worked as expected, including server generated per-player items and movement sync.

mkjeller avatar Jun 01 '25 05:06 mkjeller

Many changes were made to the game between v2 and v3, so some issues are to be expected when players on different sides of that boundary play together. Some bosses have weird HP logic; I wouldn't be surprised if De Rol Le malfunctions too. I'll investigate these bosses soon.

I suspect the DC_V2 and PC_V2 lines would need to also be set to 0x32B0 for this to work?

Correct. CompatibilityGroups is indexed by the game creator's version, and each entry is a bit field specifying which other versions should be allowed to join the game.

fuzziqersoftware avatar Jun 01 '25 06:06 fuzziqersoftware

I wouldn't be surprised if De Rol Le malfunctions too. I'll investigate these bosses soon.

Given that the HP Bar Patch doesn't work on De Rol Le at all (shows 100% for the entire battle) that would not surprise me in the slightest. (Tested in a 3 player BB only lobby)

mkjeller avatar Jun 01 '25 06:06 mkjeller

An additional thing I've noticed through causal observation.

Was playing some EPII with a friend earlier (both of us on BlueBurst), and I noticed that if we were both attacking the same enemy, sometimes it's health would spring back up a tiny bit.

This lends credence to the "desync" theory when BB and DCv2 play together. Iirc the server doesn't exactly validate the information it was sent by a client, it just makes sure it's synchronised between clients.

Health desync on normal enemies is harder to spot because their health pools are way smaller than that of a boss monster.

Once I get a chance with my DCv2 playing friend, I'm going to try and have her host a lobby and see if the issue with the dragon is "inverted" (BB client reducing the health lower than the session host expects)

mkjeller avatar Jun 04 '25 04:06 mkjeller

This kind of enemy health jitter is an issue known as damage cancellation. The cause of this is that when an attack lands on an enemy, the game sends a message that includes the total damage done to the enemy so far, not the damage done by that specific hit. So if two players hit the same enemy at approximately the same time, these messages will cross paths on the wire, and each player will end up seeing the damage done by the other player but not by themself, since the message from the other player essentially undoes their hit. From your description above, I believe the v2/BB boss HP behavior issue is distinct from damage cancellation.

fuzziqersoftware avatar Jun 04 '25 07:06 fuzziqersoftware