Initial Commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Wave C-2 — game-server enhanced: anti-cheat + interest management + lag compensation
|
||||
|
||||
## Why
|
||||
|
||||
The `@suaveplan/game-server` package's Wave A–B foundation (core / engine /
|
||||
state / network / matchmaking / performance) is in place. The next layer —
|
||||
the `enhanced/` family — adds server-authoritative safeguards and
|
||||
broadcast-scope optimisations needed for any open-world multiplayer game.
|
||||
|
||||
Wave C-2 ships the three foundational `enhanced/` modules that are entirely
|
||||
self-contained from a dependency standpoint and underpin the rest of the
|
||||
`enhanced/` tree (anti-cheat consumed by leaderboard/persistence; interest
|
||||
management by state-sync; lag compensation by replay/state-sync):
|
||||
|
||||
- `enhanced/anti-cheat/anti-cheat-validator/` — server-authoritative move /
|
||||
action validator with movement, rate-limit, and custom-action rules;
|
||||
player-violation history; punishment escalation FSM.
|
||||
- `enhanced/interest-management/interest-manager/` — area-of-interest
|
||||
manager: circular/rectangular/custom zones, per-player view-distance
|
||||
culling, priority-weighted entity visibility, visibility-change deltas.
|
||||
- `enhanced/lag-compensation/lag-compensator/` — server-side state-rewind +
|
||||
RTT-aware hit validation: per-entity bounded snapshot ring buffer,
|
||||
per-player RTT statistics (avg/min/max/jitter), interpolated state
|
||||
lookups, clamped compensation.
|
||||
|
||||
## What Changes
|
||||
|
||||
Add three feature modules under `packages/gaming/games/game-server/src/enhanced/`,
|
||||
each as a self-contained `5-files-per-feature` directory:
|
||||
|
||||
- `anti-cheat/anti-cheat-validator/{anti-cheat-validator.ts,.test.ts,.types.ts,.md,index.ts}`
|
||||
- `interest-management/interest-manager/{interest-manager.ts,.test.ts,.types.ts,.md,index.ts}`
|
||||
- `lag-compensation/lag-compensator/{lag-compensator.ts,.test.ts,.types.ts,.md,index.ts}`
|
||||
|
||||
Behaviour shift versus the upstream `main` implementation:
|
||||
|
||||
- Inject `Clock` (and where ids are minted, `IdGenerator`) from
|
||||
`@suaveplan/types` rather than reading `Date.now`/`Math.random` directly.
|
||||
- Replace ad-hoc `Logger` dependency + `EventEmitter` inheritance with a
|
||||
pluggable listener registry (no `@suaveplan/events` runtime dep) and OTel
|
||||
metrics for observability.
|
||||
- Throw `GameServerError` via the package-wide `GAME_SERVER_CODES` registry
|
||||
on invalid input or out-of-bounds operations instead of silently
|
||||
returning sentinel values.
|
||||
- Validate all caller-supplied configuration with Zod at the boundary.
|
||||
|
||||
Extend `GAME_SERVER_CODES` with the following new codes (appended, no
|
||||
re-order):
|
||||
|
||||
- `CHEAT_DETECTED`
|
||||
- `INVALID_VALIDATION_RULE`
|
||||
- `INVALID_ANTI_CHEAT_CONFIG`
|
||||
- `INTEREST_REGION_INVALID`
|
||||
- `INVALID_INTEREST_CONFIG`
|
||||
- `INTEREST_PLAYER_NOT_REGISTERED`
|
||||
- `LAG_COMPENSATION_HISTORY_EXCEEDED`
|
||||
- `INVALID_LAG_COMPENSATION_CONFIG`
|
||||
- `LAG_COMPENSATION_ENTITY_NOT_TRACKED`
|
||||
|
||||
Extend `package.json` `exports` map additively with subpath exports for the
|
||||
three new feature modules.
|
||||
|
||||
## Impact
|
||||
|
||||
- Affected specs: `game-server` (new requirements for enhanced anti-cheat,
|
||||
interest management, lag compensation).
|
||||
- Affected code: `packages/gaming/games/game-server/src/enhanced/**` (new),
|
||||
`packages/gaming/games/game-server/src/errors/game-server-error.ts`
|
||||
(new codes appended), `packages/gaming/games/game-server/package.json`
|
||||
(additive subpath exports), `packages/gaming/games/game-server/src/index.ts`
|
||||
(re-exports for the three new modules).
|
||||
- Out of scope: all other `enhanced/*` subtrees (leaderboard, persistence,
|
||||
replay, tournament, service-discovery, state-sync, timing) — owned by
|
||||
Wave C-3/C-4. The orchestrator `src/index.ts` is updated only to add the
|
||||
three Wave C-2 re-exports.
|
||||
Reference in New Issue
Block a user