multiplayer-community-contributions icon indicating copy to clipboard operation
multiplayer-community-contributions copied to clipboard

FacepunchTransport.cs - connectedClients Client.steamId is always 0 - Facepunch.Steamworks Runtime needs to be updated!

Open WaGi-Coding opened this issue 1 year ago • 2 comments

So i am trying to modify the FacepunchTransport.cs in a way i can simply get peoples steamid per connectionID in a way they cannot spoof it that easily. But i came across a problem when i checked the connectedClients Dictionary.

When a new client connects to the socket, the steamId applied already is 0 only:

void ISocketManager.OnConnected(SocketConnection connection, ConnectionInfo info)
{
    if (!connectedClients.ContainsKey(connection.Id))
    {
        connectedClients.Add(connection.Id, new Client()
        {
            connection = connection,
            steamId = info.Identity.SteamId
        });

        InvokeOnTransportEvent(NetworkEvent.Connect, connection.Id, default, Time.realtimeSinceStartup);

        if (LogLevel <= LogLevel.Developer)
            Debug.Log($"[{nameof(FacepunchTransport)}] - Connected with Steam user {info.Identity.SteamId}.");
    }
    else if (LogLevel <= LogLevel.Normal)
        Debug.LogWarning($"[{nameof(FacepunchTransport)}] - Failed to connect client with ID {connection.Id}, client already connected.");
}

The problem is an issue with the released Facepunch.Steamworks, see https://github.com/Facepunch/Facepunch.Steamworks/issues/455

So i compiled the current master branch from Facepunch.Steamworks and replaced the Runtime files and redist bin files with the new compiled ones & now the connectedClients Client actually contains the persons SteamID.

Also, i think the NetworkManager should allow custom transports to map NetworkManager connection IDs together with a Platform ID which could be SteamID, PlayfabID, etc.

I have no idea why Facepunch.Steamworks did not pushed a new release in 3 years.

Greetings

WaGi-Coding avatar Apr 28 '23 08:04 WaGi-Coding

This issuse still exists, can't connect to any host. [FacepunchTransport] - Connecting with Steam user 0.

oistikbal avatar Aug 02 '23 14:08 oistikbal

THE FIX:

  1. Download the Zip file below
  2. Go to com.community.netcode.transport.facepunch\Runtime\Facepunch (where the package is installed in your Unity project)
  3. replace both files with the downloaded ones.
  4. YOURE GOOD TO GO!

what I did: I downloaded the facepunch.steamworks source code, fixed it and compiled it. you're welcome. Credits to Matze.

Fix SteamID = 0.zip

davidverified avatar Mar 05 '24 19:03 davidverified