Skip to content

[Netcode] SteamNetworkingSocketsTransport - Can't GetCurrentRtt from client, client not connected, clientId: 0 #259

Description

@SaifEtha

Hey guys,

i am new to Netcode and SteamNetworkingSocketTransport.

I setup script to transport the players to the host new game scene once they connect but i am getting this error.
I am not really sure where to start or how to investigate

This is the error
[Netcode] SteamNetworkingSocketsTransport - Can't GetCurrentRtt from client, client not connected, clientId: 0 UnityEngine.Debug:LogError (object) Unity.Netcode.NetworkLog:LogError (string) (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Logging/NetworkLog.cs:34) Unity.Netcode.NetworkLog:LogServer (string,Unity.Netcode.NetworkLog/LogType) (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Logging/NetworkLog.cs:98) Unity.Netcode.NetworkLog:LogErrorServer (string) (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Logging/NetworkLog.cs:58) Netcode.Transports.SteamNetworkingSocketsTransport:GetCurrentRtt (ulong) (at ./Library/PackageCache/com.community.netcode.transport.steamnetworkingsockets@780b1998c798/Runtime/SteamNetworkingSocketsTransport.cs:109) Unity.Netcode.NetworkTimeSystem:UpdateTime () (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Timing/NetworkTimeSystem.cs:145) Unity.Netcode.NetworkManager:NetworkUpdate (Unity.Netcode.NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Core/NetworkManager.cs:363) Unity.Netcode.NetworkUpdateLoop:RunNetworkUpdateStage (Unity.Netcode.NetworkUpdateStage) (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Core/NetworkUpdateLoop.cs:191) Unity.Netcode.NetworkUpdateLoop/NetworkPreUpdate/<>c:<CreateLoopSystem>b__0_0 () (at ./Library/PackageCache/com.unity.netcode.gameobjects@f2477a6c90fe/Runtime/Core/NetworkUpdateLoop.cs:238)

and this is my code

`public void StartNetworkGameSequence()
{
_networkManager.StartHost();
WorldLobbyManager.instance._lobbyManager.Lobby.SetGameServer();

        Debug.Log($"Players Connected: {NetworkManager.Singleton.ConnectedClients.Count}/{WorldLobbyManager.instance._lobbyManager.Lobby.MemberCount}");

        StartCoroutine(WaitForClientsThenStartGame());
    }

    private IEnumerator WaitForClientsThenStartGame()
    {
        Destroy(WorldLobbyManager.instance._lobbyPlayerManager.gameObject);
        WorldLobbyManager.instance._lobbyPlayerManager = null;

        yield return new WaitForSeconds(3);

        while(NetworkManager.Singleton.ConnectedClients.Count < WorldLobbyManager.instance._lobbyManager.Lobby.MemberCount)
        {
            Debug.Log($"Players Connected: {NetworkManager.Singleton.ConnectedClients.Count}/{WorldLobbyManager.instance._lobbyManager.Lobby.MemberCount}");
            yield return new WaitForSeconds(2);
        }

        // Change the scene for all once everyone is connected
        string sceneToLoad = WorldLobbyManager.instance._gameModeToLoad;

        if(sceneToLoad == "SurvivalModeScene")
        {
            string scenePath = SceneUtility.GetScenePathByBuildIndex(1);
            string gameSceneName = System.IO.Path.GetFileNameWithoutExtension(scenePath);
            Debug.Log($"All clients connected. Changing scene to: {gameSceneName}");

            ChangeSceneForAll(gameSceneName);
        }


        yield return null;
    }

    private void ChangeSceneForAll(string sceneName)
    {
        Debug.Log($"Loading scene: {sceneName}");
        NetworkManager.Singleton.SceneManager.LoadScene(sceneName, LoadSceneMode.Single);
        StartCoroutine(WaitForSceneLoadThenSpawnPlayers());
    }

    private IEnumerator WaitForSceneLoadThenSpawnPlayers()
    {
        yield return new WaitForSeconds(2f); // Allow scene transition to complete

        Debug.Log("Scene changed. Spawning player prefabs...");
        foreach (KeyValuePair<ulong, NetworkClient> client in _networkManager.ConnectedClients)
        {
            SpawnPlayerPrefab(client.Key);
        }

        _gameStarted = true;
    }

    private void SpawnPlayerPrefab(ulong clientId)
    {
        if (!_playersInSession.ContainsKey(clientId))
        {
            Vector3 spawnPosition = new Vector3(clientId * 2.0f, 1.0f, 0);
            GameObject playerObject = Instantiate(_playerPrefab, spawnPosition, Quaternion.identity);
            PlayerManager playerManager = playerObject.GetComponent<PlayerManager>();

            // Setup Player
            playerManager.InitializePlayerOnLevel();

            // Folow Camera
            GameObject cameraGameObject = Instantiate(_followCameraPrefab, playerObject.transform);
            cameraGameObject.transform.parent = null;

            CameraFollow cameraFollowScript = cameraGameObject.GetComponent<CameraFollow>();
            playerManager._cameraFollow = cameraFollowScript;

            cameraFollowScript.SelectTarget(playerObject);

            NetworkObject networkObject = playerObject.GetComponent<NetworkObject>();
            if (networkObject != null)
            {
                networkObject.SpawnAsPlayerObject(clientId);
            }

            _playersInSession[clientId] = playerObject;
            Debug.Log($"Spawned player {clientId} in new scene.");
        }
    }`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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