How aeml/eidolon works
Eidolon is a browser-based multiplayer action RPG with an authoritative Go server. The principal workflow is player input in the browser, transmission of commands over WebSockets, server validation and simulation, persistence of durable state, and replication of canonical state back to clients for presentation. Gameplay spans combat, progression and dungeons, then social/economy and competitive activities; administration and the casino are additional capabilities. The README documents these responsibilities and protocol flow; several domain modules were not sampled, so their internal call wiring is not inferred.
Main entry points: world.go Authoritative world · GameEngine.js Game engine · NetworkManager.js Network manager · main.go WebSocket server
Components 21
Browser client
- Client startup
src/main.js - Game engine
src/core/GameEngine.js - Input and UI
src/ui/UIManager.js - Rendering
src/core/RenderSystem.js - Asset cache
sw.js
Realtime transport
- Network manager
src/core/NetworkManager.js - WebSocket server
server/main.go - Command dispatch
server/message_handlers.go - State protocol
proto/state.proto
Game simulation
- Authoritative world
server/internal/game/world.go - Combat and abilities
server/internal/game - Dungeons and raids
server/internal/game - Quests and rewards
server/internal/game
Player systems
- Party and guild
server/internal/game - Items and trading
server/internal/game - PvP and arenas
server/internal/game - Casino games
server/internal/game - Administration
server/admin_console_handlers.go
Persistent state
- Persistence layer
server/internal/database - MongoDB
Other components
- Player
Connections 23
- Player → Client startup: starts game
- Client startup → Game engine: creates
- Input and UI → Game engine: submits intent
- Game engine → Network manager: sends commands
- Network manager → WebSocket server: WebSocket commands
- WebSocket server → Command dispatch: dispatches messages
- Command dispatch → Authoritative world: applies actions
- Authoritative world → Combat and abilities: simulates combat
- Authoritative world → Dungeons and raids: advances encounters
- Authoritative world → Quests and rewards: applies progression
- Authoritative world → Party and guild: handles social play
- Authoritative world → Items and trading: handles transactions
- Authoritative world → PvP and arenas: resolves PvP
- Authoritative world → Casino games: runs games
- WebSocket server → Administration: handles admin requests
- Authoritative world → Persistence layer: stores game data
- Persistence layer → MongoDB: reads and writes
- WebSocket server → Network manager: streams state
- Network manager → State protocol: decodes state
- Network manager → Game engine: updates state
- Game engine → Rendering: updates presentation
- Game engine → Input and UI: updates interface
- Client startup → Asset cache: registers cache