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 serverNetworkBootstrap configures the listen endpoint and calls NetworkManager.StartServer().
HostCalls StartHost(). The local player still authenticates, spawns, loads, and binds through the network flow.
ClientConfigures transport, calls StartClient(), and enforces a connection timeout.
Role selectionExplicit -server, -host, or -client takes priority, followed by UNITY_SERVER and configured batch-mode behavior.

Connection to gameplay readiness#

Transport connection established
↓
Login request submitted
↓
Server authentication succeeds
↓
Character lock acquired
↓
Authoritative player object spawned
↓
Character save loaded
↓
Location/scene restored
↓
Local presentation bound
↓
GameplayReadiness.AllReady

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 onlyCredentials and password material, account/character locks, authoritative inventory/equipment/combat/quest/bank state, occupancy, save capture.
Owner onlyPrivate player state where components use owner-only replication, such as inventory/equipment/skills/prayer/magic/location/session data.
Public replicatedEntity identity, display identity, tile/movement, health, combat target, readiness and presentation events.
Client presentationInput, 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.