Skip to content

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

Open
@SaifEtha

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions