Project: Friendly Steps
Networking layer: Mirror
Build of game demo lacted at: Friendly Steps Branch "qa-demo" Password: 91838193189183846245
| Command | Arguments | What it does | Requirements / Notes | Example |
|---|---|---|---|---|
checkpoint.unlock |
checkpointIndex (int) |
Enables checkpoint cheat mode and stores target checkpoint index for reset teleport. | Must be connected and running on server/host. checkpointIndex >= 0. After enabling, use normal reset action to teleport players to that checkpoint. |
checkpoint.unlock 3 |
checkpoint.disable |
none | Disables checkpoint cheat mode and returns reset behavior to normal progress-based teleport. | Must be connected and running on server/host. | checkpoint.disable |
checkpoint.status |
none | Prints whether checkpoint cheat mode is enabled and current checkpoint index. | Must be connected and running on server/host. | checkpoint.status |
consumable.list |
none | Prints all consumable prefab names available for spawning. | Server-only, must be connected. Use this before consumable.spawn to get valid names. |
consumable.list |
consumable.spawn |
prefabName (string) |
Spawns the specified consumable network prefab near local player. | Server-only, must be connected. prefabName must exactly match a registered consumable prefab name. |
consumable.spawn <name-from-consumable.list> |
skin.set |
hat (int), shirt (int), pants (int) |
Sets local player skin element indices. | Applies only to local player skin object. Each index must be within valid range for corresponding element type. | skin.set 1 4 2 |
skin.color |
colorIndex (int) |
Sets local player body/skin color by index. | Applies only to local player. colorIndex must be in available color range (0..N-1). Change is cheat/runtime only and is not saved. |
skin.color 5 |
consumable.list and then spawn several entries with consumable.spawn <name>.checkpoint.unlock <index>, then trigger player reset, then checkpoint.status.checkpoint.disable.skin.set and skin.color.We expect you to use this tool when simulating game network disruptions, such as through the mass use of abilities, artificial net lags etc. Thanks to the profiler data, it will be much easier for us to identify exactly where network overhead is causing issues in the gameplay.
NetworkProfiler is a runtime diagnostics tool that tracks all Mirror network traffic on a per-frame basis. It captures bytes sent/received, RPC calls, entity lifecycle messages (spawn/destroy/owner change), SyncVar and SyncObject updates, and ping — split across Reliable and Unreliable transport channels. Every frame's data is stored in a rolling window of up to 500 frames and optionally written to disk as a .nprof binary file for post-session analysis.
It is intended to help developers and testers identify bandwidth spikes, chatty entities, and unexpected message patterns during networked gameplay.
Pass the launch argument when starting the executable:
FriendlySteps.exe -enableNetworkProfiler
Without this argument the profiler initialises but collects no data, so there is no runtime overhead in production builds that don't need it.
The embedded ProfilerSessionRecorder automatically writes data to disk while a network session is active.
| Environment | Path |
|---|---|
| Editor | <ProjectRoot>/ProfilerData/ |
| Standalone build | <ExecutableFolder>/ProfilerData/ |
<role>_<yyyy-MM-dd_HH-mm-ss_fff>_seg-<NNN>.nprof
client, server, or host depending on Mirror state at session start.MANUAL-SAVE in the name are snapshots triggered by the hotkey (see below).Recorded for every frame on both Reliable and Unreliable channels:
| Field | Description |
|---|---|
SentBytesByClient |
Total bytes the client sent this frame |
SentBytesByServer |
Bytes sent per connectionId (server-side) |
ReceivedBytesByClient |
Total bytes the client received this frame |
ReceivedBytesByServer |
Bytes received per connectionId (server-side) |
TotalBytesSent / TotalBytesReceived |
Aggregated totals across all connections |
| Field | Description |
|---|---|
ClientRpcSentByMethod |
Per-method count + payload bytes for ClientRpc calls |
TargetRpcSentByMethod |
Same for TargetRpc calls |
CommandSentByMethod |
Same for Command (client→server) calls |
Each entry stores (callCount, totalBytes) keyed by method name.
Per networkEntityId, the profiler records:
Captured at frame creation time from Mirror.NetworkTime.rtt * 1000 (milliseconds).