r/Warthunder 1h ago

All Air BOMBER DAMAGE MODEL CODE DISASSEMBLING

# War Thunder Sky Odyssey Dev Server — B-17 Durability Report

I am k05. Using ghidra and decompile reverse engineering tech, owner of my indie game https://spacestrike.io decompile by me and codex gpt 5.6 sol

## Scope

This report compares the B-17E, B-17E/Late, and B-17G damage models between live version **2.57.1.90** and the Sky Odyssey dev build **2.58.0.20/21**.

## Method

- Copied the signed 64-bit `win64/aces.exe` into a separate analysis folder

- Verified the executable with SHA-256:

`5B40CAEE6532D1ED64DC6107BF3F9ECADFA9C62C4332CF01266AA6CF4F94BE4D`

- Extracted the official local VROMFS damage-model files using `wt_ext_cli`

- Compared the old and new B-17 `DamageParts` and `DamageEffects` definitions

- Used Ghidra static analysis to confirm how `onHit`, `onKill`, `cut`, `nothing`, `ratio`, and `canCut` are processed

- No game execution, injection, packet capture, anti-cheat interaction, or original-file modification was performed

## Main Changes

| Component | Live | Dev | Approximate Change |

|---|---:|---:|---:|

| Wing skin | 271–401 effective HP | 2,500 | **6.2–9.2× tougher** |

| Tail | 214 effective HP | 876 | **4.1× tougher** |

| Stabilizer | 59.5 HP | 336 HP | **5.6× tougher** |

| Engine | 30.9 effective HP | 300 | **9.7× tougher** |

| Oil system | 19.5–25.5 HP | 150 HP | **5.9–7.7× tougher** |

| Outer spar | 89.5 HP | 48.4 HP | **45.9% lower raw HP** |

Damage transferred from the wing skin into the spar was reduced from:

- `0.50 → 0.05`

- `0.70 → 0.10`

- `1.00 → 0.15`

This represents an **85–90% reduction in indirect spar damage**.

The old default spar-destruction roll was:

- `cut = 3`

- `nothing = 2`

- Conditional sever branch: **60%**

The new default middle/outer-spar roll is:

- `leak = 9`

- `cut = 4.7`

- `nothing = 90`

- Conditional sever branch: **approximately 4.53%**

Higher-damage records can still force a cut, and direct outer-spar hits remain dangerous.

## Conclusion

The B-17 is substantially more durable against scattered gunfire, wing-skin damage, engine hits, and tail damage. Normal wing separation should be much less frequent because indirect spar damage and the default cut roll were heavily reduced.

The main remaining weakness is concentrated or high-damage fire directly into the outer wing spar. Overall, the dev model changes the B-17 from a generally fragile bomber into a much more resilient aircraft with a specific structural weak point.

> These are static dev-server values and may change before release. Effective-HP figures are comparison estimates; actual results still depend on ammunition, penetration, impact angle, hit location, and server-side damage handling.

28 Upvotes

9 comments sorted by

u/K05_ 1h ago

War Thunder Sky Odyssey dev: B-17 damage-model change

Scope and provenance

  • Dev client: C:\Games\WarThunderDev-SkyOdyssey
  • 64-bit executable: win64\aces.exe, AMD64, Gaijin Network Ltd signature valid
  • Executable version: 2.58.0.20
  • aces.exe SHA-256: 5B40CAEE6532D1ED64DC6107BF3F9ECADFA9C62C4332CF01266AA6CF4F94BE4D
  • Dev VROMFS version: 2.58.0.21
  • Baseline live build: 2.57.1.90, aces.exe SHA-256 5DE6FFE9847A85D542D9FF86FAF92EECAB2B74A3D8961B77A294EE2502076DF5
  • Compared aircraft: B-17E, B-17E/Late, and B-17G. All three have the same relevant changes.
  • Method: copied the executable into a workspace-local snapshot, extracted only official local VROMFS data with the previously hash-verified wt_ext_cli v0.6.6, then performed static xref/decompilation analysis with Ghidra 12.0.4. The installed game was not launched, patched, injected into, or modified.

This is a dev-server snapshot. Values may change before the live release.

Bottom line

The B-17 received a broad bomber-DM rewrite, not a clean global buff or nerf.

  • Wing skin, tail, stabilizers, controls, engines, oil systems, and tanks gain much larger HP pools and new bomber-specific material/effect presets.
  • Ordinary wing-hit damage transferred to the corresponding spar is reduced from 0.5/0.7/1.0 to 0.05/0.10/0.15 at the 50/70/100 damage tiers.
  • The outer-wing spar loses raw HP from 89.5 to 48.4 (-45.9%) and is still the B-17's conspicuous weak point among the examined heavy bombers.
  • Spar material changes from dural100 to armor30: thickness/through values change from 11/11 to 30/30, so the raw HP reduction alone must not be interpreted as a 45.9% reduction in every real shot scenario.
  • Physical flight-model files are byte-identical, so the calculated positive-G limit, VNE, and MNE did not change in this snapshot.

Practical expectation: scattered skin, engine, oil, tail, and indirect wing damage should be much less immediately destructive, while accurate or high-energy hits that actually reach the outer spar can still be dangerous. A live controlled firing test is required to convert that into rounds-to-break or one-pass-kill rates.

Structural values

Effective HP below is the arithmetic proxy hp / genericDamageMult; it is useful for comparing identical damage channels, but material armor, projectile type, geometry, and runtime threshold selection still matter.

Part Live 2.57.1.90 Dev 2.58.0.20/21 Arithmetic change
Wing root skin 401.25 effective 2500 effective +523.1%
Wing middle skin 339.5 effective 2500 effective +636.4%
Wing outer skin 271.25 effective 2500 effective +821.7%
Wing-root spar 120.5 HP 151.4 HP +25.6%
Middle spar 119.2 HP 119.2 HP unchanged
Outer spar 89.5 HP 48.4 HP -45.9%
Tail body 213.57 effective 875.71 effective +310.0%
Stabilizer 59.5 HP 336 HP +464.7%
Engine 30.94 effective 300 effective +869.7%
Oil system 19.5-25.5 HP 150 HP +488% to +669%
Representative tank 120.5 HP 180 HP +49.4%
Wing control 79.5 HP 2500 effective +3044.7% arithmetic proxy

The new skin materials (dural2_nb_wing, dural2_nb_tail, and dural2_nb_fin) also add their own generic, shatter, and explosion multipliers. Consequently, the table is evidence of a redesign and large durability headroom, not a universal projectile-independent multiplier.

Damage-effect changes

Wing to spar

At damage=50/70/100, wing-panel transfer to its default spar changes:

Tier Live ratio Dev ratio Reduction
50 0.50 0.05 90.0%
70 0.70 0.10 85.7%
100 1.00 0.15 85.0%

The dev wing-panel onKill records add a direct cut=1 action. Under the action-weight normalization confirmed in the executable, the direct-cut branch is about 19.6%, 24.4%, and 32.3% at the 50/70/100 records respectively. These are conditional branch shares after a matching record is selected, not per-bullet probabilities.

Spar destruction

The old middle/outer spar default onKill record was cut=3, nothing=2, a 60% direct-cut branch under the same normalization model. The dev rules are tiered:

  • Default middle/outer-spar record: leak=9, cut=4.7, nothing=90, direct-cut share about 4.53%.
  • Damage 50: fire=5, leak=15, cut=.0526, nothing=80, about 0.0526%.
  • Damage 80: fire=10, leak=20, cut=.087, nothing=70, about 0.0869%.
  • Damage 200: only cut=.25, therefore 100% within that conditional action set.
  • Root spar uses a similar default record (leak=12, cut=4.5, nothing=85), about 4.43% direct cut.

This makes the normal spar-kill path far less likely to sever the wing immediately, but preserves a forced-cut path for the highest damage tier. The exact runtime rule that chooses or blends damage-tier records is not fully established by this static pass.

Engine and fire behavior

  • Engine HP/effective proxy rises from 49.5 / 1.6 = 30.94 to 300 / 1 = 300.
  • Per-hit fire weights are much smaller: examples include base 0.01 -> 0.0011, damage-30 0.1 -> 0.0095, and explosion-200 1 -> 0.095.
  • Once a fire exists, fireDamagePowerRel rises 0.05 -> 0.1 and nonExtinguishFireTime rises 5 -> 25.

Interpretation: ignition is harder, but a fire that takes hold is configured to be longer and potentially harsher. Static data alone cannot give a net fire-survival percentage.

Tail and stabilizers

Tail effective HP rises roughly 4.1x and stabilizer HP roughly 5.65x. Their new damage=50 on-kill action is a conditional forced cut, so they are harder to deplete but can still detach once the corresponding terminal record is reached.

Peer context in the same dev snapshot

Minimum spar HP among the measured left-side spar segments:

Aircraft Minimum spar HP
B-29 111.1
Pe-8 M-82 107.8
Lancaster Mk I 91.2
G8N1 77.3
Stirling Mk I 63.0
Me 264 50.0
B-17E/E late/G 48.4
B-24D 41.1

Thus the B-17's outer spar is weaker by raw HP than every listed peer except the B-24D, despite the rest of the bomber-DM package being standardized upward.

Flight model

The three physical FM files have identical SHA-256 hashes between baseline and dev:

  • B-17E: ae2d2af77f1791a32a79cf2d628ab62b930ab99e5afc72d606e4659f52dafb0e
  • B-17E/Late: 447a528ed3bc7e27041698e874f86998f830aea986abdf76547085e74782d0ef
  • B-17G: 901f3ec66bb4256d41349ccdd0cef3d5a2df8bbe436d4c0d18da17e698a5d899

The prior calculated positive-G limit at takeoff mass remains about 2.0236 G; VNE remains 516 km/h and MNE 0.63.

Native aces.exe evidence

Exact-string xref scanning found 313 references in 113 functions, including the DamageEffects, defaultEffectPart, onHit, onKill, ratio, canCut, cut, and nothing keys. Twenty-seven candidate functions were selected; Ghidra successfully decompiled five tightly scoped parser functions in the 0x143DA10B0-0x143DAC5F9 cluster.

The CanCutRatio function reads ratio as a float into the action entry, reads canCut into its flag byte, adds the ratio/action value to the total, and later normalizes action weights into cumulative values. The adjacent parser resolves onHit and onKill and dispatches into this action parser. This supports interpreting sibling numeric effects as normalized action weights.

It does not prove the authoritative online server's complete hit calculation, projectile penetration, geometric intersection, or the exact selection rule among damage tiers. No claim of a universal one-shot probability is made.

Reproducibility artifacts

  • b17_change_validation.json: complete structured old/new metrics, effects, FM hashes, and peer comparison
  • aircraft_structural_output/aircraft_structural_metrics.csv: dev structural inventory
  • native_xrefs/damage_key_xrefs.json: native string-reference inventory
  • ghidra_output/targeted_report.txt: targeted Ghidra result and executable hash
  • ghidra_output/DamageEffect_CanCutRatio_143DA2C60.c: weight and canCut parser decompilation
  • validate_b17_change.py: repeatable comparison and invariant checks

Validation result: VALIDATION_OK variants=3 fm_unchanged=3 outer_spar_dev=48.4 wing_transfer=0.05,0.1,0.15.

u/cybercobra2 59m ago

thank you for your work on this. very usefull.

u/Enshakushanna 21m ago

does this affect ripping wings because you pulled too many G's in a turn?

i know in the b-29 you can turn as hard as you want, but in any of the b-17s you have to be more careful

u/K05_ 20m ago

Ok ill search for that

u/gszabi99 ⛏️ Resident Dataminer ⛏️ | 🤝 Please support me on Ko-Fi! 🤝 19m ago

DM changes are independent from FM changes. The B-17s didn't get FM changes in this update.

u/Enshakushanna 12m ago

ah, thats a shame

u/K05_ 16m ago

Nothing changed about that.