SIGN IN SIGN UP

Phase 1 groundwork: gamedata filename fix, non-fatal register, working native resolution

- GameData.Register looks for gamedata/<name>.jsonc (not .games.jsonc) and throws when
  missing -> renamed file + wrapped Register non-fatally so a gamedata issue never blocks load.
- Native resolution self-test: use FindString(anchor) -> FindFunction(ptr) (FindFunction(string)
  resolves by symbol name -> fails on stripped binaries). Verified live on TTT: SendClientMessages
  resolves to the correct address (matches the Ghidra RVA). Long format-string anchors
  (EncodeField/WriteDeltaEntity) need tuning (FindString length limit) — not on the per-field-swap
  critical path, which needs the serializer->field registry walk instead.

Verified on TTT: module + example + gamedata load clean, ISendProxyManager registers,
registration-only mode (encoder patch still gated).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
P
Prefix committed
988286d4f6bd8ee5e2a8a31a35bf8772851a485c
Parent: 5fc05d8