Unity-Technologies / multiplayer-community-contributions

Community contributions to Unity Multiplayer Networking products and services.
MIT License
435 stars 163 forks source link

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

Open WaGi-Coding opened 1 year ago

WaGi-Coding commented 1 year ago

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

oistikbal commented 1 year ago

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

davidverified commented 7 months ago

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

Laumania commented 3 days ago

@davidverified As this seems like a general issue, why isn't it pushed via an PR and released?