re: the static unit datasheet and the AI flight model

Same technique as the weapon tables -- field names are literal, so a
field-shape search over 190782 records finds the carriers.

Generic (394 per pak, 110 field names, 178 distinct IDs) is the unit
datasheet: HP, ShieldRatio, DefencePoint, AttackCraft/VesselPoint, the
five Resistance* terms, Size_X/Y/Z + radius, RadarRange 10000,
FCSRange 8500, MountedFCS, MountedShieldGenerator, Score/Damage/Mass,
NozzleCount with per-nozzle FX, and Model rou_e006 -- which ties the
sheet to the mesh names the corpus already decodes.

Maneuver (114) is the AI flight model: MaximumVelocity 1200,
CruisingVelocity 700, Acceleration 600, Deceleration 400,
SideThrustAcceleration 1000, Turn_AngularVelocity 180,
MaximumBank_Normal 60, per-axis DragFactor 3.0, afterburner and
reverse-thrust factors, plus nine named manoeuvres each with its own
timing/ratio/length bounds and AA_/AV_ rate pairs.  This is the static
source for what flight-speed-law.md measured at runtime.

Corrects a guess in the same pass: HP_CLASS/HP_ID are not ship stats --
they sit on records named for wingmen and ship classes alongside
HPGauge/RadarCursorType, i.e. a HUD gauge binding table.

New structure doc + artefact; ISL artefacts byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-27 12:20:03 +00:00
parent f2cacce59d
commit 69e6f6bcd8
4 changed files with 533 additions and 0 deletions

View File

@@ -827,6 +827,43 @@ unknown, what evidence exists, and what the first step would be. Move an item in
field; the stat keys in records not opened here (`MegaTons`, `BulletLimit`,
`CrewCount`, `HP_CLASS`); why the roster lists 59 of 131.
* ✅✅ **(2026-08-27) THE STATIC UNIT DATASHEET **AND** THE AI FLIGHT MODEL —
`Generic` (394), `Maneuver` (114), `Effect` (114).
[structures/unit-datasheet-static](structures/unit-datasheet-static.md),
artefact `data/unit-datasheet-static.txt`.**
Same technique as the weapon tables: field names are literal, so a field-shape
search over 190 782 records finds the carriers. **`Generic` is the unit
datasheet** — 110 field names, 178 distinct IDs: `HP 6400.0`, `ShieldRatio`,
`DefencePoint`, `AttackCraftPoint`/`AttackVesselPoint`, `ResistanceToShell`/
`ToExplosion`/`ToOptics`/`ToPlayer`/`Paralyze`, `Size_X/Y/Z`+`Size_Radius`,
**`RadarRange 10000.0`**, **`FCSRange 8500.0`**, `MountedFCS`,
`MountedShieldGenerator`, `ScorePoint`/`DamageScore`/`MassScore`, `HQRatio`,
`ThrusterRatio`, `NozzleCount` with per-nozzle jet/afterburner/reverse/contrail
FX, and **`Model rou_e006`** — which ties the datasheet straight to the mesh
names the corpus already decodes. In the corpus's **1 metre** world unit that is
a 10 km radar and a 12 × 5 × 30 m craft.
🔑 **`Maneuver` is the AI FLIGHT MODEL** — the richest find for the port:
`MaximumVelocity 1200`, `MinimumVelocity 100`, `CruisingVelocity 700`,
`Acceleration 600`, `Deceleration 400`, `SideThrustAcceleration 1000`,
`Turn_AngularVelocity 180`, `MaximumBank_Normal 60`, yaw/roll/pitch
`DragFactor 3.0` + `DragFactorThreshold 0.5`, `ArterBurner_Vc 2.5`/`_Acc 2.0`
(the game's own spelling), `ReverseThrust_Vc 0.5`, `UsingChaffRatio 0.5`,
`HomingResistAdjustment 0.8` — plus **nine named manoeuvres** each with a Yes/No
switch and its own timing/ratio/length bounds (`TurnAttack`, `TurnAway`,
`BarrelRoll`, `SideRoll`, `Slalom`, `Through`, `HoldPosition`, `SolidCutoff`,
`BoostAway`) and `AA_*`/`AV_*` pitch/yaw/roll min-max pairs. This is the static
source for what `flight-speed-law.md` and `flight-controls-runtime.md` measured
at runtime.
🟡 `AA_`/`AV_` pairing with `AttackCraftPoint`/`AttackVesselPoint` suggests
anti-air vs anti-vessel rate limits — **a reading, not adopted**.
🔴 **`HP_CLASS`/`HP_ID` are NOT ship stats.** They sit on records named for
wingmen and ship classes (`CARL`, `ELLEN`, `SANDRA`, `ACROPOLIS`,
`Carrier_TCAF1`, `NP_Facility`, …), 120144 instances each, alongside
`HPGauge`/`HPGaugeSub`/`RadarCursorType` on the `ObjectiveMarker_*` and
`TutorialMarker_*` records — a **HUD gauge binding table**.
🟡 Not settled: no field-by-field reconciliation against the runtime captures;
and 178 distinct `Generic` IDs against 394 records per pak is unexplained.
## ✅✅ SOLVED — the mission freeze was a modal sign-in dialog (2026-08-26)
`XamShowSigninUI` opens a modal dialog and `xeXamDispatchDialog` blocks the