commit 7161765 us.anthropic.claude-sonnet-4-6

Isleward is a browser-based roguelike MMO built with a Node.js game server, a React+PixiJS client, and a Rust native module for physics. The architecture is a multi-threaded event-driven ECS (Entity Component System) where the main thread manages connections and global state, while per-zone 'map threads' (Node.js worker processes) run actual game logic. All cross-boundary communication — client-to-server, server-to-client, and main-thread-to-map-thread — flows through a uniform event/message bus, and the entire system is designed for extensibility via a first-class mod system that hooks into those event buses.

Start Tour
9 steps
Explore Systems
9 subsystems
Generate Docs
README + ARCHITECTURE.md
Authentication & Character Management
Handles account registration, login, character creation/deletion, skin lists, and per-login reward distribution. Persists data to RethinkDB and exposes async event hooks (onBeforeLogin, onAfterLogin, beforeSaveCharacter, etc.) so mods can intercept every lifecycle stage.
World & Zone Management
Manages the lifecycle of map threads (instancer, threadManager, mapManager), routes players between zones via a rezoneManager, and enforces zone-selection policy through a composable ZoneRules/PartitionRegistry system. Each zone runs in an isolated worker thread with its own physics and object graph.
1 steps
Entity-Component System
All in-world objects (players, mobs, interactive items) are assembled from composable server-side components (stats, inventory, spellbook, dialogue, trade, gatherer, etc.) and a matching set of client-side components that mirror server state. The player component routes 'performAction' requests to the appropriate sub-component by name.
1 steps
Real-Time Network Layer
Wraps Socket.IO for all client-server communication. The client-side 'client' module issues typed request objects and processes server events; the server-side 'syncer' queues events destined for specific players or all players in a zone. A handshake/rezone acknowledgement protocol ensures reliable zone transitions.
Rendering & Client-Side Presentation
Uses Pixi.js 8 for tile-based scene rendering with a custom particle engine, LESS-compiled stylesheets, and a React 19 UI layer for HUD, menus, and overlays. The renderer maintains a camera/viewport, manages sprite sheets, and emits events (onRezone, onResize, onSceneMove) consumed by UI templates.
1 steps
Item & Loot System
Procedurally generates items using configurable drop-chance tables and stat-balance curves, supports item definitions loaded from flat files, handles stack splitting, salvaging, and recipe-based crafting via workbench components. The generator exposes event hooks so mods can alter drop chances and item stats before finalisation.
Modding System
A first-class mod loader (src/server/misc/mods.js) scans the mods directory and calls init/initMapThread on each mod, giving mods access to the global event emitter, REST endpoint registration, client-side script injection, and the full component registry. Mods bundled in-tree include classes, events, social features, cosmetics, and gameplay content.
2 steps
Rust Performance Modules
A NAPI-RS Rust crate (src/rust-modules) compiles to a platform-native Node.js addon exposing physics and logging utilities. A separate Axum-based Rust static-file server (src/rust-server) serves the built client bundle with gzip compression, offloading I/O-heavy static serving from the game server.
1 steps
Social & Party System
Manages chat channels (global, party, crew, custom), party formation/invitation/removal, trade requests, and the friends/online list. The social component on both client and server handles channel routing and emits events consumed by the messages UI template.
682
Files
51
Scanned
9
Subsystems
9
Steps