Files
Sylpheed/docs/re/data/datasheet-schema.txt
Sylpheed RE agent fa8a538c33 re: the disc ships the unit datasheet's own SCHEMA (and 文字列 was not a placeholder)
This corrects the previous commit. 文字列 is not a developer's leftover: it is
one member of a six-word Shift-JIS TYPE vocabulary, and the records carrying it
are a machine-readable schema for the unit datasheet.

The whole non-ASCII population on the disc is 6 distinct values out of 99328 -
0 of 3496 record names and 0 of 12173 field names - and all six are type words:

  文字列              string                366 uses
  NS_"文字列"         NS_ string             12
  整数 / 整数値        integer            66 / 6
  浮動小数値           floating-point value  504
  浮動小数値[0〜1]     float in [0,1]         36

990 type-valued fields. So the reader defect noted last time is real but bounded
to these six strings, and name_hash re-encodes Latin-1 byte-for-byte, so hashing
was never affected.

They sit in 15 records x 6 GP_MAIN_GAME_* paks = 90 instances, i.e. 15 records
with ONE user. The names are exactly the unit substructure family, and six carry
a literal wildcard: Turret_???, Hatch_???, Bridge_???, Thruster_???,
ShieldGenerator_???, Versatile_???, and NS_*. ??? is the numeric-suffix wildcard
at record AND field level - Turret_??? is the schema for Turret_000..00N, and
inside it CannonFrame_??? / MuzzleFrame_??? stand for the numbered slots.

Where a field's type is an enumeration the schema holds an EXAMPLE value instead
of a type name: Yes for the five booleans, Vessel for Generic.Type (the 43
Craft + 71 Vessel split), Ship_ for the ID prefix convention. Maneuver is the
one fully-typed record, 34 of 34. Every ResistanceTo* and every Color_* channel
is declared FLOAT[0..1] - normalised by declaration, matching the sampled values
in unit-datasheet-static. Generic.NozzleSpec_??? has its own type NS_"文字列"
and NS_* is a record, so the nozzle spec is a nested sub-schema.

Control separates schema from data cleanly: the _??? records and NS_* exist ONLY
as schema, 6 of 6 instances typed, while the eight real substructure names are
typed in 6 instances and untyped in the rest - Generic 6 of 3651, the others
6 of 684 each.

Turret_??? carries the game's own typo NomalModel beside DamagedModel.

This gives the port an authoritative field-type table: types the disc declares,
rather than types inferred from sampled values.

New artefact with its regenerator: tools/re-capture/datasheet_schema.py ->
docs/re/data/datasheet-schema.txt. All fifteen existing artefacts byte-identical.
2026-08-28 08:22:36 +00:00

229 lines
8.3 KiB
Plaintext

the unit datasheet schema shipped in GP_MAIN_GAME_*.pak
15 schema records; identical in all six paks (x6 = one user)
=== Bridge_??? (16 fields, 12 typed) ===
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
Name STRING
NomalModel STRING
ParentStructureID STRING
PowerRatio FLOAT
Radius FLOAT
SpreadDamage FLOAT
=== Effect (2 fields, 2 typed) ===
Shield STRING
Thruster STRING
=== Explosion (2 fields, 2 typed) ===
Delay FLOAT
DelayAdjustment FLOAT
=== Generic (23 fields, 20 typed) ===
Color_B FLOAT[0..1]
Color_G FLOAT[0..1]
Color_R FLOAT[0..1]
HP FLOAT
HQRatio FLOAT
ID example: 'Ship_'
IsDestructible example: 'Yes'
Model STRING
Name STRING
NozzleCount INT
NozzleFrame_??? STRING
NozzleSpec_??? NS_STRING
ResistanceToExplosion FLOAT[0..1]
ResistanceToOptics FLOAT[0..1]
ResistanceToShell FLOAT[0..1]
ShieldRatio FLOAT
Size_Radius FLOAT
Size_X FLOAT
Size_Y FLOAT
Size_Z FLOAT
ThrusterRatio FLOAT
Type example: 'Vessel'
UncertainName STRING
=== Hatch_??? (19 fields, 15 typed) ===
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
LoadedCount INT
MaxAvailableCount INT
Name STRING
NomalModel STRING
ParentStructureID STRING
Radius FLOAT
SpreadDamage FLOAT
SquadronID STRING
TakeoffInterval FLOAT
=== Maneuver (34 fields, 34 typed) ===
AA_PitchMinus_Max FLOAT
AA_PitchMinus_Min FLOAT
AA_PitchPlus_Max FLOAT
AA_PitchPlus_Min FLOAT
AA_Roll_Max FLOAT
AA_Roll_Min FLOAT
AA_Yaw_Max FLOAT
AA_Yaw_Min FLOAT
AV_PitchMinus_Max FLOAT
AV_PitchMinus_Min FLOAT
AV_PitchPlus_Max FLOAT
AV_PitchPlus_Min FLOAT
AV_Roll_Max FLOAT
AV_Roll_Min FLOAT
AV_Yaw_Max FLOAT
AV_Yaw_Min FLOAT
AccPitchFactor FLOAT
Acceleration FLOAT
ArterBurner_Acc FLOAT
ArterBurner_Vc FLOAT
CruisingVelocity FLOAT
DecPitchFactor FLOAT
Deceleration FLOAT
DragFactorThreshold FLOAT
MaximumBank_Normal FLOAT
MaximumVelocity FLOAT
MinimumVelocity FLOAT
PitchDragFactor FLOAT
ReverseThrust_Acc FLOAT
ReverseThrust_Vc FLOAT
RollDragFactor FLOAT
SideThrustAcceleration FLOAT
SideThrustVelocity_Max FLOAT
YawDragFactor FLOAT
=== Mass (2 fields, 2 typed) ===
DryMass FLOAT
GrossMass FLOAT
=== NS_* (10 fields, 8 typed) ===
AttenuationAlpha example: 'Yes'
AttenuationVolume example: 'Yes'
Color_B FLOAT
Color_G FLOAT
Color_R FLOAT
Deceleration FLOAT
DeleteFadeSpeed FLOAT
Interval FLOAT
NodeCount INT_VALUE
StartingVelocity FLOAT
=== SE (2 fields, 2 typed) ===
ExplosionSE STRING
Thruster STRING
=== Shield (4 fields, 4 typed) ===
ChargeDelay FLOAT
ChargeDelay_Break FLOAT
ChargeSpeed FLOAT
MaxValue FLOAT
=== ShieldGenerator_??? (16 fields, 12 typed) ===
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
Name STRING
NomalModel STRING
ParentStructureID STRING
PowerRatio FLOAT
Radius FLOAT
SpreadDamage FLOAT
=== StructureCount (6 fields, 6 typed) ===
BridgeCount INT
HatchCount INT
ShieldGeneratorCount INT
ThrusterCount INT
TurretCount INT
VersatileCount INT
=== Thruster_??? (19 fields, 15 typed) ===
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
Name STRING
NomalModel STRING
NozzleCount INT
NozzleFrame_??? STRING
NozzleSpec_??? NS_STRING
ParentStructureID STRING
PowerRatio FLOAT
Radius FLOAT
SpreadDamage FLOAT
=== Turret_??? (25 fields, 20 typed) ===
AngularVelocity FLOAT
CannonFrame_??? STRING
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsAuto example: 'Yes'
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
MuzzleFrame_??? STRING
Name STRING
NomalModel STRING
ParentStructureID STRING
PitchLimit_Depression FLOAT
PitchLimit_Elevation FLOAT
Radius FLOAT
SequencingCount INT
SequencingInterval FLOAT
SpreadDamage FLOAT
WeaponID STRING
YawLimit FLOAT
=== Versatile_??? (15 fields, 11 typed) ===
DamagedModel STRING
Effect_Explosion STRING
Effect_Flare STRING
Frame STRING
HP FLOAT
ID STRING
IsDestructible example: 'Yes'
IsInvolved example: 'Yes'
IsRadarVisible example: 'Yes'
IsShielded example: 'Yes'
Name STRING
NomalModel STRING
ParentStructureID STRING
Radius FLOAT
SpreadDamage FLOAT