Remote Gaming is a tabletop companion platform for multiplayer board and card games.
Unlike platforms such as BoardGameArena, Remote Gaming does not attempt to fully simulate games in the browser. Instead it focuses on the parts of tabletop play that benefit most from software support:
Players still use the physical game components and track resources like money or board position themselves.
This allows games to be supported with far less UI complexity while still providing meaningful digital assistance.
Remote Gaming sits between:
fully manual tabletop play
and
fully automated browser implementations
The system models session flow and hidden information, not every rule or resource in the game.
Example:
For Modern Art, the system handles:
But it does not track player money or auction outcomes, which remain part of the physical tabletop experience.
The backend is built around a game session engine that models state transitions and player actions.
A session stores the current state of play, while game-specific engines define rules, phase transitions, and player actions. Significant actions are recorded as session events and exposed to the frontend as structured API data.
Player Action
│
▼
Game Specific Engine
│
▼
SessionFrame
(event log)
│
▼
GameSession
(current session state)
│
▼
Representers
(API layer)
│
▼
Svelte UI
This structure keeps the system centered on state transitions and event history, rather than tying it to a specific frontend.
Represents a running game.
Responsibilities include:
A GameSession is the primary container for gameplay.
Game-specific rules live in dedicated engine classes.
Each game defines:
The shared engine layer provides common session flow and transition behavior, while individual games implement their own rules on top of it.
Every significant action is recorded as a session event / frame.
Examples:
This event history supports:
Mutation logic is handled through service objects where appropriate, keeping controllers thin and domain behavior explicit.
API serialization is handled through representers that define the exact structures exposed to the frontend.
Analytics and reporting queries live separately from the domain models.
Current implementation:
The Rails backend manages game sessions and exposes structured game state while the Svelte frontend provides the user interface.
Initial supported games:
The goal is to support new games by implementing a new game-specific engine rather than building an entirely new application.
This repository is the modern rebuild of an earlier prototype.
The previous implementation lives in remote-gaming-v1
The new version modernizes the stack and simplifies the frontend while preserving the core game session engine architecture.