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:
@@ -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`, …), 120–144 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
|
||||
|
||||
@@ -99,6 +99,7 @@ files, which is how the same ground got covered twice.
|
||||
| [`structures/sound-cue-table.md`](structures/sound-cue-table.md) | The cue index in `tables.pak` — message id -> cue -> sound id -> `.slb` bank | ✅ CONFIRMED, 1 326/1 338 script message ids bind to a bank; SOUNDS and FILES agree on the same 12 absentees, 0 orphan files |
|
||||
| [`structures/cutscene-message-table.md`](structures/cutscene-message-table.md) | Cutscene dialogue — speaker, portrait, on-screen seconds, audio cue per page | ✅ CONFIRMED, field count = 9·PageCount+2 for all 7 PageCounts, 1 252/1 252 caption keys match, 138 ids close both ways |
|
||||
| [`structures/isl-mission-timer.md`](structures/isl-mission-timer.md) | The mission timer — two sequential countdowns, not a limit and a warning | ✅ CONFIRMED — read from `sub_822639B8`; the threshold reading is |
|
||||
| [`structures/unit-datasheet-static.md`](structures/unit-datasheet-static.md) | The static unit datasheet and AI flight model — `Generic`, `Maneuver`, `Effect` | ✅ CONFIRMED — 394 Generic + 114 Maneuver + 114 Effect records read |
|
||||
| [`structures/weapon-datasheet-static.md`](structures/weapon-datasheet-static.md) | The static weapon datasheet — `Weapon`, `Shell`, `AssortMissileParam` | ✅ CONFIRMED — 131 Weapon + 131 Shell + 9 AssortMissileParam records read |
|
||||
| [`structures/isl-timers.md`](structures/isl-timers.md) | A ScriptPhase owns 32 stopwatches, and they count seconds | ✅ CONFIRMED — the advance is read from `sub_822710D0`, the unit from |
|
||||
| [`structures/isl-message-dialogue-link.md`](structures/isl-message-dialogue-link.md) | Mission scripts as dialogue — built-in 64 -> message id -> caption text | ✅ CONFIRMED total, 2 683/2 683 call sites across all 28 stages resolve, no residue |
|
||||
|
||||
395
docs/re/data/unit-datasheet-static.txt
Normal file
395
docs/re/data/unit-datasheet-static.txt
Normal file
@@ -0,0 +1,395 @@
|
||||
# The STATIC unit datasheet and AI flight model: `Generic`, `Maneuver`, `Effect`
|
||||
|
||||
Found the same way as the weapon tables: IDXD FIELD names are literal strings in
|
||||
the pool, so a field-shape search over all 190 782 records finds the carriers.
|
||||
These are the static source for what the corpus previously measured at runtime
|
||||
(flight-speed-law.md, flight-controls-runtime.md, unit-struct-runtime.md).
|
||||
|
||||
## Record counts
|
||||
GP_MAIN_GAME_D.pak Effect 114
|
||||
GP_MAIN_GAME_D.pak Generic 394
|
||||
GP_MAIN_GAME_D.pak Maneuver 114
|
||||
GP_MAIN_GAME_E.pak Effect 114
|
||||
GP_MAIN_GAME_E.pak Generic 394
|
||||
GP_MAIN_GAME_E.pak Maneuver 114
|
||||
(the same records repeat in every per-language GP_MAIN_GAME_* pak)
|
||||
|
||||
## Generic -- 110 distinct field names, 178 distinct IDs
|
||||
AfterBurnerFxFrame_000 in 408 records
|
||||
AfterBurnerFxFrame_001 in 378 records
|
||||
AfterBurnerFxFrame_002 in 258 records
|
||||
AfterBurnerFxFrame_003 in 222 records
|
||||
AfterBurnerFxFrame_004 in 96 records
|
||||
AfterBurnerFxFrame_005 in 96 records
|
||||
AfterBurnerFxFrame_006 in 36 records
|
||||
AfterBurnerFxFrame_007 in 36 records
|
||||
AfterBurnerFxModel_000 in 408 records
|
||||
AfterBurnerFxModel_001 in 378 records
|
||||
AfterBurnerFxModel_002 in 258 records
|
||||
AfterBurnerFxModel_003 in 222 records
|
||||
AfterBurnerFxModel_004 in 96 records
|
||||
AfterBurnerFxModel_005 in 96 records
|
||||
AfterBurnerFxModel_006 in 36 records
|
||||
AfterBurnerFxModel_007 in 36 records
|
||||
AttackCraftPoint in 678 records
|
||||
AttackVesselPoint in 678 records
|
||||
CollisionModel in 672 records
|
||||
Color_B in 684 records
|
||||
Color_G in 684 records
|
||||
Color_R in 684 records
|
||||
ContrailFxFrame_000 in 408 records
|
||||
ContrailFxFrame_001 in 378 records
|
||||
ContrailFxFrame_002 in 258 records
|
||||
ContrailFxFrame_003 in 222 records
|
||||
ContrailFxFrame_004 in 96 records
|
||||
ContrailFxFrame_005 in 96 records
|
||||
ContrailFxFrame_006 in 36 records
|
||||
ContrailFxFrame_007 in 36 records
|
||||
Count in 1224 records
|
||||
DamageScore in 672 records
|
||||
DefencePoint in 678 records
|
||||
EnumAsteroidGroup in 60 records
|
||||
FCSRange in 678 records
|
||||
GameResourceID in 480 records
|
||||
HP in 684 records
|
||||
HQRatio in 684 records
|
||||
ID in 1068 records
|
||||
IsDestructible in 684 records
|
||||
JetFxFrame_000 in 408 records
|
||||
JetFxFrame_001 in 378 records
|
||||
JetFxFrame_002 in 258 records
|
||||
JetFxFrame_003 in 222 records
|
||||
JetFxFrame_004 in 96 records
|
||||
JetFxFrame_005 in 96 records
|
||||
JetFxFrame_006 in 36 records
|
||||
JetFxFrame_007 in 36 records
|
||||
JetFxModel_000 in 408 records
|
||||
JetFxModel_001 in 378 records
|
||||
JetFxModel_002 in 258 records
|
||||
JetFxModel_003 in 222 records
|
||||
JetFxModel_004 in 96 records
|
||||
JetFxModel_005 in 96 records
|
||||
JetFxModel_006 in 36 records
|
||||
JetFxModel_007 in 36 records
|
||||
LODSetID in 807 records
|
||||
Levels in 807 records
|
||||
MassScore in 672 records
|
||||
Model in 684 records
|
||||
MountedFCS in 678 records
|
||||
MountedShieldGenerator in 660 records
|
||||
Name in 1068 records
|
||||
NamePlate in 672 records
|
||||
NozzleCount in 684 records
|
||||
NozzleFrame_000 in 264 records
|
||||
NozzleFrame_??? in 6 records
|
||||
NozzleSpec_000 in 672 records
|
||||
NozzleSpec_001 in 378 records
|
||||
NozzleSpec_002 in 258 records
|
||||
NozzleSpec_003 in 222 records
|
||||
NozzleSpec_004 in 96 records
|
||||
NozzleSpec_005 in 96 records
|
||||
NozzleSpec_006 in 36 records
|
||||
NozzleSpec_007 in 36 records
|
||||
NozzleSpec_??? in 6 records
|
||||
RadarRange in 678 records
|
||||
ResistanceParalyze in 660 records
|
||||
ResistanceToExplosion in 684 records
|
||||
ResistanceToOptics in 684 records
|
||||
ResistanceToPlayer in 678 records
|
||||
ResistanceToShell in 684 records
|
||||
ReverseThrusterFxFrame_000 in 408 records
|
||||
ReverseThrusterFxFrame_001 in 378 records
|
||||
ReverseThrusterFxFrame_002 in 258 records
|
||||
ReverseThrusterFxFrame_003 in 222 records
|
||||
ReverseThrusterFxFrame_004 in 96 records
|
||||
ReverseThrusterFxFrame_005 in 96 records
|
||||
ReverseThrusterFxFrame_006 in 36 records
|
||||
ReverseThrusterFxFrame_007 in 36 records
|
||||
ReverseThrusterFxModel_000 in 408 records
|
||||
ReverseThrusterFxModel_001 in 378 records
|
||||
ReverseThrusterFxModel_002 in 258 records
|
||||
ReverseThrusterFxModel_003 in 222 records
|
||||
ReverseThrusterFxModel_004 in 96 records
|
||||
ReverseThrusterFxModel_005 in 96 records
|
||||
ReverseThrusterFxModel_006 in 36 records
|
||||
ReverseThrusterFxModel_007 in 36 records
|
||||
ScorePoint in 672 records
|
||||
ShieldRatio in 684 records
|
||||
SideID in 384 records
|
||||
Size_Radius in 684 records
|
||||
Size_X in 684 records
|
||||
Size_Y in 684 records
|
||||
Size_Z in 684 records
|
||||
ThrusterRatio in 684 records
|
||||
Type in 684 records
|
||||
UncertainName in 684 records
|
||||
Unique in 384 records
|
||||
eff_n0071 in 6 records
|
||||
sample (GP_MAIN_GAME_D.pak entry 0043c41d):
|
||||
AfterBurnerFxFrame_000 GN_Jet_01
|
||||
AfterBurnerFxFrame_001 GN_Jet_02
|
||||
AfterBurnerFxFrame_002 GN_Jet_03
|
||||
AfterBurnerFxModel_000 eff_j002_e02
|
||||
AfterBurnerFxModel_001 eff_j002_e02
|
||||
AfterBurnerFxModel_002 eff_j002_e02
|
||||
AttackCraftPoint 1.0
|
||||
AttackVesselPoint 0.001
|
||||
CollisionModel
|
||||
Color_B 0.1
|
||||
Color_G 0.5
|
||||
Color_R 1.0
|
||||
ContrailFxFrame_000 GN_Trc_01
|
||||
ContrailFxFrame_001 GN_Trc_02
|
||||
ContrailFxFrame_002 GN_Trc_03
|
||||
DamageScore 640
|
||||
DefencePoint 0.0004
|
||||
FCSRange 8500.0
|
||||
HP 6400.0
|
||||
HQRatio 1.0
|
||||
ID UN_e006_ADAN_Vindicator_MargrasF
|
||||
IsDestructible Yes
|
||||
JetFxFrame_000 GN_Jet_01
|
||||
JetFxFrame_001 GN_Jet_02
|
||||
JetFxFrame_002 GN_Jet_03
|
||||
JetFxModel_000 eff_j002_e01
|
||||
JetFxModel_001 eff_j002_e01
|
||||
JetFxModel_002 eff_j002_e01
|
||||
MassScore 30
|
||||
Model rou_e006
|
||||
MountedFCS No
|
||||
MountedShieldGenerator Yes
|
||||
Name UnitName_UN_e006_ADAN_Vindicator_MargrasF
|
||||
NamePlate
|
||||
NozzleCount 3
|
||||
NozzleSpec_000 NS_Body
|
||||
NozzleSpec_001 NS_Body
|
||||
NozzleSpec_002 NS_Body
|
||||
RadarRange 10000.0
|
||||
ResistanceParalyze 0.99
|
||||
ResistanceToExplosion 0.5
|
||||
ResistanceToOptics 0.8
|
||||
ResistanceToPlayer 1.0
|
||||
ResistanceToShell 0.1
|
||||
ReverseThrusterFxFrame_000
|
||||
ReverseThrusterFxFrame_001
|
||||
ReverseThrusterFxFrame_002
|
||||
ReverseThrusterFxModel_000
|
||||
ReverseThrusterFxModel_001
|
||||
ReverseThrusterFxModel_002
|
||||
ScorePoint 4000
|
||||
ShieldRatio 1.0
|
||||
Size_Radius 15.0
|
||||
Size_X 12.0
|
||||
Size_Y 5.0
|
||||
Size_Z 30.0
|
||||
ThrusterRatio 1.0
|
||||
Type Craft
|
||||
UncertainName Craft
|
||||
|
||||
## Maneuver -- 101 distinct field names, 0 distinct IDs
|
||||
AA_AxisMode_Max in 30 records
|
||||
AA_AxisMode_Min in 30 records
|
||||
AA_PitchMinus_Max in 684 records
|
||||
AA_PitchMinus_Min in 684 records
|
||||
AA_PitchPlus_Max in 684 records
|
||||
AA_PitchPlus_Min in 684 records
|
||||
AA_Roll_Max in 684 records
|
||||
AA_Roll_Min in 684 records
|
||||
AA_Yaw_Max in 684 records
|
||||
AA_Yaw_Min in 684 records
|
||||
AB_AA_PitchMinus in 30 records
|
||||
AB_AA_PitchPlus in 30 records
|
||||
AB_AA_Roll in 30 records
|
||||
AB_AA_Yaw in 30 records
|
||||
AB_AV_PitchMinus in 30 records
|
||||
AB_AV_PitchPlus in 30 records
|
||||
AB_AV_Roll in 30 records
|
||||
AB_AV_Yaw in 30 records
|
||||
AB_ConsumeShield in 30 records
|
||||
AB_ConsumeShield_Begin in 30 records
|
||||
AV_AxisMode_Max in 30 records
|
||||
AV_AxisMode_Min in 30 records
|
||||
AV_PitchMinus_Max in 684 records
|
||||
AV_PitchMinus_Min in 684 records
|
||||
AV_PitchPlus_Max in 684 records
|
||||
AV_PitchPlus_Min in 684 records
|
||||
AV_Roll_Max in 684 records
|
||||
AV_Roll_Min in 684 records
|
||||
AV_Yaw_Max in 684 records
|
||||
AV_Yaw_Min in 684 records
|
||||
AccPitchFactor in 684 records
|
||||
Acceleration in 684 records
|
||||
ArterBurner_Acc in 684 records
|
||||
ArterBurner_Vc in 684 records
|
||||
BarrelRoll in 204 records
|
||||
BarrelRoll_CountMaximum in 204 records
|
||||
BarrelRoll_CountMinimum in 204 records
|
||||
BarrelRoll_Radius in 204 records
|
||||
BarrelRoll_Time in 204 records
|
||||
BoostAway in 204 records
|
||||
BoostAway_Time_Maximum in 204 records
|
||||
BoostAway_Time_Minimum in 204 records
|
||||
CruisingVelocity in 684 records
|
||||
CutoffTimeMax in 204 records
|
||||
CutoffTimeMin in 204 records
|
||||
DecPitchFactor in 684 records
|
||||
Deceleration in 684 records
|
||||
DragFactorThreshold in 684 records
|
||||
HoldPosition in 204 records
|
||||
HoldPosition_BackRatio in 204 records
|
||||
HoldPosition_CancelTime in 204 records
|
||||
HoldPosition_CutoffRatio in 204 records
|
||||
HoldPosition_LengthMax in 204 records
|
||||
HoldPosition_LengthMin in 204 records
|
||||
HoldPosition_MaximumTime in 204 records
|
||||
HoldPosition_MinimumTime in 204 records
|
||||
HoldPosition_SideRatio in 204 records
|
||||
HomingResistAdjustment in 204 records
|
||||
MaximumBank_Normal in 684 records
|
||||
MaximumVelocity in 684 records
|
||||
MinimumVelocity in 684 records
|
||||
PitchDragFactor in 684 records
|
||||
PowerCutConsumeShield in 30 records
|
||||
PowerCutDeceleration in 30 records
|
||||
ReverseThrust_Acc in 684 records
|
||||
ReverseThrust_Vc in 684 records
|
||||
RollDragFactor in 684 records
|
||||
SideRoll in 204 records
|
||||
SideRoll_Length in 204 records
|
||||
SideRoll_Time in 204 records
|
||||
SideThrustAcceleration in 684 records
|
||||
SideThrustVelocity_Max in 684 records
|
||||
Slalom in 204 records
|
||||
Slalom_CutoffRatio in 204 records
|
||||
Slalom_TurnCount_Max in 204 records
|
||||
Slalom_TurnCount_Min in 204 records
|
||||
SolidCutoff in 204 records
|
||||
SolidCutoff_LengthMax in 204 records
|
||||
SolidCutoff_LengthMin in 204 records
|
||||
SolidCutoff_Ratio in 204 records
|
||||
Through in 204 records
|
||||
Through_AngleMaximum in 204 records
|
||||
Through_AngleMinimum in 204 records
|
||||
Through_CutoffRatio in 204 records
|
||||
Through_LengthMaximum in 204 records
|
||||
Through_LengthMinimum in 204 records
|
||||
Through_Time1Max in 204 records
|
||||
Through_Time1Min in 204 records
|
||||
Through_Time2Max in 204 records
|
||||
Through_Time2Min in 204 records
|
||||
TurnAttack in 204 records
|
||||
TurnAttack_CutoffRatio in 204 records
|
||||
TurnAttack_DoubleRatio in 204 records
|
||||
TurnAttack_DoubleTimeMax in 204 records
|
||||
TurnAttack_DoubleTimeMin in 204 records
|
||||
TurnAway in 204 records
|
||||
TurnAway_Time_Maximum in 204 records
|
||||
TurnAway_Time_Minimum in 204 records
|
||||
Turn_AngularVelocity in 204 records
|
||||
UsingChaffRatio in 204 records
|
||||
YawDragFactor in 684 records
|
||||
sample (GP_MAIN_GAME_D.pak entry 0043c41d):
|
||||
AA_PitchMinus_Max 10.0
|
||||
AA_PitchMinus_Min 40.0
|
||||
AA_PitchPlus_Max 30.0
|
||||
AA_PitchPlus_Min 100.0
|
||||
AA_Roll_Max 60.0
|
||||
AA_Roll_Min 150.0
|
||||
AA_Yaw_Max 50.0
|
||||
AA_Yaw_Min 240.0
|
||||
AV_PitchMinus_Max 40.0
|
||||
AV_PitchMinus_Min 120.0
|
||||
AV_PitchPlus_Max 80.0
|
||||
AV_PitchPlus_Min 200.0
|
||||
AV_Roll_Max 120.0
|
||||
AV_Roll_Min 160.0
|
||||
AV_Yaw_Max 25.0
|
||||
AV_Yaw_Min 60.0
|
||||
AccPitchFactor 30.0
|
||||
Acceleration 600
|
||||
ArterBurner_Acc 2.0
|
||||
ArterBurner_Vc 2.5
|
||||
BarrelRoll Yes
|
||||
BarrelRoll_CountMaximum 5.0
|
||||
BarrelRoll_CountMinimum 0.5
|
||||
BarrelRoll_Radius 250.0
|
||||
BarrelRoll_Time 1.2
|
||||
BoostAway Yes
|
||||
BoostAway_Time_Maximum 5.0
|
||||
BoostAway_Time_Minimum 1.0
|
||||
CruisingVelocity 700
|
||||
CutoffTimeMax 5.0
|
||||
CutoffTimeMin 0.6
|
||||
DecPitchFactor 30.0
|
||||
Deceleration 400
|
||||
DragFactorThreshold 0.5
|
||||
HoldPosition Yes
|
||||
HoldPosition_BackRatio 0.6
|
||||
HoldPosition_CancelTime 20.0
|
||||
HoldPosition_CutoffRatio 0.5
|
||||
HoldPosition_LengthMax 400.0
|
||||
HoldPosition_LengthMin 150.0
|
||||
HoldPosition_MaximumTime 10.0
|
||||
HoldPosition_MinimumTime 5.0
|
||||
HoldPosition_SideRatio 0.3
|
||||
HomingResistAdjustment 0.8
|
||||
MaximumBank_Normal 60.0
|
||||
MaximumVelocity 1200
|
||||
MinimumVelocity 100.0
|
||||
PitchDragFactor 3.0
|
||||
ReverseThrust_Acc 2.0
|
||||
ReverseThrust_Vc -0.5
|
||||
RollDragFactor 3.0
|
||||
SideRoll Yes
|
||||
SideRoll_Length 1000.0
|
||||
SideRoll_Time 0.5
|
||||
SideThrustAcceleration 1000.0
|
||||
SideThrustVelocity_Max 1000.0
|
||||
Slalom No
|
||||
Slalom_CutoffRatio 0.0
|
||||
Slalom_TurnCount_Max 0
|
||||
Slalom_TurnCount_Min 0
|
||||
SolidCutoff Yes
|
||||
SolidCutoff_LengthMax 2500
|
||||
SolidCutoff_LengthMin 500
|
||||
SolidCutoff_Ratio 0.5
|
||||
Through Yes
|
||||
Through_AngleMaximum 60.0
|
||||
Through_AngleMinimum 30.0
|
||||
Through_CutoffRatio 0.5
|
||||
Through_LengthMaximum 500.0
|
||||
Through_LengthMinimum 250.0
|
||||
Through_Time1Max 2.0
|
||||
Through_Time1Min 5.0
|
||||
Through_Time2Max 1.5
|
||||
Through_Time2Min 5.0
|
||||
TurnAttack Yes
|
||||
TurnAttack_CutoffRatio 0.4
|
||||
TurnAttack_DoubleRatio 0.3
|
||||
TurnAttack_DoubleTimeMax 2.5f
|
||||
TurnAttack_DoubleTimeMin 0.5f
|
||||
TurnAway Yes
|
||||
TurnAway_Time_Maximum 2.0
|
||||
TurnAway_Time_Minimum 0.5
|
||||
Turn_AngularVelocity 180.0
|
||||
UsingChaffRatio 0.5
|
||||
YawDragFactor 3.0
|
||||
|
||||
## Effect -- 9 distinct field names, 0 distinct IDs
|
||||
Effect_Paralyze in 444 records
|
||||
FadeIn in 678 records
|
||||
FadeOut in 678 records
|
||||
JumpIn in 678 records
|
||||
JumpOut in 678 records
|
||||
Shield in 474 records
|
||||
ShieldHitEffectName in 210 records
|
||||
ShieldRecoverEffectName in 210 records
|
||||
Thruster in 6 records
|
||||
sample (GP_MAIN_GAME_D.pak entry 0043c41d):
|
||||
Effect_Paralyze eff_h304
|
||||
FadeIn
|
||||
FadeOut
|
||||
JumpIn
|
||||
JumpOut
|
||||
ShieldHitEffectName eff_i005_e
|
||||
ShieldRecoverEffectName
|
||||
100
docs/re/structures/unit-datasheet-static.md
Normal file
100
docs/re/structures/unit-datasheet-static.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# ✅ The STATIC unit datasheet and AI flight model — `Generic`, `Maneuver`, `Effect`
|
||||
|
||||
Found the same way as the weapon tables: **IDXD field names are literal strings in
|
||||
the pool**, so a field-shape search over all 190 782 records finds the carriers
|
||||
without guessing a filename. This is the static source for what the corpus had
|
||||
only measured at runtime — [flight-speed-law](../flight-speed-law.md),
|
||||
[flight-controls-runtime](../flight-controls-runtime.md),
|
||||
[unit-struct-runtime](unit-struct-runtime.md).
|
||||
|
||||
| record | per pak | field names | distinct `ID`s |
|
||||
|---|---|---|---|
|
||||
| `Generic` | **394** | **110** | 178 |
|
||||
| `Maneuver` | **114** | 101 | — |
|
||||
| `Effect` | **114** | 9 | — |
|
||||
|
||||
Repeated identically in every per-language `GP_MAIN_GAME_*.pak`. A unit's
|
||||
`Generic`, `Maneuver` and `Effect` share a pak entry.
|
||||
|
||||
⚠️ `Generic` is the game's own record name, not a placeholder — it is also one of
|
||||
the 65 section names in `data/config-keys.txt`.
|
||||
|
||||
## `Generic` — the unit datasheet
|
||||
|
||||
Sample `UN_e006_ADAN_Vindicator_MargrasF`:
|
||||
|
||||
```
|
||||
ID / Name / Type Craft / UncertainName Craft
|
||||
HP 6400.0 ShieldRatio 1.0 DefencePoint 0.0004
|
||||
AttackCraftPoint 1.0 AttackVesselPoint 0.001
|
||||
ResistanceToShell 0.1 ResistanceToExplosion 0.5 ResistanceToOptics 0.8
|
||||
ResistanceToPlayer 1.0 ResistanceParalyze 0.99
|
||||
Size_X/Y/Z 12.0 / 5.0 / 30.0 Size_Radius 15.0
|
||||
RadarRange 10000.0 FCSRange 8500.0
|
||||
MountedFCS No MountedShieldGenerator Yes
|
||||
ScorePoint 4000 DamageScore 640 MassScore 30
|
||||
HQRatio 1.0 ThrusterRatio 1.0 IsDestructible Yes
|
||||
Model rou_e006 CollisionModel Color_R/G/B 1.0 / 0.5 / 0.1
|
||||
NozzleCount 3 + per-nozzle Jet / AfterBurner / ReverseThruster / Contrail
|
||||
Fx model & frame names, NozzleSpec_00N
|
||||
```
|
||||
|
||||
🔑 **`Model rou_e006` ties the datasheet straight to the mesh names the corpus
|
||||
already decodes**, and `Size_*` / `RadarRange` / `FCSRange` are in the corpus's
|
||||
**1 metre** world unit — a 10 km radar, an 8.5 km fire-control range, a 12 × 5 ×
|
||||
30 m craft.
|
||||
|
||||
## `Maneuver` — the AI flight model
|
||||
|
||||
The single richest find for the port. Sample, same unit:
|
||||
|
||||
```
|
||||
MaximumVelocity 1200 MinimumVelocity 100.0 CruisingVelocity 700
|
||||
Acceleration 600 Deceleration 400
|
||||
SideThrustAcceleration 1000.0 SideThrustVelocity_Max 1000.0
|
||||
Turn_AngularVelocity 180.0 MaximumBank_Normal 60.0
|
||||
YawDragFactor / RollDragFactor / PitchDragFactor 3.0
|
||||
DragFactorThreshold 0.5
|
||||
ArterBurner_Vc 2.5 ArterBurner_Acc 2.0 (the game's own spelling)
|
||||
ReverseThrust_Vc -0.5 ReverseThrust_Acc 2.0
|
||||
UsingChaffRatio 0.5 HomingResistAdjustment 0.8
|
||||
```
|
||||
|
||||
and a set of **named manoeuvres**, each a Yes/No switch plus its own timing,
|
||||
ratio and length bounds:
|
||||
|
||||
```
|
||||
TurnAttack + _CutoffRatio _DoubleRatio _DoubleTimeMin/Max
|
||||
TurnAway + _Time_Minimum/Maximum
|
||||
BarrelRoll + _CountMinimum/Maximum _Radius _Time
|
||||
SideRoll + _Time _Length
|
||||
Slalom + _CutoffRatio _TurnCount_Min/Max
|
||||
Through + _Angle/Length Minimum/Maximum _Time1/2 Min/Max _CutoffRatio
|
||||
HoldPosition + _MinimumTime _MaximumTime _CancelTime _CutoffRatio
|
||||
_BackRatio _SideRatio _LengthMin/Max
|
||||
SolidCutoff + _LengthMin/Max _Ratio
|
||||
BoostAway + _Time_Minimum/Maximum
|
||||
CutoffTimeMin/Max
|
||||
AA_* and AV_* Pitch/Yaw/Roll Min/Max pairs
|
||||
```
|
||||
|
||||
🟡 The `AA_` / `AV_` prefixes pair with `AttackCraftPoint` / `AttackVesselPoint`,
|
||||
so *anti-air* vs *anti-vessel* rate limits is the obvious reading — **not
|
||||
adopted**, nothing here shows the selection.
|
||||
|
||||
## `Effect`
|
||||
|
||||
`ShieldHitEffectName`, `ShieldRecoverEffectName`, `Effect_Paralyze`, plus
|
||||
`JumpIn` / `JumpOut` / `FadeIn` / `FadeOut` slots.
|
||||
|
||||
## 🟡 Not settled
|
||||
|
||||
* No cross-check against the runtime captures — this locates and reads the
|
||||
tables; it does not reconcile them field by field.
|
||||
* `HP_CLASS` / `HP_ID` turned out **not** to be ship stats: they sit on records
|
||||
named for wingmen and ship classes (`CARL`, `ELLEN`, `SANDRA`, `ACROPOLIS`,
|
||||
`Carrier_TCAF1`, `NP_Facility`, …), 120–144 instances each, alongside
|
||||
`HPGauge` / `HPGaugeSub` / `RadarCursorType` on the `ObjectiveMarker_*` and
|
||||
`TutorialMarker_*` records — a **HUD gauge binding table**, not a datasheet.
|
||||
* 178 distinct `Generic` IDs against 394 records per pak — the surplus is
|
||||
unexplained here.
|
||||
Reference in New Issue
Block a user