2.0 KiB
Proposal — game-server integrations (Wave C-5)
Why
Waves B and C-1 shipped the GameEngine, PluginManager, and eight
concrete plugins. Consumers still have to wire them together by hand:
construct the loop, the plugin manager, install every plugin, register
them, and tear everything down on shutdown. Wave C-5 closes that gap with
a single-entry-point EnhancedGameServer integration that bootstraps the
canonical stack via one bootstrap(options) call.
The integration is universal-tier (zero browser / React deps). React
component shells from upstream (game-lobby/) are explicitly deferred
to a future react-game-server package — they cannot live inside a
universal-tier package.
What changes
ADDED EnhancedGameServer
Top-of-stack orchestrator that:
- Accepts injectable
Clock,IdGenerator,LoggerLike,TimersLike,EventBusLike, plus per-plugin external collaborators (FlagManager, RuleEngine, StorageLike, AnalyticsSink, Rng, GameEventEmitter). - Constructs a
GameLoop,PluginManager, andGameEnginein canonical wiring order. - Pre-registers all eight plugins (
BasePlugin-derived) in declared install order, honouring thetopoSortguarantee ofPluginManager. - Surfaces
bootstrap(options)as the single user-facing entry point. - Exposes
start(),tick(),stop(),dispose()deferring to the underlyingGameEngine. - Throws
BOOTSTRAP_FAILEDif any plugin install fails, andALREADY_BOOTSTRAPPEDon double-bootstrap.
ADDED error codes
GAME_SERVER.BOOTSTRAP_FAILEDGAME_SERVER.ALREADY_BOOTSTRAPPED
DEFERRED — components/game-lobby/
The upstream React lobby component cannot ship in a universal-tier
package. It will land in a follow-up react-game-server package and is
out of scope for Wave C-5.
Impact
- Affected packages:
@suaveplan/game-server. - Affected specs:
game-server(ADDED integrations capability). - Public surface:
./integrations/enhanced-serversubpath export only. - No breaking change — purely additive.