Commit graph

14 commits

Author SHA1 Message Date
Admin
e1d0500771 Arcade M2a: libs/game/net — host-authoritative LAN transport + micro_serde hardening
Harvest-and-rebuild from xr/src/net after the adversarial audit (verdict:
transport promote-with-fixes, authority model rewrite).

- Authority: explicit Host/Client roles. Client->host Join/Input/Intent/
  Leave/Ping; host->client Welcome/StateBatch/Event/Bye/Pong. No per-object
  authority field and no takeover messages — authority theft (audit H-11)
  is unrepresentable, not merely blocked
- Auth: self-contained SHA-256/HMAC; every datagram and frame is
  magic|version|sender|payload|mac, verified BEFORE any peer state is read
  or written. Closes seq-window poisoning, spoofed kick, address hijack
- Endpoints are pumped, not threaded: nothing blocks, so the connect-flood
  stall (H-5) cannot occur and a full session runs deterministically in one
  test process. The host only ever accepts, never initiates
- Harvested: LZ4 frame codec (check-before-allocate), partial-tail drain,
  budgeted read/write loops, MTU batching, peer/config shapes. Frame cap
  4MiB -> 256KiB now that XR alignment payloads are gone
- Per-entity sequencing (a stale datagram drops only its stale members),
  rejoin seq reset, player cap, peer timeout, snapshot-based mid-join
- Measured 6 clients x 60Hz x 200 entities: 2880 pps, 3.13 MB/s (~25 Mbit
  up) — Quest WiFi viable without delta encoding yet
- Hostile suite: one test per audit attack + 3000-mutation fuzz that must
  never panic or wedge the host. 24/24 green
- micro_serde: String::de_bin no longer panics on invalid UTF-8, checked
  offset arithmetic, Vec::de_bin rejects counts the buffer cannot back and
  never sizes allocation from the wire (11/11)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 00:33:16 +02:00
Admin
1d1e91dae7 cleanup 2026-04-10 14:48:17 +02:00
Admin
f6c32eae92 stdin 2026-04-05 11:30:53 +02:00
Admin
548506cd9c gltf example! 2026-02-16 15:51:24 +01:00
Sabin Regmi
10c04f4408 Use saturating_sub for empty collections (#856)
Replace occurrences of self.len() - 1 with self.len().saturating_sub(1) in serialization code to avoid underflow when serializing empty slices/maps. Adds a unit test in serde_json to confirm an empty HashMap serializes to "{}". Changes touch libs/micro_serde/src/serde_json.rs and libs/micro_serde/src/serde_ron.rs.
2026-02-16 07:21:02 +01:00
Admin
a271bd0027 compile 2026-02-10 18:26:51 +01:00
Admin
2ab091b09c streaming splash otw 2026-02-07 13:59:34 +01:00
Admin
ba10749c01 first pass ai lib 2026-02-05 12:13:03 +01:00
Admin
01f6c3a803 studio fixes 2026-02-04 11:05:31 +01:00
Admin
cf4f18c829 1.0.0 2025-05-15 16:46:16 +02:00
Admin
6e75538783 0.9.0 2025-05-11 22:35:20 +02:00
Admin
b90d0509ba 0.9.0 2025-05-11 22:31:53 +02:00
Admin
a60261c1da 0.9.0 test 2025-05-11 22:24:36 +02:00
Eddy Bruel
ff9048cc37 Initial commit 2025-05-06 10:11:37 +02:00