# Multiplayer Documentation

- [Mirror Quickstart](MIRROR-QUICKSTART.md)
- [Events](EVENT-REFERENCE.md)
- [KCP Idle Keepalive and RTT](KCP-HEARTBEAT-RTT-GUIDE.md)
- [Third-party Notices](THIRD-PARTY-NOTICES.md)

## Runtime API

Add `IGPMultiplayerRuntime` next to `IGPRuntimeManager`. Read Room, Player, Hosted, Realtime, Network, KCP/UDP state and events from the multiplayer component. KCP settings and diagnostics are serialized on this component and are absent from the core Inspector.

Runtime events are code-only C# events. Subscribe with `+=`, unsubscribe with `-=`, and use this package's [event reference](EVENT-REFERENCE.md) as the maintained list. Events are not exposed in the Inspector.

`MessageReceived` provides typed content through `IGPMessageReceivedEvent.Content` for reserved state and RPC messages: `StateSetContent`, `StateGetResponseContent`, `StateResetResponseContent`, `RPCCallContent`, and `RPCResponseContent`. Game-defined values remain generic and can be converted with `GetValue<T>()` or `GetData<T>()`. Reply to an RPC with `RespondRPCAsync(rpcCall.callerPlayerId, ...)`.

`ClientConnect()` and `ServerStart()` on the optional Mirror transport only retain Mirror intent. They do not request a descriptor, connect KCP/UDP, or start reconnect logic.
