Skip to content

kparser2 v0.1.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@poroburu poroburu released this 17 Jun 23:11

First pre-release of the packet-native FFXI parser and analytics tool for the kpacket2 stack.

Added

  • Ingest: NetMQ subscriber for kpacket2 (tcp://localhost:5555), REQ command client (5556), NDJSON record/replay with optional kparser2.session header line
  • Wire contract: multipart ZMQ topic + JSON meta + raw bytes; topics kpacket.v1.world.s2c.0xHHHH / kpacket.v1.world.c2s.0xHHHH
  • Decoders: 0x17/0xB5 chat, 0x28 combat action, 0x29 battle message, 0xD2/0xD3 trophy/loot
  • Entity registry from 0x00A login, 0x00D/0x00E spawns, 0x00DF vitals, 0x0068/0x00DD updates; zone lookup from 0x00A / 0x00DF
  • Analytics: fight segmentation, offense/defense/recovery/deaths, buffs, skillchains, job-specific queries, XP parsing
  • WPF UI: packet monitor, chat, combat, item drops, and full analytics tab catalog (Windows / .NET 8)
  • CLI: replay, decode, record, probe, watch, hello, stats, analytics snapshot, report, export report, import report, import packetviewer, lookup exporters
  • CLI validation flags: analytics snapshot --assert-combat, --assert-names, --min-battles N
  • Report interchange: .kparse2.json schema v1 with kparser2_version stamped from assembly semver
  • Golden fixtures: 27 NDJSON sessions including bcmn30_petrifying_pair, bst_camp_multi, bst_loot_name, and synthetic combat parity suite
  • kparser parity: ParseCodes alignment tests (Tier 1–3), InteractionParity, FixtureReplayParity
  • Data lookups: data/items.json, actions.json, zones.json, mob_xp.json from LandSandBoat SQL
  • Version stamping: semver 0.1.0-rc.1 in published binaries and report exports
  • CI: GitHub Actions build + test workflow
  • LICENSE: MIT

Changed from KParser

  • Data source: in-game chat log RAM → kpacket2 world packets
  • Runtime: .NET Framework 4 + SQL CE → .NET 8 + NDJSON / JSON reports
  • Parsing: English text templates → binary opcode decoders (XiPackets / LandSandBoat aligned)
  • Testing: manual in-game only → fixtures, unit tests, CLI decode oracles, PacketViewer import

Fixed

  • Offline NDJSON replay no longer blocks probing live kpacket on :5556 when the game is not running
  • CommandClient uses a 500 ms receive timeout instead of indefinite blocking

Notes

  • Pair with kpacket2 v0.1.0-rc.1 for live capture; wire protocol kpacket.v1 unchanged
  • WPF host requires Windows; CLI core libraries run on .NET 8 anywhere
  • Opcode subset only — most packets appear as raw in monitor view
  • Legacy KParser .sdf files and Lua kpacket (port 6666) are not supported

Full changelog: CHANGELOG.md