t2-demo-parser 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BitStream.js.map +1 -1
- package/dist/BitStream.test.js.map +1 -1
- package/dist/ClassRegistry.js.map +1 -1
- package/dist/ClassRegistry.test.js.map +1 -1
- package/dist/DataBlockParsers.d.ts.map +1 -1
- package/dist/DataBlockParsers.js +78 -60
- package/dist/DataBlockParsers.js.map +1 -1
- package/dist/DataBlockParsers.test.d.ts +2 -0
- package/dist/DataBlockParsers.test.d.ts.map +1 -0
- package/dist/DataBlockParsers.test.js +134 -0
- package/dist/DataBlockParsers.test.js.map +1 -0
- package/dist/DemoParser.js.map +1 -1
- package/dist/DemoParser.test.js.map +1 -1
- package/dist/EventParsers.js.map +1 -1
- package/dist/GhostManager.js.map +1 -1
- package/dist/GhostTracker.test.js.map +1 -1
- package/dist/HuffmanProcessor.js.map +1 -1
- package/dist/LiveParser.js.map +1 -1
- package/dist/PacketParser.js.map +1 -1
- package/dist/Timeline.js.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/dataBlockDataTypes.d.ts +56 -35
- package/dist/dataBlockDataTypes.d.ts.map +1 -1
- package/dist/dataBlockDataTypes.js.map +1 -1
- package/dist/dataTypes.js.map +1 -1
- package/dist/dump.js.map +1 -1
- package/dist/eventDataTypes.js.map +1 -1
- package/dist/ghostDataTypes.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/PacketParser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PacketParser.js","sourceRoot":"","sources":["../src/PacketParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PacketParser.js","sourceRoot":"","sources":["../src/PacketParser.ts"],"names":[],"mappings":"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","sourcesContent":["import createDebug from \"debug\";\nimport { BitStream } from \"./BitStream.js\";\nimport {\n DataPacket,\n MaxGhostCount,\n GhostMsgEndGhosting,\n NetEventClassBitSize,\n NetEventClassFirst,\n NetObjectClassBitSize,\n NetObjectClassFirst,\n} from \"./types.js\";\n\nconst debugGhosts = createDebug(\"t2-demo-parser:ghosts\");\nimport type {\n ConnectionProtocolState,\n DnetHeader,\n RateInfo,\n GameState,\n PacketData,\n NetEventInfo,\n GhostUpdate,\n} from \"./types.js\";\nimport type {\n ClassRegistry,\n ConnectionContext,\n GhostParserEntry,\n ParsedData,\n} from \"./ClassRegistry.js\";\nimport type { EventData, SimDataBlockEventData } from \"./eventDataTypes.js\";\nimport type { GhostTracker } from \"./GhostManager.js\";\n\n/**\n * Parses individual network packets from demo recording blocks.\n *\n * Packet layout (from the server connection perspective):\n * 1. dnet header (processRawPacket)\n * 2. Rate info (handlePacket)\n * 3. GameConnection::readPacket — game state, moves, etc.\n * 4. NetConnection::readPacket — events, then ghosts\n */\nexport class PacketParser {\n private registry: ClassRegistry;\n private ghostTracker: GhostTracker;\n private compressionPoint = { x: 0, y: 0, z: 0 };\n private controlParserByGhostIndex = new Map<number, GhostParserEntry>();\n private dataBlockDataMap?: Map<number, ParsedData>;\n private lastSeqRecvdAtSend = new Array<number>(32).fill(0);\n private lastSeqRecvd = 0;\n private highestAckedSeq = 0;\n private lastSendSeq = 0;\n private recvAckMask = 0;\n private connectSequence = 0;\n private lastRecvAckAck = 0;\n private _connectionEstablished = false;\n private nextRecvEventSeq = 0;\n private pendingGuaranteedEvents: Array<{\n absoluteSequenceNumber: number;\n event: NetEventInfo;\n }> = [];\n\n // Stats\n controlObjectParsed = 0;\n controlObjectFailed = 0;\n eventsParsed = 0;\n eventsFailed = 0;\n ghostCreatesParsed = 0;\n ghostUpdatesParsed = 0;\n ghostDeletes = 0;\n ghostsFailed = 0;\n /** Ghosts where our tracker says \"new\" but the classId is unregistered.\n * This indicates a tracker divergence: the server sent UPDATE data\n * (no classId prefix) for a ghost we don't have, so we misread the\n * first 7 bits of update data as a classId. */\n ghostsTrackerDiverged = 0;\n packetsParsed = 0;\n protocolRejected = 0;\n protocolNoDispatch = 0;\n\n constructor(\n registry: ClassRegistry,\n ghostTracker: GhostTracker,\n options?: {\n dataBlockDataMap?: Map<number, ParsedData>;\n connectionProtocolState?: ConnectionProtocolState;\n nextRecvEventSeq?: number;\n }\n ) {\n this.registry = registry;\n this.ghostTracker = ghostTracker;\n this.dataBlockDataMap = options?.dataBlockDataMap;\n if (options?.connectionProtocolState) {\n this.setConnectionProtocolState(options.connectionProtocolState);\n }\n if (typeof options?.nextRecvEventSeq === \"number\") {\n this.nextRecvEventSeq = options.nextRecvEventSeq >>> 0;\n }\n }\n\n getCompressionPoint(): { x: number; y: number; z: number } {\n return this.compressionPoint;\n }\n\n getDataBlockDataMap(): Map<number, ParsedData> | undefined {\n return this.dataBlockDataMap;\n }\n\n private getConnectionContext(): ConnectionContext {\n const dbMap = this.dataBlockDataMap;\n return {\n compressionPoint: this.compressionPoint,\n ghostTracker: this.ghostTracker,\n getDataBlockParser: (classId: number) =>\n this.registry.getDataBlockParser(classId),\n getDataBlockData: dbMap\n ? (objectId: number) => dbMap.get(objectId)\n : undefined,\n getGhostParser: (classId: number) => this.registry.getGhostParser(classId),\n };\n }\n\n private _setNextRecvEventSeq(nextRecvEventSeq: number): void {\n this.nextRecvEventSeq = nextRecvEventSeq >>> 0;\n }\n\n setConnectionProtocolState(state: ConnectionProtocolState): void {\n this.lastSeqRecvdAtSend = state.lastSeqRecvdAtSend.slice(0, 32);\n while (this.lastSeqRecvdAtSend.length < 32) {\n this.lastSeqRecvdAtSend.push(0);\n }\n this.lastSeqRecvd = state.lastSeqRecvd >>> 0;\n this.highestAckedSeq = state.highestAckedSeq >>> 0;\n this.lastSendSeq = state.lastSendSeq >>> 0;\n this.recvAckMask = state.ackMask >>> 0;\n this.connectSequence = state.connectSequence >>> 0;\n this.lastRecvAckAck = state.lastRecvAckAck >>> 0;\n this._connectionEstablished = state.connectionEstablished;\n }\n\n /**\n * Emulate ConnectionProtocol::buildSendPacketHeader (FUN_0043d2d0, data path).\n * Demo block type 1 indicates a local send-packet trigger.\n */\n onSendPacketTrigger(): void {\n this.lastSendSeq = (this.lastSendSeq + 1) >>> 0;\n this.lastSeqRecvdAtSend[this.lastSendSeq & 0x1f] = this.lastSeqRecvd >>> 0;\n }\n\n /**\n * Emulates ConnectionProtocol::processRawPacket (FUN_0043d4d0).\n * A packet may be syntactically valid but still ignored for game payload\n * dispatch due to sequence/connect-window checks or duplicate seq numbers.\n */\n private applyProtocolHeader(dnetHeader: DnetHeader): {\n accepted: boolean;\n dispatchData: boolean;\n } {\n if (dnetHeader.connectSeqBit !== (this.connectSequence & 1)) {\n return { accepted: false, dispatchData: false };\n }\n if (dnetHeader.ackByteCount > 4 || dnetHeader.packetType > 2) {\n return { accepted: false, dispatchData: false };\n }\n\n let seqNumber = (\n dnetHeader.seqNumber | (this.lastSeqRecvd & 0xffff_fe00)\n ) >>> 0;\n if (seqNumber < this.lastSeqRecvd) {\n seqNumber = (seqNumber + 0x200) >>> 0;\n }\n if (this.lastSeqRecvd + 0x1f < seqNumber) {\n return { accepted: false, dispatchData: false };\n }\n\n let highestAck = (\n dnetHeader.highestAck | (this.highestAckedSeq & 0xffff_fe00)\n ) >>> 0;\n if (highestAck < this.highestAckedSeq) {\n highestAck = (highestAck + 0x200) >>> 0;\n }\n if (this.lastSendSeq < highestAck) {\n return { accepted: false, dispatchData: false };\n }\n\n const seqShift = (seqNumber - this.lastSeqRecvd) & 0x1f;\n this.recvAckMask = (this.recvAckMask << seqShift) >>> 0;\n if (dnetHeader.packetType === DataPacket) {\n this.recvAckMask = (this.recvAckMask | 1) >>> 0;\n }\n\n for (let ackSeq = this.highestAckedSeq + 1; ackSeq <= highestAck; ackSeq++) {\n const isAcked = (\n dnetHeader.ackMask & (1 << ((highestAck - ackSeq) & 0x1f))\n ) !== 0;\n if (isAcked) {\n this.lastRecvAckAck = this.lastSeqRecvdAtSend[ackSeq & 0x1f] >>> 0;\n }\n }\n if (seqNumber - this.lastRecvAckAck > 0x20) {\n this.lastRecvAckAck = seqNumber - 0x20;\n }\n this.highestAckedSeq = highestAck;\n\n const dispatchData =\n this.lastSeqRecvd !== seqNumber && dnetHeader.packetType === DataPacket;\n this.lastSeqRecvd = seqNumber;\n\n return { accepted: true, dispatchData };\n }\n\n parsePacket(data: Uint8Array): PacketData {\n const bs = new BitStream(data);\n\n // 1. Parse dnet header\n const dnetHeader = this.readDnetHeader(bs);\n const protocol = this.applyProtocolHeader(dnetHeader);\n\n this.packetsParsed++;\n\n // ConnectionProtocol may reject this packet entirely (window/connect checks),\n // or accept it but suppress game dispatch (duplicate seq / non-data packet).\n if (!protocol.accepted) {\n this.protocolRejected++;\n return {\n dnetHeader,\n rateInfo: {},\n gameState: this.emptyGameState(),\n events: [],\n ghosts: [],\n };\n }\n if (!protocol.dispatchData) {\n this.protocolNoDispatch++;\n return {\n dnetHeader,\n rateInfo: {},\n gameState: this.emptyGameState(),\n events: [],\n ghosts: [],\n };\n }\n\n // 2. Rate info (NetConnection::handlePacket)\n const rateInfo = this.readRateInfo(bs);\n\n // 3. Game state (GameConnection::readPacket — server connection path)\n bs.setStringBuffer(true);\n const gameState = this.readGameState(bs);\n\n // Only read events/ghosts if game state completed successfully.\n // When game state bails (control object dirty with no parser), the\n // stream position is wrong and we'd read garbage data.\n const gameStateComplete =\n gameState.controlObjectDataStart === undefined ||\n gameState.controlObjectData !== undefined;\n\n // 4. Events (NetConnection::readPacket -> eventReadPacket)\n const events = gameStateComplete ? this.readEvents(bs) : [];\n\n // Only read ghosts if all events were successfully parsed.\n // When an event can't be parsed, readEvents returns early and the\n // stream position is wrong — reading ghosts would produce garbage.\n const lastEvent = events[events.length - 1];\n const eventsComplete =\n !lastEvent || lastEvent.dataBitsEnd !== lastEvent.dataBitsStart;\n\n // 5. Ghosts (NetConnection::readPacket -> ghostReadPacket)\n const ghostSectionStart = gameStateComplete && eventsComplete\n ? bs.getCurPos()\n : undefined;\n const ghosts =\n gameStateComplete && eventsComplete\n ? this.readGhosts(bs, dnetHeader.seqNumber)\n : [];\n\n bs.setStringBuffer(false);\n\n return { dnetHeader, rateInfo, gameState, events, ghosts, ghostSectionStart };\n }\n\n /**\n * Parse the dnet packet header (from processRawPacket in dnet.cc).\n */\n private readDnetHeader(bs: BitStream): DnetHeader {\n const gameFlag = bs.readFlag();\n const connectSeqBit = bs.readInt(1);\n const seqNumber = bs.readInt(9);\n const highestAck = bs.readInt(9);\n const packetType = bs.readInt(2);\n const ackByteCount = bs.readInt(3);\n const ackMask = ackByteCount > 0 ? bs.readInt(8 * ackByteCount) : 0;\n\n return {\n gameFlag,\n connectSeqBit,\n seqNumber,\n highestAck,\n packetType,\n ackByteCount,\n ackMask,\n };\n }\n\n /**\n * Parse rate info from handlePacket in netConnection.cc.\n */\n private readRateInfo(bs: BitStream): RateInfo {\n const info: RateInfo = {};\n if (bs.readFlag()) {\n info.updateDelay = bs.readInt(10);\n info.packetSize = bs.readInt(10);\n }\n if (bs.readFlag()) {\n info.maxUpdateDelay = bs.readInt(10);\n info.maxPacketSize = bs.readInt(10);\n }\n return info;\n }\n\n /**\n * Parse game state from GameConnection::readPacket (server connection path).\n */\n private readGameState(bs: BitStream): GameState {\n const lastMoveAck = bs.readInt(32);\n\n // Damage flash / whiteout\n let damageFlash: number | undefined;\n let whiteOut: number | undefined;\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n damageFlash = bs.readFloat(7);\n }\n if (bs.readFlag()) {\n whiteOut = bs.readFloat(7) * 1.5;\n }\n }\n\n // Lock/homing state\n let selfLocked: boolean | undefined;\n let selfHomed: boolean | undefined;\n if (bs.readFlag()) {\n selfLocked = bs.readFlag();\n selfHomed = bs.readFlag();\n }\n\n // Seeker tracking state\n let seekerTracking: boolean | undefined;\n let seekerTrackingPos: { x: number; y: number; z: number } | undefined;\n let seekerMode: number | undefined;\n let seekerObjectGhostIndex: number | undefined;\n let targetPos: { x: number; y: number; z: number } | undefined;\n if (bs.readFlag()) {\n seekerTracking = bs.readFlag();\n // Binary 0x005fc020: when seekerTracking is true, reads 3×F32 (Point3F)\n // for the seeker target position (stored at connection+0x8454)\n if (seekerTracking) {\n seekerTrackingPos = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n }\n seekerMode = bs.readRangedU32(0, 2);\n if (seekerMode === 1) {\n if (bs.readFlag()) {\n seekerObjectGhostIndex = bs.readRangedU32(0, MaxGhostCount - 1);\n }\n } else if (seekerMode === 2) {\n targetPos = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n }\n }\n\n // Sensor ping/jam flags\n const pinged = bs.readFlag();\n const jammed = bs.readFlag();\n\n // Control object state\n let controlObjectGhostIndex: number | undefined;\n let controlObjectDataStart: number | undefined;\n let controlObjectDataEnd: number | undefined;\n let controlObjectData: ParsedData | undefined;\n let compressionPoint: { x: number; y: number; z: number } | undefined;\n\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n // Control object is dirty — full update via readPacketData.\n // In Tribes 2 (build 25034), only Player and Camera override\n // writePacketData/readPacketData, so the control object is\n // always one of these two classes. We try candidates in order:\n // 1. Tracker classId (may be stale due to ghost index recycling)\n // 2. Cached parser from previous successful parse of this index\n // 3. Player (classId 25) — the normal control object\n // 4. Camera (classId 4) — spectator mode\n const gIndex = bs.readInt(10);\n controlObjectGhostIndex = gIndex;\n controlObjectDataStart = bs.getCurPos();\n const start = bs.savePos();\n const ghost = this.ghostTracker.getGhost(gIndex);\n\n const preferredEntry = ghost\n ? this.registry.getGhostParser(ghost.classId)\n : undefined;\n const cachedEntry = this.controlParserByGhostIndex.get(gIndex);\n const playerEntry = this.registry.getGhostParser(25); // Player\n const cameraEntry = this.registry.getGhostParser(4); // Camera\n\n // Build candidate list (deduplicated, only those with readPacketData)\n const candidates: GhostParserEntry[] = [];\n const seen = new Set<string>();\n const addCandidate = (entry: GhostParserEntry | undefined): void => {\n if (!entry?.readPacketData) return;\n if (seen.has(entry.name)) return;\n seen.add(entry.name);\n candidates.push(entry);\n };\n addCandidate(preferredEntry);\n addCandidate(cachedEntry);\n addCandidate(playerEntry);\n addCandidate(cameraEntry);\n\n let parsed = false;\n for (const entry of candidates) {\n bs.restorePos(start);\n try {\n const conn = this.getConnectionContext();\n const data = entry.readPacketData!(bs, conn);\n const bitsConsumed = bs.getCurPos() - controlObjectDataStart!;\n if (bitsConsumed <= 0 || bs.isError()) {\n continue;\n }\n\n controlObjectData = data;\n controlObjectDataEnd = bs.getCurPos();\n this.controlParserByGhostIndex.set(gIndex, entry);\n if (conn.compressionPoint !== this.compressionPoint) {\n this.compressionPoint = conn.compressionPoint;\n compressionPoint = this.compressionPoint;\n }\n this.controlObjectParsed++;\n parsed = true;\n break;\n } catch {\n // Try next candidate.\n }\n }\n\n if (!parsed) {\n bs.restorePos(start);\n // No parser — bail from game state\n controlObjectDataEnd = controlObjectDataStart;\n this.controlObjectFailed++;\n return {\n lastMoveAck,\n damageFlash,\n whiteOut,\n selfLocked,\n selfHomed,\n seekerTracking,\n seekerTrackingPos,\n seekerMode,\n seekerObjectGhostIndex,\n targetPos,\n pinged,\n jammed,\n controlObjectGhostIndex,\n controlObjectDataStart,\n controlObjectDataEnd,\n controlObjectData,\n targetVisibility: [],\n };\n }\n } else {\n // Compression point update — always accept (engine doesn't validate)\n compressionPoint = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n this.compressionPoint = compressionPoint;\n }\n }\n\n // Target visibility masks\n const targetVisibility: { index: number; mask: number }[] = [];\n while (bs.readFlag()) {\n targetVisibility.push({\n index: bs.readInt(4),\n mask: bs.readInt(32),\n });\n }\n\n // Camera FOV\n let cameraFov: number | undefined;\n if (bs.readFlag()) {\n cameraFov = bs.readInt(8);\n }\n\n return {\n lastMoveAck,\n damageFlash,\n whiteOut,\n selfLocked,\n selfHomed,\n seekerTracking,\n seekerTrackingPos,\n seekerMode,\n seekerObjectGhostIndex,\n targetPos,\n pinged,\n jammed,\n controlObjectGhostIndex,\n controlObjectDataStart,\n controlObjectDataEnd,\n controlObjectData,\n compressionPoint,\n targetVisibility: targetVisibility.length > 0 ? targetVisibility : undefined,\n cameraFov,\n };\n }\n\n /**\n * Parse events from eventReadPacket in netEvent.cc.\n *\n * Two phases:\n * 1. Unguaranteed events: while(readFlag) { classId(6b) + unpack }\n * 2. Guaranteed events: while(readFlag) { seqFlag(1b), [seq(7b)], classId(6b) + unpack }\n */\n private readEvents(bs: BitStream): NetEventInfo[] {\n const dispatchedEvents: NetEventInfo[] = [];\n let unguaranteedPhase = true;\n let prevGuaranteedSeq = -2;\n\n while (true) {\n const bit = bs.readFlag();\n if (unguaranteedPhase && !bit) {\n // Transition to guaranteed phase. Binary immediately reads one more\n // continuation bit for that phase.\n unguaranteedPhase = false;\n const guaranteedBit = bs.readFlag();\n if (!guaranteedBit) {\n this.dispatchGuaranteedEvents(dispatchedEvents);\n break;\n }\n } else if (!unguaranteedPhase && !bit) {\n this.dispatchGuaranteedEvents(dispatchedEvents);\n break;\n } else if (!bit) {\n break;\n }\n\n let sequenceNumber: number | undefined;\n let absoluteSequenceNumber: number | undefined;\n if (!unguaranteedPhase) {\n if (bs.readFlag()) {\n sequenceNumber = (prevGuaranteedSeq + 1) & 0x7f;\n } else {\n sequenceNumber = bs.readInt(7);\n }\n prevGuaranteedSeq = sequenceNumber;\n absoluteSequenceNumber =\n sequenceNumber | (this.nextRecvEventSeq & 0xffffff80);\n if (absoluteSequenceNumber < this.nextRecvEventSeq) {\n absoluteSequenceNumber += 0x80;\n }\n }\n\n const classId = bs.readInt(NetEventClassBitSize) + NetEventClassFirst;\n const dataBitsStart = bs.getCurPos();\n\n const parserEntry = this.registry.getEventParser(classId);\n let parsedData: ParsedData | undefined;\n\n if (parserEntry) {\n try {\n const conn = this.getConnectionContext();\n parsedData = parserEntry.unpack(bs, conn);\n this.eventsParsed++;\n } catch {\n this.eventsFailed++;\n dispatchedEvents.push({\n classId,\n guaranteed: !unguaranteedPhase,\n sequenceNumber,\n absoluteSequenceNumber,\n dataBitsStart,\n dataBitsEnd: dataBitsStart,\n });\n return dispatchedEvents;\n }\n } else {\n // No parser — cannot advance safely.\n dispatchedEvents.push({\n classId,\n guaranteed: !unguaranteedPhase,\n sequenceNumber,\n absoluteSequenceNumber,\n dataBitsStart,\n dataBitsEnd: dataBitsStart,\n });\n return dispatchedEvents;\n }\n\n const event: NetEventInfo = {\n classId,\n guaranteed: !unguaranteedPhase,\n sequenceNumber,\n absoluteSequenceNumber,\n dataBitsStart,\n dataBitsEnd: bs.getCurPos(),\n parsedData,\n };\n\n if (unguaranteedPhase) {\n dispatchedEvents.push(event);\n if (parsedData) {\n this.applyEventSideEffects(parsedData);\n }\n } else if (absoluteSequenceNumber !== undefined) {\n this.enqueueGuaranteedEvent(absoluteSequenceNumber, event);\n }\n }\n\n return dispatchedEvents;\n }\n\n private enqueueGuaranteedEvent(\n absoluteSequenceNumber: number,\n event: NetEventInfo\n ): void {\n let insertAt = 0;\n while (\n insertAt < this.pendingGuaranteedEvents.length &&\n this.pendingGuaranteedEvents[insertAt].absoluteSequenceNumber <\n absoluteSequenceNumber\n ) {\n insertAt++;\n }\n this.pendingGuaranteedEvents.splice(insertAt, 0, {\n absoluteSequenceNumber,\n event,\n });\n }\n\n private dispatchGuaranteedEvents(dispatchedEvents: NetEventInfo[]): void {\n while (\n this.pendingGuaranteedEvents.length > 0 &&\n this.pendingGuaranteedEvents[0].absoluteSequenceNumber ===\n this.nextRecvEventSeq\n ) {\n const queued = this.pendingGuaranteedEvents.shift();\n if (!queued) break;\n this.nextRecvEventSeq = (this.nextRecvEventSeq + 1) >>> 0;\n dispatchedEvents.push(queued.event);\n if (queued.event.parsedData) {\n this.applyEventSideEffects(queued.event.parsedData);\n }\n }\n }\n\n /**\n * Apply event side effects that alter ghost index state.\n * These effects occur before ghostReadPacket on the same packet.\n */\n private applyEventSideEffects(parsedData: ParsedData): void {\n const eventType = parsedData.type;\n\n if (eventType === \"GhostingMessageEvent\") {\n const message = parsedData.message;\n // Tribes 2 handleGhostMessage: EndGhosting clears all local ghosts\n // and invalidates all datablocks (they get re-sent for the new mission).\n if (typeof message === \"number\" && message === GhostMsgEndGhosting) {\n this.ghostTracker.clear();\n this.dataBlockDataMap?.clear();\n }\n return;\n }\n\n if (eventType === \"GhostAlwaysObjectEvent\") {\n const ghostIndex = parsedData.ghostIndex;\n const classId = parsedData.classId;\n if (typeof ghostIndex === \"number\" && typeof classId === \"number\") {\n const parserEntry = this.registry.getGhostParser(classId);\n this.ghostTracker.createGhost(\n ghostIndex,\n classId,\n parserEntry?.name ?? `unknown_${classId}`\n );\n }\n }\n\n // SimDataBlockEvent: store parsed DataBlock data so ghost parsers\n // (e.g., WheeledVehicle wheel count) can look it up by objectId.\n if (eventType === \"SimDataBlockEvent\" && this.dataBlockDataMap) {\n const dbEvent = parsedData as SimDataBlockEventData;\n if (\n dbEvent.dataBlockData &&\n typeof dbEvent.objectId === \"number\"\n ) {\n this.dataBlockDataMap.set(dbEvent.objectId, dbEvent.dataBlockData);\n }\n }\n }\n\n /**\n * Parse ghosts from ghostReadPacket in netGhost.cc.\n */\n private readGhosts(bs: BitStream, seqNumber: number): GhostUpdate[] {\n const ghosts: GhostUpdate[] = [];\n\n if (!bs.readFlag()) {\n return ghosts;\n }\n\n const idSize = bs.readInt(3) + 3;\n\n while (bs.readFlag()) {\n // If the stream ran out of data during the moreFlag read, the\n // readFlag returned false (terminating the loop) with error set.\n // Check here for the case where readFlag returned true but the\n // subsequent header reads exhaust the stream.\n if (bs.isError()) break;\n\n const index = bs.readInt(idSize);\n\n // If the stream ran out of data during header reads, stop processing.\n // Without this check, exhausted reads return 0 (defaulting index to 0,\n // classId to 0) and the ghost parser runs on empty data, producing\n // a \"successful\" parse that consumed 0 bits.\n if (bs.isError()) break;\n\n if (bs.readFlag()) {\n // Ghost is being deleted\n this.ghostTracker.deleteGhost(index);\n this.ghostDeletes++;\n ghosts.push({\n index,\n type: \"delete\",\n updateBitsStart: bs.getCurPos(),\n updateBitsEnd: bs.getCurPos(),\n });\n continue;\n }\n\n const isNew = !this.ghostTracker.hasGhost(index);\n let classId: number | undefined;\n\n if (isNew) {\n classId = bs.readInt(NetObjectClassBitSize) + NetObjectClassFirst;\n } else {\n classId = this.ghostTracker.getGhost(index)?.classId;\n }\n\n const updateBitsStart = bs.getCurPos();\n const parserEntry = classId !== undefined\n ? this.registry.getGhostParser(classId)\n : undefined;\n\n // Detect tracker divergence: we think this is a new ghost (not in our\n // tracker) but the classId is unregistered. This almost certainly means\n // the server sent UPDATE data (no classId prefix) for a ghost our tracker\n // lost, and we misread the first 7 bits of update data as a classId.\n // This is engine-consistent — the real client would also fail here\n // because classId lookup would return NULL, triggering packet drop.\n if (isNew && !parserEntry) {\n this.ghostsTrackerDiverged++;\n debugGhosts(\n \"DIVERGED pkt=%d seq=%d idx=%d classId=%d bit=%d/%d trackerSize=%d \" +\n \"(server sent UPDATE for ghost not in our tracker; 7-bit classId is actually update data)\",\n this.packetsParsed, seqNumber, index, classId,\n updateBitsStart, bs.getMaxPos(), this.ghostTracker.size()\n );\n ghosts.push({\n index,\n type: \"create\",\n classId,\n updateBitsStart,\n updateBitsEnd: updateBitsStart,\n });\n return ghosts;\n }\n\n let parsed = false;\n\n if (parserEntry) {\n try {\n const conn = this.getConnectionContext();\n conn.currentGhostIndex = index;\n const parsedData = parserEntry.unpackUpdate(bs, isNew, conn);\n const endPos = bs.getCurPos();\n\n if (isNew && classId !== undefined) {\n this.ghostTracker.createGhost(index, classId, parserEntry.name);\n this.ghostCreatesParsed++;\n } else {\n this.ghostUpdatesParsed++;\n }\n\n ghosts.push({\n index,\n type: isNew ? \"create\" : \"update\",\n classId,\n updateBitsStart,\n updateBitsEnd: endPos,\n parsedData,\n });\n parsed = true;\n } catch (e) {\n this.ghostsFailed++;\n const op = isNew ? \"create\" : \"update\";\n const message = e instanceof Error ? e.message : String(e);\n debugGhosts(\n \"FAIL pkt=%d seq=%d #%d idx=%d op=%s classId=%d parser=%s bit=%d/%d trackerSize=%d err=%s\",\n this.packetsParsed, seqNumber, ghosts.length, index, op, classId,\n parserEntry.name, updateBitsStart, bs.getMaxPos(),\n this.ghostTracker.size(), message\n );\n }\n }\n\n if (parsed) continue;\n\n debugGhosts(\n \"STOP pkt=%d seq=%d idx=%d op=%s classId=%d parser=%s bit=%d/%d\",\n this.packetsParsed, seqNumber, index, isNew ? \"create\" : \"update\",\n classId, parserEntry?.name ?? \"NONE\", updateBitsStart, bs.getMaxPos()\n );\n\n // Record and stop — can't parse this ghost's data.\n ghosts.push({\n index,\n type: isNew ? \"create\" : \"update\",\n classId,\n updateBitsStart,\n updateBitsEnd: updateBitsStart,\n });\n return ghosts;\n }\n\n return ghosts;\n }\n\n private emptyGameState(): GameState {\n return {\n lastMoveAck: 0,\n pinged: false,\n jammed: false,\n };\n }\n}\n"]}
|
package/dist/Timeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timeline.js","sourceRoot":"","sources":["../src/Timeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Timeline.js","sourceRoot":"","sources":["../src/Timeline.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DemoFile,\n DemoBlock,\n PacketData,\n GhostUpdate,\n NetEventInfo,\n} from \"./types.js\";\nimport { BlockTypePacket } from \"./types.js\";\nimport type { ClassRegistry, ParsedData } from \"./ClassRegistry.js\";\nimport type { Vec3, Quat } from \"./dataTypes.js\";\n\nexport type { Vec3, Quat };\n\n// ============================================================\n// Timeline data structures for Three.js animation output\n// ============================================================\n\n/** A single keyframe for a ghost object. */\nexport interface GhostKeyframe {\n time: number;\n position?: Vec3;\n rotation?: Quat | Vec3;\n velocity?: Vec3;\n data?: ParsedData;\n}\n\n/** A continuous lifecycle segment of a ghost (from create to delete). */\nexport interface GhostInstance {\n ghostIndex: number;\n classId: number;\n className: string;\n spawnTime: number;\n despawnTime?: number;\n keyframes: GhostKeyframe[];\n}\n\n/** Keyframe for the control object (recording player). */\nexport interface ControlObjectKeyframe {\n time: number;\n ghostIndex: number;\n position?: Vec3;\n velocity?: Vec3;\n data?: ParsedData;\n}\n\n/** A timestamped game event. */\nexport interface GameEvent {\n time: number;\n type: string;\n classId: number;\n guaranteed: boolean;\n data?: ParsedData;\n}\n\n/** Complete timeline extracted from a demo file. */\nexport interface DemoTimeline {\n durationMs: number;\n tickIntervalMs: number;\n packetCount: number;\n ghostInstances: GhostInstance[];\n controlObject: ControlObjectKeyframe[];\n events: GameEvent[];\n}\n\n// ============================================================\n// Timeline builder\n// ============================================================\n\n/**\n * Extracts a time-indexed DemoTimeline from a parsed DemoFile.\n *\n * Timestamps are derived by distributing packet blocks evenly across\n * the demo duration (Torque sends packets at a fixed tick rate).\n */\nexport function buildTimeline(\n demo: DemoFile,\n registry: ClassRegistry\n): DemoTimeline {\n const packetBlocks: { block: DemoBlock; pkt: PacketData }[] = [];\n\n for (const block of demo.blocks) {\n if (\n block.type === BlockTypePacket &&\n block.parsed &&\n \"dnetHeader\" in block.parsed\n ) {\n packetBlocks.push({ block, pkt: block.parsed });\n }\n }\n\n const packetCount = packetBlocks.length;\n const durationMs = demo.header.demoLengthMs;\n const tickIntervalMs = packetCount > 1 ? durationMs / (packetCount - 1) : 0;\n\n // Track active ghost instances (ghostIndex → current instance)\n const activeGhosts = new Map<number, GhostInstance>();\n const allInstances: GhostInstance[] = [];\n const controlObject: ControlObjectKeyframe[] = [];\n const events: GameEvent[] = [];\n\n // Seed active ghosts from the initial block — these ghosts were created\n // before recording started and only receive updates in the packet stream.\n for (const ghost of demo.initialBlock.initialGhosts) {\n if (ghost.type === \"create\" && ghost.classId !== undefined) {\n const parserEntry = registry.getGhostParser(ghost.classId);\n const instance: GhostInstance = {\n ghostIndex: ghost.index,\n classId: ghost.classId,\n className: parserEntry?.name ?? `ghost_${ghost.classId}`,\n spawnTime: 0,\n keyframes: [],\n };\n if (ghost.parsedData) {\n instance.keyframes.push(makeGhostKeyframe(0, ghost.parsedData));\n }\n activeGhosts.set(ghost.index, instance);\n allInstances.push(instance);\n }\n }\n\n for (let i = 0; i < packetBlocks.length; i++) {\n const time = i * tickIntervalMs;\n const { pkt } = packetBlocks[i];\n\n // --- Control object position ---\n if (pkt.gameState.compressionPoint || pkt.gameState.controlObjectData) {\n const coData = pkt.gameState.controlObjectData;\n const coPos = coData?.position;\n const rawPosition = isVec3(coPos)\n ? coPos\n : pkt.gameState.compressionPoint;\n const position =\n rawPosition && isValidPosition(rawPosition) ? rawPosition : undefined;\n\n if (position) {\n const coVel = coData?.velocity;\n controlObject.push({\n time,\n ghostIndex: pkt.gameState.controlObjectGhostIndex ?? -1,\n position,\n velocity: isVec3(coVel) ? coVel : undefined,\n data: coData,\n });\n }\n }\n\n // --- Events ---\n for (const evt of pkt.events) {\n const parserEntry = registry.getEventParser(evt.classId);\n events.push({\n time,\n type: parserEntry?.name ?? `event_${evt.classId}`,\n classId: evt.classId,\n guaranteed: evt.guaranteed,\n data: evt.parsedData,\n });\n }\n\n // --- Ghost updates ---\n for (const ghost of pkt.ghosts) {\n if (ghost.type === \"create\" && ghost.classId !== undefined) {\n // End any existing instance at this index (shouldn't happen often)\n const prev = activeGhosts.get(ghost.index);\n if (prev && prev.despawnTime === undefined) {\n prev.despawnTime = time;\n }\n\n const parserEntry =\n ghost.classId !== undefined\n ? registry.getGhostParser(ghost.classId)\n : undefined;\n\n const instance: GhostInstance = {\n ghostIndex: ghost.index,\n classId: ghost.classId,\n className: parserEntry?.name ?? `ghost_${ghost.classId}`,\n spawnTime: time,\n keyframes: [],\n };\n\n if (ghost.parsedData) {\n instance.keyframes.push(\n makeGhostKeyframe(time, ghost.parsedData)\n );\n }\n\n activeGhosts.set(ghost.index, instance);\n allInstances.push(instance);\n } else if (ghost.type === \"update\") {\n const instance = activeGhosts.get(ghost.index);\n if (instance && ghost.parsedData) {\n instance.keyframes.push(\n makeGhostKeyframe(time, ghost.parsedData)\n );\n }\n } else if (ghost.type === \"delete\") {\n const instance = activeGhosts.get(ghost.index);\n if (instance) {\n instance.despawnTime = time;\n activeGhosts.delete(ghost.index);\n }\n }\n }\n }\n\n return {\n durationMs,\n tickIntervalMs,\n packetCount,\n ghostInstances: allInstances,\n controlObject,\n events,\n };\n}\n\n/**\n * Check if a Vec3 position is within reasonable game world bounds.\n * Rejects IEEE 754 denormalized values (e.g., 1.66e-34) that indicate\n * garbage data from bit stream misalignment.\n */\nfunction isValidPosition(pos: Vec3): boolean {\n const vals = [pos.x, pos.y, pos.z];\n return vals.every(\n (v) =>\n Number.isFinite(v) &&\n Math.abs(v) < 50000 &&\n (Math.abs(v) >= 0.01 || v === 0)\n );\n}\n\nfunction isVec3(v: unknown): v is Vec3 {\n if (v === null || typeof v !== \"object\") return false;\n const o = v as ParsedData;\n return (\n typeof o.x === \"number\" &&\n typeof o.y === \"number\" &&\n typeof o.z === \"number\"\n );\n}\n\n/** Extract position/rotation/velocity from parsed ghost data into a keyframe. */\nfunction makeGhostKeyframe(\n time: number,\n data: ParsedData\n): GhostKeyframe {\n const kf: GhostKeyframe = { time };\n\n if (isVec3(data.position) && isValidPosition(data.position)) {\n kf.position = data.position;\n }\n if (isVec3(data.rotation)) {\n // Rotation may be Vec3 (euler) or Quat (with w).\n kf.rotation = data.rotation;\n }\n if (isVec3(data.velocity)) {\n kf.velocity = data.velocity;\n }\n\n // Store full data for consumers that need more detail\n kf.data = data;\n\n return kf;\n}\n\n// ============================================================\n// Timeline summary / stats\n// ============================================================\n\nexport interface TimelineStats {\n durationMs: number;\n tickIntervalMs: number;\n packetCount: number;\n controlObjectKeyframes: number;\n totalGhostInstances: number;\n ghostInstancesByClass: Map<string, number>;\n ghostKeyframesByClass: Map<string, number>;\n ghostsWithPosition: number;\n totalEvents: number;\n eventsByType: Map<string, number>;\n}\n\nexport function getTimelineStats(timeline: DemoTimeline): TimelineStats {\n const ghostInstancesByClass = new Map<string, number>();\n const ghostKeyframesByClass = new Map<string, number>();\n let ghostsWithPosition = 0;\n\n for (const inst of timeline.ghostInstances) {\n ghostInstancesByClass.set(\n inst.className,\n (ghostInstancesByClass.get(inst.className) || 0) + 1\n );\n ghostKeyframesByClass.set(\n inst.className,\n (ghostKeyframesByClass.get(inst.className) || 0) + inst.keyframes.length\n );\n if (inst.keyframes.some((kf) => kf.position !== undefined)) {\n ghostsWithPosition++;\n }\n }\n\n const eventsByType = new Map<string, number>();\n for (const evt of timeline.events) {\n eventsByType.set(evt.type, (eventsByType.get(evt.type) || 0) + 1);\n }\n\n return {\n durationMs: timeline.durationMs,\n tickIntervalMs: timeline.tickIntervalMs,\n packetCount: timeline.packetCount,\n controlObjectKeyframes: timeline.controlObject.length,\n totalGhostInstances: timeline.ghostInstances.length,\n ghostInstancesByClass,\n ghostKeyframesByClass,\n ghostsWithPosition,\n totalEvents: timeline.events.length,\n eventsByType,\n };\n}\n\n// ============================================================\n// JSON export for Three.js consumption\n// ============================================================\n\n/** Slimmed-down ghost instance for JSON export (no raw data blobs). */\ninterface ExportGhostKeyframe {\n t: number;\n p?: [number, number, number];\n r?: [number, number, number] | [number, number, number, number];\n v?: [number, number, number];\n}\n\ninterface ExportGhostInstance {\n ghostIndex: number;\n classId: number;\n className: string;\n spawnTime: number;\n despawnTime?: number;\n keyframes: ExportGhostKeyframe[];\n}\n\ninterface ExportControlKeyframe {\n t: number;\n p?: [number, number, number];\n v?: [number, number, number];\n}\n\nexport interface ExportTimeline {\n durationMs: number;\n tickIntervalMs: number;\n controlObject: ExportControlKeyframe[];\n ghosts: ExportGhostInstance[];\n events: GameEvent[];\n}\n\n/**\n * Convert a DemoTimeline to a compact JSON-serializable format\n * suitable for Three.js consumption. Positions/rotations are\n * packed into arrays, and only ghost instances with position\n * data are included.\n */\nexport function exportTimeline(timeline: DemoTimeline): ExportTimeline {\n const controlObject: ExportControlKeyframe[] = timeline.controlObject\n .filter((co) => co.position !== undefined)\n .map((co) => {\n const kf: ExportControlKeyframe = { t: Math.round(co.time) };\n if (co.position)\n kf.p = [co.position.x, co.position.y, co.position.z];\n if (co.velocity) kf.v = [co.velocity.x, co.velocity.y, co.velocity.z];\n return kf;\n });\n\n const ghosts: ExportGhostInstance[] = [];\n for (const inst of timeline.ghostInstances) {\n // Only export instances that have at least one valid position keyframe\n const posKeyframes = inst.keyframes.filter(\n (kf) => kf.position !== undefined\n );\n if (posKeyframes.length === 0) continue;\n\n const keyframes: ExportGhostKeyframe[] = posKeyframes.map((kf) => {\n const ekf: ExportGhostKeyframe = { t: Math.round(kf.time) };\n if (kf.position)\n ekf.p = [kf.position.x, kf.position.y, kf.position.z];\n if (kf.rotation) {\n const r = kf.rotation;\n ekf.r =\n \"w\" in r\n ? [r.x, r.y, r.z, r.w]\n : [r.x, r.y, r.z];\n }\n if (kf.velocity)\n ekf.v = [kf.velocity.x, kf.velocity.y, kf.velocity.z];\n return ekf;\n });\n if (keyframes.length === 0) continue;\n\n ghosts.push({\n ghostIndex: inst.ghostIndex,\n classId: inst.classId,\n className: inst.className,\n spawnTime: Math.round(inst.spawnTime),\n despawnTime:\n inst.despawnTime !== undefined\n ? Math.round(inst.despawnTime)\n : undefined,\n keyframes,\n });\n }\n\n return {\n durationMs: timeline.durationMs,\n tickIntervalMs: timeline.tickIntervalMs,\n controlObject,\n ghosts,\n events: timeline.events,\n };\n}\n"]}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { DemoParser } from \"./DemoParser.js\";\nimport {\n BlockTypePacket,\n BlockTypeSendPacket,\n BlockTypeMove,\n BlockTypeInfo,\n} from \"./types.js\";\nimport type { DemoBlock, PacketData } from \"./types.js\";\nimport {\n buildTimeline,\n getTimelineStats,\n exportTimeline,\n} from \"./Timeline.js\";\n\nconst filePath = process.argv[2];\nif (!filePath) {\n console.error(\"Usage: t2-demo-parser <path-to-rec-file>\");\n process.exit(1);\n}\n\nconst resolvedPath = path.resolve(filePath);\nconsole.log(`Parsing: ${resolvedPath}`);\nconsole.log(`File size: ${fs.statSync(resolvedPath).size} bytes`);\nconsole.log();\n\nconst buffer = fs.readFileSync(resolvedPath);\n\n// ================================================================\n// Full parse with automatic discovery\n// ================================================================\nconst parser = new DemoParser(buffer);\nconst demo = await parser.parseFullDemo();\n\nconst registry = parser.getRegistry();\nfunction isPacketBlock(\n b: DemoBlock\n): b is DemoBlock & { parsed: PacketData } {\n return (\n b.type === BlockTypePacket &&\n b.parsed !== undefined &&\n \"dnetHeader\" in b.parsed\n );\n}\n\nconst packetBlocks = demo.blocks.filter((b) => b.type === BlockTypePacket);\nconst parsedPackets = demo.blocks.filter(isPacketBlock);\n\n// ================================================================\n// DataBlock summary from initial block parsing\n// ================================================================\n{\n const shapeBlocks = [...demo.initialBlock.dataBlocks.values()].filter(\n (db) => db.data.shapeName\n );\n if (shapeBlocks.length > 0) {\n console.log(`DataBlocks with shapeName (${shapeBlocks.length} total):`);\n for (const db of shapeBlocks.slice(0, 20)) {\n console.log(\n ` objId=${db.objectId} classId=${db.classId} [${db.className}]: ${db.data.shapeName}`\n );\n }\n if (shapeBlocks.length > 20) {\n console.log(` ... and ${shapeBlocks.length - 20} more`);\n }\n }\n\n const dbByClass = new Map<string, number>();\n for (const [_objId, db] of demo.initialBlock.dataBlocks) {\n dbByClass.set(db.className, (dbByClass.get(db.className) || 0) + 1);\n }\n if (dbByClass.size > 0) {\n console.log(\"DataBlock types parsed:\");\n for (const [name, count] of [...dbByClass.entries()].sort(\n (a, b) => b[1] - a[1]\n )) {\n console.log(` ${name}: ${count}`);\n }\n }\n}\n\n// ================================================================\n// Output results\n// ================================================================\nconsole.log();\nconsole.log(\"=== Summary ===\");\nconsole.log(\n `Protocol version: 0x${demo.header.protocolVersion.toString(16)}`\n);\nconsole.log(\n `Demo length: ${demo.header.demoLengthMs}ms (${formatTime(demo.header.demoLengthMs)})`\n);\n\nconst moveBlocks = demo.blocks.filter((b) => b.type === BlockTypeMove);\nconst infoBlocks = demo.blocks.filter((b) => b.type === BlockTypeInfo);\nconst sendPacketBlocks = demo.blocks.filter(\n (b) => b.type === BlockTypeSendPacket\n);\n\n// Analyze ghost failures and unbound operations\nconst ghostFailuresByClass = new Map<string, number>();\nconst unboundGhostOps = new Map<number, { creates: number; updates: number }>();\nfor (const block of parsedPackets) {\n const pkt = block.parsed;\n for (const ghost of pkt.ghosts) {\n if (ghost.classId !== undefined && ghost.parsedData === undefined && ghost.type !== \"delete\") {\n const binding = registry.getGhostParser(ghost.classId);\n if (binding) {\n ghostFailuresByClass.set(binding.name, (ghostFailuresByClass.get(binding.name) || 0) + 1);\n } else {\n const entry = unboundGhostOps.get(ghost.classId) || { creates: 0, updates: 0 };\n if (ghost.type === \"create\") entry.creates++;\n else entry.updates++;\n unboundGhostOps.set(ghost.classId, entry);\n }\n }\n }\n}\nif (ghostFailuresByClass.size > 0) {\n console.log(\"\\nGhost failures by type:\");\n for (const [name, count] of [...ghostFailuresByClass.entries()].sort((a, b) => b[1] - a[1])) {\n console.log(` ${name}: ${count}`);\n }\n}\nif (unboundGhostOps.size > 0) {\n console.log(`\\nUnbound ghost classIds (${unboundGhostOps.size} total):`);\n for (const [classId, ops] of [...unboundGhostOps.entries()].sort(\n (a, b) => (b[1].creates + b[1].updates) - (a[1].creates + a[1].updates)\n ).slice(0, 10)) {\n console.log(` classId ${classId}: ${ops.creates} creates, ${ops.updates} updates`);\n }\n}\n\nconsole.log();\nconsole.log(`Total blocks: ${demo.blocks.length}`);\nconsole.log(` Packet blocks (type 0): ${packetBlocks.length}`);\nconsole.log(` SendPacket blocks (type 1): ${sendPacketBlocks.length}`);\nconsole.log(` Move blocks (type 2): ${moveBlocks.length}`);\nconsole.log(` Info blocks (type 3): ${infoBlocks.length}`);\n\n// Sequence numbers\nif (parsedPackets.length > 0) {\n const seqNums = parsedPackets.map(\n (b) => b.parsed.dnetHeader.seqNumber\n );\n let seqGaps = 0;\n for (let i = 1; i < seqNums.length; i++) {\n const expected = (seqNums[i - 1] + 1) & 0x1ff;\n if (seqNums[i] !== expected) seqGaps++;\n }\n console.log();\n console.log(\n `Sequence numbers: ${seqNums[0]} → ${seqNums[seqNums.length - 1]}, ` +\n `${seqGaps} gaps out of ${seqNums.length - 1} transitions`\n );\n}\n\n// Collect classId stats\nconst eventClassIds = new Map<number, number>();\nconst ghostClassIds = new Map<number, number>();\nfor (const block of parsedPackets) {\n const pkt = block.parsed;\n for (const evt of pkt.events) {\n eventClassIds.set(evt.classId, (eventClassIds.get(evt.classId) || 0) + 1);\n }\n for (const ghost of pkt.ghosts) {\n if (ghost.classId !== undefined) {\n ghostClassIds.set(\n ghost.classId,\n (ghostClassIds.get(ghost.classId) || 0) + 1\n );\n }\n }\n}\n\n// Show event bindings\nif (eventClassIds.size > 0) {\n console.log();\n console.log(`Event classIds (${eventClassIds.size} unique):`);\n for (const [id, count] of [...eventClassIds.entries()]\n .sort((a, b) => b[1] - a[1])\n .slice(0, 15)) {\n const binding = registry.getEventParser(id);\n console.log(\n ` ${id}: ${count} occurrences${binding ? ` → ${binding.name}` : \"\"}`\n );\n }\n}\n\n// Show ghost bindings\nif (ghostClassIds.size > 0) {\n console.log();\n console.log(`Ghost classIds (${ghostClassIds.size} unique):`);\n for (const [id, count] of [...ghostClassIds.entries()]\n .sort((a, b) => b[1] - a[1])\n .slice(0, 15)) {\n const binding = registry.getGhostParser(id);\n console.log(\n ` ${id}: ${count} occurrences${binding ? ` → ${binding.name}` : \"\"}`\n );\n }\n}\n\n// Ghost tracker state\nconst ghostTracker = parser.getGhostTracker();\nconst allGhosts = ghostTracker.getAllGhosts();\nif (allGhosts.size > 0) {\n console.log();\n console.log(`Active ghosts (${allGhosts.size} total):`);\n const classCounts = new Map<string, number>();\n for (const [_idx, ghost] of allGhosts) {\n const name = ghost.className || `unknown(${ghost.classId})`;\n classCounts.set(name, (classCounts.get(name) || 0) + 1);\n }\n for (const [name, count] of [...classCounts.entries()].sort(\n (a, b) => b[1] - a[1]\n )) {\n console.log(` ${name}: ${count}`);\n }\n}\n\n// Player position trajectory\nconst positionSamples: {\n blockIdx: number;\n pos: { x: number; y: number; z: number };\n}[] = [];\nfor (const block of parsedPackets) {\n const pkt = block.parsed;\n if (pkt.gameState.compressionPoint) {\n positionSamples.push({\n blockIdx: block.index,\n pos: pkt.gameState.compressionPoint,\n });\n }\n const cod = pkt.gameState.controlObjectData;\n const codPos = cod?.position;\n if (codPos && typeof codPos === \"object\" && \"x\" in codPos) {\n positionSamples.push({\n blockIdx: block.index,\n pos: codPos as { x: number; y: number; z: number },\n });\n }\n}\n\nif (positionSamples.length > 0) {\n console.log();\n console.log(`Player position samples: ${positionSamples.length}`);\n const step = Math.max(1, Math.floor(positionSamples.length / 8));\n for (let i = 0; i < positionSamples.length; i += step) {\n const s = positionSamples[i];\n console.log(\n ` block[${s.blockIdx}]: (${s.pos.x.toFixed(1)}, ${s.pos.y.toFixed(1)}, ${s.pos.z.toFixed(1)})`\n );\n }\n}\n\n// Ghost updates with position data\nlet ghostsWithPosition = 0;\nfor (const block of parsedPackets) {\n const pkt = block.parsed;\n for (const ghost of pkt.ghosts) {\n if (ghost.parsedData?.position) ghostsWithPosition++;\n }\n}\nif (ghostsWithPosition > 0) {\n console.log();\n console.log(`Ghost updates with position data: ${ghostsWithPosition}`);\n}\n\n// First 5 packets detail\nif (parsedPackets.length > 0) {\n console.log();\n console.log(\"First 5 packets:\");\n for (const block of parsedPackets.slice(0, 5)) {\n const pkt = block.parsed;\n console.log(\n ` [${block.index}] seq=${pkt.dnetHeader.seqNumber} events=${pkt.events.length} ghosts=${pkt.ghosts.length}`\n );\n if (pkt.gameState.controlObjectGhostIndex !== undefined) {\n console.log(\n ` controlObject=ghost#${pkt.gameState.controlObjectGhostIndex}` +\n (pkt.gameState.controlObjectData ? \" (parsed)\" : \" (unparsed)\")\n );\n }\n if (pkt.gameState.compressionPoint) {\n const cp = pkt.gameState.compressionPoint;\n console.log(\n ` pos=(${cp.x.toFixed(1)}, ${cp.y.toFixed(1)}, ${cp.z.toFixed(1)})`\n );\n }\n if (pkt.gameState.cameraFov !== undefined) {\n console.log(` cameraFov=${pkt.gameState.cameraFov}`);\n }\n for (const evt of pkt.events.slice(0, 3)) {\n const p = evt.parsedData;\n console.log(\n ` event: classId=${evt.classId}${p ? ` → ${String(p.type) || \"?\"}` : \" (unparsed)\"}`\n );\n }\n for (const ghost of pkt.ghosts.slice(0, 3)) {\n const name = ghost.classId !== undefined\n ? registry.getGhostParser(ghost.classId)?.name || `?`\n : \"\";\n console.log(\n ` ghost: idx=${ghost.index} ${ghost.type}${name ? ` [${name}]` : \"\"}${ghost.parsedData ? \" (parsed)\" : \"\"}`\n );\n }\n }\n}\n\n// Parsed moves\nconst parsedMoves = moveBlocks.filter((b) => b.parsed && \"yaw\" in b.parsed);\nconsole.log();\nconsole.log(`Parsed moves: ${parsedMoves.length}`);\n\n// ================================================================\n// Build timeline\n// ================================================================\nconsole.log();\nconsole.log(\"=== Timeline ===\");\nconst timeline = buildTimeline(demo, registry);\nconst stats = getTimelineStats(timeline);\n\nconsole.log(\n `Duration: ${formatTime(stats.durationMs)}, ` +\n `tick interval: ${stats.tickIntervalMs.toFixed(1)}ms, ` +\n `${stats.packetCount} packets`\n);\nconsole.log(`Control object keyframes: ${stats.controlObjectKeyframes}`);\nconsole.log(\n `Ghost instances: ${stats.totalGhostInstances} (${stats.ghostsWithPosition} with position data)`\n);\n\n// Ghost instances by class (top types)\nif (stats.ghostInstancesByClass.size > 0) {\n console.log();\n console.log(\"Ghost instances by class:\");\n for (const [name, count] of [...stats.ghostInstancesByClass.entries()]\n .sort((a, b) => b[1] - a[1])\n .slice(0, 15)) {\n const kfCount = stats.ghostKeyframesByClass.get(name) || 0;\n console.log(` ${name}: ${count} instances, ${kfCount} keyframes`);\n }\n}\n\n// Events summary\nif (stats.eventsByType.size > 0) {\n console.log();\n console.log(`Events: ${stats.totalEvents} total`);\n for (const [type, count] of [...stats.eventsByType.entries()]\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)) {\n console.log(` ${type}: ${count}`);\n }\n}\n\n// Sample player positions from timeline\nif (timeline.controlObject.length > 0) {\n console.log();\n console.log(\"Player trajectory (from timeline):\");\n const step = Math.max(1, Math.floor(timeline.controlObject.length / 6));\n for (let i = 0; i < timeline.controlObject.length; i += step) {\n const co = timeline.controlObject[i];\n if (co.position) {\n console.log(\n ` ${formatTime(co.time)}: (${co.position.x.toFixed(1)}, ${co.position.y.toFixed(1)}, ${co.position.z.toFixed(1)})`\n );\n }\n }\n}\n\n// Sample Player ghost trajectories\nconst playerInstances = timeline.ghostInstances.filter(\n (inst) => inst.className === \"Player\" && inst.keyframes.some((kf) => kf.position)\n);\nif (playerInstances.length > 0) {\n console.log();\n console.log(`Player ghost instances: ${playerInstances.length}`);\n for (const inst of playerInstances.slice(0, 3)) {\n const posKfs = inst.keyframes.filter((kf) => kf.position);\n const first = posKfs[0];\n const last = posKfs[posKfs.length - 1];\n console.log(\n ` ghost#${inst.ghostIndex}: ${posKfs.length} position keyframes, ` +\n `${formatTime(inst.spawnTime)}–${inst.despawnTime !== undefined ? formatTime(inst.despawnTime) : \"active\"}`\n );\n if (first?.position && last?.position) {\n console.log(\n ` first: (${first.position.x.toFixed(1)}, ${first.position.y.toFixed(1)}, ${first.position.z.toFixed(1)}) at ${formatTime(first.time)}`\n );\n console.log(\n ` last: (${last.position.x.toFixed(1)}, ${last.position.y.toFixed(1)}, ${last.position.z.toFixed(1)}) at ${formatTime(last.time)}`\n );\n }\n }\n}\n\n// ================================================================\n// Experiment metrics export (optional via env)\n// ================================================================\n{\n const metricsPath = process.env.EXPERIMENT_METRICS_PATH;\n if (metricsPath) {\n const metrics = {\n timestampIso: new Date().toISOString(),\n inputFile: resolvedPath,\n initialPhase2: {\n valid: demo.initialBlock.phase2Valid ?? false,\n trailingBits: demo.initialBlock.phase2TrailingBits ?? null,\n error: demo.initialBlock.phase2Error ?? null,\n events: demo.initialBlock.initialEvents.length,\n ghosts: demo.initialBlock.initialGhosts.length,\n ghostingSequence: demo.initialBlock.ghostingSequence,\n controlObjectGhostIndex: demo.initialBlock.controlObjectGhostIndex,\n missionName: demo.initialBlock.missionName,\n missionCRC: demo.initialBlock.missionCRC,\n },\n counts: {\n blocksTotal: demo.blocks.length,\n packetBlocks: packetBlocks.length,\n parsedPackets: parsedPackets.length,\n moveBlocks: moveBlocks.length,\n infoBlocks: infoBlocks.length,\n eventClassIdsUnique: eventClassIds.size,\n ghostClassIdsUnique: ghostClassIds.size,\n unboundGhostClassIds: unboundGhostOps.size,\n },\n topUnboundGhostClassIds: [...unboundGhostOps.entries()]\n .sort(\n (a, b) =>\n b[1].creates +\n b[1].updates -\n (a[1].creates + a[1].updates)\n )\n .slice(0, 20)\n .map(([classId, ops]) => ({\n classId,\n creates: ops.creates,\n updates: ops.updates,\n })),\n };\n\n const resolvedMetricsPath = path.resolve(metricsPath);\n fs.writeFileSync(resolvedMetricsPath, JSON.stringify(metrics, null, 2));\n console.log();\n console.log(`Experiment metrics written: ${resolvedMetricsPath}`);\n }\n}\n\n// ================================================================\n// JSON export (optional --json flag)\n// ================================================================\nif (process.argv.includes(\"--json\")) {\n const exportData = exportTimeline(timeline);\n const outputPath = resolvedPath.replace(/\\.rec$/i, \".timeline.json\");\n fs.writeFileSync(outputPath, JSON.stringify(exportData));\n console.log();\n console.log(`Timeline exported to: ${outputPath}`);\n console.log(\n ` ${exportData.controlObject.length} control keyframes, ` +\n `${exportData.ghosts.length} ghost tracks, ` +\n `${exportData.events.length} events`\n );\n}\n\nfunction formatTime(ms: number): string {\n const totalSeconds = Math.floor(ms / 1000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n return `${minutes}m${seconds.toString().padStart(2, \"0\")}s`;\n}\n"]}
|
|
@@ -120,6 +120,11 @@ export interface ShapeBaseImageDataBlock extends GameBaseDataBlock {
|
|
|
120
120
|
accuFire?: boolean;
|
|
121
121
|
states?: ImageState[];
|
|
122
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Field names for the movement/jet/splash sections are binary-verified
|
|
125
|
+
* against Tribes2.exe (build 25034) initPersistFields offsets — the
|
|
126
|
+
* retail struct layout differs from the SVN engine source.
|
|
127
|
+
*/
|
|
123
128
|
export interface PlayerDataBlock extends ShapeBaseDataBlock {
|
|
124
129
|
renderFirstPerson?: boolean;
|
|
125
130
|
minLookAngle?: number;
|
|
@@ -127,6 +132,18 @@ export interface PlayerDataBlock extends ShapeBaseDataBlock {
|
|
|
127
132
|
maxFreelookAngle?: number;
|
|
128
133
|
maxTimeScale?: number;
|
|
129
134
|
maxStepHeight?: number;
|
|
135
|
+
jetForce?: number;
|
|
136
|
+
underwaterJetForce?: number;
|
|
137
|
+
underwaterVertJetFactor?: number;
|
|
138
|
+
/** Energy drained per 32ms tick while jetting. */
|
|
139
|
+
jetEnergyDrain?: number;
|
|
140
|
+
underwaterJetEnergyDrain?: number;
|
|
141
|
+
/** Jets refuse to fire below this energy level. */
|
|
142
|
+
minJetEnergy?: number;
|
|
143
|
+
maxJetForwardSpeed?: number;
|
|
144
|
+
maxJetHorizontalPercentage?: number;
|
|
145
|
+
jetEmitter?: number | null;
|
|
146
|
+
jetEffect?: number;
|
|
130
147
|
runForce?: number;
|
|
131
148
|
runEnergyDrain?: number;
|
|
132
149
|
minRunEnergy?: number;
|
|
@@ -135,8 +152,7 @@ export interface PlayerDataBlock extends ShapeBaseDataBlock {
|
|
|
135
152
|
maxSideSpeed?: number;
|
|
136
153
|
maxUnderwaterForwardSpeed?: number;
|
|
137
154
|
maxUnderwaterBackwardSpeed?: number;
|
|
138
|
-
|
|
139
|
-
runSurfaceAngleRef?: number;
|
|
155
|
+
maxUnderwaterSideSpeed?: number;
|
|
140
156
|
runSurfaceAngle?: number;
|
|
141
157
|
recoverDelay?: number;
|
|
142
158
|
recoverRunForceScale?: number;
|
|
@@ -146,15 +162,6 @@ export interface PlayerDataBlock extends ShapeBaseDataBlock {
|
|
|
146
162
|
minJumpSpeed?: number;
|
|
147
163
|
maxJumpSpeed?: number;
|
|
148
164
|
jumpSurfaceAngle?: number;
|
|
149
|
-
minJetEnergy?: number;
|
|
150
|
-
splashVelocity?: number;
|
|
151
|
-
splashAngle?: number;
|
|
152
|
-
splashFreqMod?: number;
|
|
153
|
-
splashVelEpsilon?: number;
|
|
154
|
-
bubbleEmitTime?: number;
|
|
155
|
-
medSplashSoundVel?: number;
|
|
156
|
-
hardSplashSoundVel?: number;
|
|
157
|
-
exitSplashSoundVel?: number;
|
|
158
165
|
jumpDelay?: number;
|
|
159
166
|
horizMaxSpeed?: number;
|
|
160
167
|
horizResistSpeed?: number;
|
|
@@ -162,16 +169,16 @@ export interface PlayerDataBlock extends ShapeBaseDataBlock {
|
|
|
162
169
|
upMaxSpeed?: number;
|
|
163
170
|
upResistSpeed?: number;
|
|
164
171
|
upResistFactor?: number;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
splashVelocity?: number;
|
|
173
|
+
splashAngle?: number;
|
|
174
|
+
splashFreqMod?: number;
|
|
175
|
+
splashVelEpsilon?: number;
|
|
176
|
+
bubbleEmitTime?: number;
|
|
177
|
+
mediumSplashSoundVelocity?: number;
|
|
178
|
+
hardSplashSoundVelocity?: number;
|
|
179
|
+
exitSplashSoundVelocity?: number;
|
|
180
|
+
footstepSplashHeight?: number;
|
|
181
|
+
minImpactSpeed?: number;
|
|
175
182
|
sounds?: (number | null)[];
|
|
176
183
|
boxSize?: Vec3;
|
|
177
184
|
footPuffEmitter?: number | null;
|
|
@@ -360,18 +367,25 @@ export interface ProjectileDataBlock extends GameBaseDataBlock {
|
|
|
360
367
|
explodeOnWaterImpact?: boolean;
|
|
361
368
|
depthTolerance?: number;
|
|
362
369
|
}
|
|
370
|
+
/**
|
|
371
|
+
* Field names binary-verified against Tribes2.exe (build 25034):
|
|
372
|
+
* initPersistFields FUN_0062b3c0 / unpackData FUN_0062bea0.
|
|
373
|
+
*/
|
|
363
374
|
export interface LinearProjectileDataBlock extends ProjectileDataBlock {
|
|
364
375
|
dryVelocity?: number;
|
|
365
376
|
wetVelocity?: number;
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
inheritedVelocityScale?: number;
|
|
377
|
+
/** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */
|
|
378
|
+
fizzleTimeMS?: number;
|
|
379
|
+
/** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */
|
|
370
380
|
lifetimeMS?: number;
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
|
|
374
|
-
|
|
381
|
+
explodeOnDeath?: boolean;
|
|
382
|
+
/** Degrees, 0–90. */
|
|
383
|
+
reflectOnWaterImpactAngle?: number;
|
|
384
|
+
/** Degrees, 0–90. */
|
|
385
|
+
deflectionOnWaterImpact?: number;
|
|
386
|
+
fizzleUnderwaterMS?: number;
|
|
387
|
+
activateDelayMS?: number;
|
|
388
|
+
doDynamicClientHits?: boolean;
|
|
375
389
|
}
|
|
376
390
|
export interface GrenadeProjectileDataBlock extends ProjectileDataBlock {
|
|
377
391
|
armingDelayMS?: number;
|
|
@@ -472,16 +486,23 @@ export interface TargetProjectileDataBlock extends ProjectileDataBlock {
|
|
|
472
486
|
pulseLength?: number;
|
|
473
487
|
textures?: string[];
|
|
474
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* Field names binary-verified against Tribes2.exe (build 25034):
|
|
491
|
+
* initPersistFields FUN_0063fcb0 / unpackData FUN_00640160.
|
|
492
|
+
*/
|
|
475
493
|
export interface TracerProjectileDataBlock extends LinearProjectileDataBlock {
|
|
476
494
|
tracerLength?: number;
|
|
477
|
-
|
|
495
|
+
tracerWidth?: number;
|
|
478
496
|
tracerMinPixels?: number;
|
|
479
|
-
|
|
497
|
+
/** Registered as a bool in the engine despite the name. */
|
|
498
|
+
tracerAlpha?: boolean;
|
|
480
499
|
tracerColor?: Color4;
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
500
|
+
/** Cross fades in when the view angle cosine exceeds this. */
|
|
501
|
+
crossViewAng?: number;
|
|
502
|
+
crossSize?: number;
|
|
503
|
+
renderCross?: boolean;
|
|
504
|
+
tracerTex0?: string;
|
|
505
|
+
tracerTex1?: string;
|
|
485
506
|
}
|
|
486
507
|
export interface EnergyProjectileDataBlock extends GrenadeProjectileDataBlock {
|
|
487
508
|
energyDrainPerSecond?: number;
|