artemis-nerds / protocol-docs

Unofficial documentation for the Artemis network and file protocols, written by the Artemis community
https://artemis-nerds.github.io/protocol-docs/
MIT License
8 stars 5 forks source link

2.7.0 updates #118

Closed NoseyNick closed 6 years ago

NoseyNick commented 6 years ago

In addition to everything in #93 ...

PlayerShip "In a nebula (bit 3.3, boolean, 2 bytes)" becomes "In a nebula (bit 3.3, boolean, byte)". Though it's USUALLY 0 or 1, plenty of other values have been observed (especially 2 and 3). This is a bit suspicious. (see below)

NPCShip "Unknown (bit 2.8, short)" becomes "Unknown (bit 2.8, byte)" Again 0, 1, 2, 3 popular, (most) other values have been observed. (Obviously we're a bit suspicious this implies it means "In a nebula" but haven't proved that yet).

Nebula gets an extra "Unknown (bit 1.7, int)" appended to the end. We assume (but haven't yet proved) that this has to be the new "Flavor", and indeed values of 1-3 would be consistent with that.

It's plausible the PlayerShip / NPCShip "In a nebula" values "often 0,1,2,3" are trying to convey the flavor of nebula you're in? Again unproven.

Creature gets a new Unknown (bit 3.2, int) after the Unknown (bit 3.1, byte) mentioned in #56 Unknown (bit 3.1, byte) seems to be 1, 2, or 3 - do creatures like to eat a particular "flavor" of nebula? Unknown (bit 3.2, int) is usually -1 but has a whole bunch of other values too 😕

NoseyNick commented 6 years ago

See also #116

NoseyNick commented 6 years ago

To clarify...

Object Type 0x01 PlayerShip

Target (bit 1.1, int) Impulse (bit 1.2, float) Rudder (bit 1.3, float) MaxImpulse (bit 1.4, float) TurnRate (bit 1.5, float) AutoBeams (bit 1.6, byte) WarpFactor (bit 1.7, byte) Energy (bit 1.8, float) ShieldsUp (bit 2.1, short) Unknown22 (bit 2.2, int) ShipType (bit 2.3, int) X (bit 2.4, float) Y (bit 2.5, float) Z (bit 2.6, float) Pitch (bit 2.7, float) Roll (bit 2.8, float) Heading (bit 3.1, float) Velocity (bit 3.2, float) InNebula (bit 3.3, byte) Name (bit 3.4, string) ForeShields (bit 3.5, float) ForeShieldsMax (bit 3.6, float) AftShields (bit 3.7, float) AftShieldsMax (bit 3.8, float) LastDockedBase (bit 4.1, int) RedAlert (bit 4.2, byte) Unknown43 (bit 4.3, float) MainScreenView (bit 4.4, byte) BeamFreq (bit 4.5, byte) AvailableCoolant (bit 4.6, byte) ScienceTarget (bit 4.7, int) CaptainTarget (bit 4.8, int) DriveType (bit 5.1, byte) ScanningID (bit 5.2, int) ScanningProgress (bit 5.3, float) Reverse (bit 5.4, byte) Unknown55 (bit 5.5, int) Side (bit 5.6, byte) Unknown57 (bit 5.7, int) ShipNum (bit 5.8, byte) CapShipID (bit 6.1, int) AccentHue (bit 6.2, float) EmergencyJumpTime (bit 6.3, float) BeaconType (bit 6.4, byte) BeaconDir (bit 6.5, byte)

Object Type 0x05 NPCShip

Name (bit 1.1, string) Throttle (bit 1.2, float) Rudder (bit 1.3, float) MaxImpulse (bit 1.4, float) MaxTurnRate (bit 1.5, float) IsEnemy (bit 1.6, int) VesselType (bit 1.7, int) X (bit 1.8, float) Y (bit 2.1, float) Z (bit 2.2, float) Pitch (bit 2.3, float) Roll (bit 2.4, float) Heading (bit 2.5, float) Velocity (bit 2.6, float) Surrendered (bit 2.7, byte) Unknown28 (bit 2.8, byte) ForeShields (bit 3.1, float) ForeShieldsMax (bit 3.2, float) AftShields (bit 3.3, float) AftShieldsMax (bit 3.4, float) Unknown35 (bit 3.5, short) FleetNum (bit 3.6, byte) EliteAbility (bit 3.7, int) EliteInUse (bit 3.8, int) SingleScan (bit 4.1, int) DoubleScan (bit 4.2, int) ShowOnMaps (bit 4.3, int) Side (bit 4.4, byte) Unknown45 (bit 4.5, byte) Unknown46 (bit 4.6, byte) Unknown47 (bit 4.7, byte) targetPointX (bit 4.8, float) targetPointY (bit 5.1, float) targetPointZ (bit 5.2, float) Tagged (bit 5.3, byte) Unknown54 (bit 5.4, byte) BeamsDamg (bit 5.5, float) TorpsDamg (bit 5.6, float) SenseDamg (bit 5.7, float) ManuvDamg (bit 5.8, float) ImpulDamg (bit 6.1, float) DriveDamg (bit 6.2, float) FShldDamg (bit 6.3, float) AShldDamg (bit 6.4, float) ShFreqA (bit 6.5, float) ShFreqB (bit 6.6, float) ShFreqC (bit 6.7, float) ShFreqD (bit 6.8, float) ShFreqE (bit 7.1, float)

Object Type 0x0a Nebula

X (bit 1.1, float) Y (bit 1.2, float) Z (bit 1.3, float) R (bit 1.4, float) G (bit 1.5, float) B (bit 1.6, float) nebType (bit 1.7, byte)

Object Type 0x0f Creature

X (bit 1.1, float) Y (bit 1.2, float) Z (bit 1.3, float) Name (bit 1.4, string) Heading (bit 1.5, float) Pitch (bit 1.6, float) Roll (bit 1.7, float) CreatureType (bit 1.8, int) Unknown21 (bit 2.1, int) Unknown22 (bit 2.2, int) Unknown23 (bit 2.3, int) Unknown24 (bit 2.4, int) Unknown25 (bit 2.5, int) Unknown26 (bit 2.6, int) Health (bit 2.7, float) MaxHealth (bit 2.8, float) Unknown31 (bit 3.1, byte) Unknown32 (bit 3.2, int)

http://noseynick.org/artemis/ parser.pl --protover 27 --objdocs 😄

NoseyNick commented 6 years ago

Anomaly PickupType=9 seen in the wild, despite not being defined in 2.7.0/mission-file-docs.txt Details TBC - will have to find + pick one up.

NoseyNick commented 6 years ago

GenericMesh also gets an extra Unknown int (or at least 4-byte field) added to the end. Suspicion would be that this is scanning-related, considering changes.txt says "changes for V2.6.3 [...] GenericMeshs can now be selected and scanned by the Science console"

Object Type 0x0e GenericMesh

X (bit 1.1, float) Y (bit 1.2, float) Z (bit 1.3, float) Unknown (bit 1.4, int) Unknown (bit 1.5, int) Unknown (bit 1.6, int) roll (bit 1.7, float) pitch (bit 1.8, float) angle (bit 2.1, float) rollDelta (bit 2.2, float) pitchDelta (bit 2.3, float) angleDelta (bit 2.4, float) Name (bit 2.5, string) meshFileName (bit 2.6, string) textureFileName (bit 2.7, string) pushRadius (bit 2.8, float) blocksShotFlag (bit 3.1, byte) artScale (bit 3.2, float) ColorRed (bit 3.3, float) ColorGreen (bit 3.4, float) ColorBlue (bit 3.5, float) fakeShieldsFront (bit 3.6, float) fakeShieldsRear (bit 3.7, float) Unknown (bit 3.8, byte) Unknown (bit 4.1, string) Unknown (bit 4.2, string) Unknown (bit 4.3, int) <-- this is the new one

NoseyNick commented 6 years ago

PlayerShip "In a nebula (bit 3.3, boolean, byte)" tells you which "nebType" you are in (1,2,3) or 0 for "not in a nebula". Apart from the fact that 3 nebTypes exist, there seems to be no notable difference between them from a game mechanics perspective, they all limit you to warp1. Scripting may (ab)use the different types for story purposes.

NoseyNick commented 6 years ago

See also #122

NoseyNick commented 6 years ago

Just a quick note here, because it looks like it doesn't deserve a new ticket...

2.7.1 updates:

From a protocol perspective: None, as far as we can tell :laughing: