Skip to content

Client LocalTime RPC stamp lags behind server tick at execution #4066

Description

@ertugrulsngr

Description

When a client sends an RPC stamped with LocalTime.Tick, the server ServerTime.Tick in the RPC handler is greater than the sent value. The gap grows with Network Simulator packet delay.

NGO docs suggest LocalTime predicts the server tick when an action is processed. We expected:

server_tick_on_handler <= sent_LocalTime.Tick

After steady-state (30s+), we see the opposite. GetCurrentRtt() reports correctly (~2× packet delay), so this does not look like an RTT reporting or slow-adaptation issue.


Reproduce Steps

  1. NGO 2.13 + Multiplayer Tools Network Simulator + UTP
  2. Tick rate 30 Hz, Host + Client
  3. Add a NetworkBehaviour that on each client NetworkTickSystem.Tick sends LocalTime.Tick via ServerRpc; server logs received tick + current ServerTime.Tick
  4. Set Packet Delay to 150ms, wait 30s, collect logs
  5. Repeat with 300ms delay

Actual Outcome

Packet Delay RTT Example (sent → server) Gap
150ms ~320ms 1190 → 1193 +3 ticks
300ms ~625ms 1090 → 1098 +8 ticks

Gap scales with delay. ServerTime.Tick + RTT_ticks at send is ~1 tick off; LocalTime.Tick is ~3–8 ticks off.


Expected Outcome

server_tick_on_rpc_handler <= sent_LocalTime.Tick (ideally ≈ equal, ±1 tick). Gap should not grow linearly with delay at steady-state.


Environment

  • OS: Windows 11
  • Unity: 6000.4.11f1
  • NGO: 2.13.0
  • UTP: 2.7.2
  • Multiplayer Tools: 2.2.9
  • Topology: Client-Server, 30 Hz tick rate

Metadata

Metadata

Assignees

No one assigned

    Labels

    stat:awaiting-triageStatus - Awaiting triage from the Netcode team.stat:reply-neededAwaiting reply from Unity accounttype:bugBug Report

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions