diff --git a/client/scripts/autoloads/sim_bridge.gd b/client/scripts/autoloads/sim_bridge.gd index 53551a2bb..9d31763a3 100644 --- a/client/scripts/autoloads/sim_bridge.gd +++ b/client/scripts/autoloads/sim_bridge.gd @@ -181,7 +181,9 @@ func send_input(player_input: Dictionary) -> Error: if action_name.is_empty(): # _action_enum_to_wire already emits push_warning for invalid actions return ERR_INVALID_PARAMETER - var tick: int = player_input.get("timestamp_msec", 0) + # Use the server's current tick so drain_for_tick processes this input immediately. + # The client-side timestamp_msec is only useful for ordering within a frame. + var tick: int = GameState.current_tick var entry: Dictionary = { "tick": tick, "action_name": action_name } # Data variants (e.g. UsePerceptionMode) carry payload var action_data: Variant = player_input.get("action_data")