Core RPG handbook · Development build / version notes
Documentation / Tile Tick Core RPG
Multiplayer Architecture
Server authority, host/client/server startup, state ownership and readiness.
On this page
Core RPG has one authoritative multiplayer gameplay path. Hosts, dedicated servers, and remote clients all use the same server-side gameplay rules rather than maintaining a separate single-player implementation.
Startup modes#
| Dedicated server | NetworkBootstrap configures the listen endpoint and calls NetworkManager.StartServer(). |
|---|---|
| Host | Calls StartHost(). The local player still authenticates, spawns, loads, and binds through the network flow. |
| Client | Configures transport, calls StartClient(), and enforces a connection timeout. |
| Role selection | Explicit -server, -host, or -client takes priority, followed by UNITY_SERVER and configured batch-mode behavior. |
Connection to gameplay readiness#
GameplayReadiness.AllReady is intentionally stricter than “connected.” It requires connection, authentication, an owned player spawn, network readiness, scene restoration, and local player binding.
State ownership#
| Server only | Credentials and password material, account/character locks, authoritative inventory/equipment/combat/quest/bank state, occupancy, save capture. |
|---|---|
| Owner only | Private player state where components use owner-only replication, such as inventory/equipment/skills/prayer/magic/location/session data. |
| Public replicated | Entity identity, display identity, tile/movement, health, combat target, readiness and presentation events. |
| Client presentation | Input, camera, HUD, interpolation, animation, VFX, audio, projectiles and transitions. |
Authoritative extension rule#
Clients may request an action. They do not decide whether it succeeds. New RPCs should validate sender ownership/readiness and then call a shared authoritative service. Do not trust a client-supplied item ID, target ID, destination, damage value, quest completion, bank quantity, or save state.
Gameplay tick versus NGO tick#
NGO networking currently runs at 30 Hz, while RPG gameplay uses Tile Tick Movement's separate tick clock, which defaults to 0.6 seconds. NetworkTickSynchronizer replicates the authoritative gameplay tick and timing information. Pure clients pause their local TickManager and use the replicated clock for presentation.
Disconnect and shutdown#
Character state is captured before a player object is forgotten/despawned. Server shutdown captures registered characters, queues shutdown saves, waits for pending writes within the bootstrap shutdown path, and then shuts down NGO. Keep save capture on the server and before destruction of its source state.
