Search Unity

@Unity: Hello, is there anybody out there? :P

Discussion in 'Multiplayer' started by MrLucid72, Dec 13, 2016.

  1. Zullar

    Zullar

    Joined:
    May 21, 2013
    Posts:
    651
    I switched from UNET to Steamworks.NET and it's been great (If your game is Steam based). I've been using it for 18 months and I have fully networked the game and yet to encounter 1 single bug! I had no idea anything could be so robust.
     
    MrLucid72 and mischa2k like this.
  2. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Speaking of steamworks networking; valve actually released their network transport on github a few weeks ago: https://github.com/ValveSoftware/GameNetworkingSockets

    it's very WIP but looks promising
     
    Last edited: Apr 30, 2018
    Zullar likes this.
  3. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    Would work without steam too?
    Any challenges when it came to the Unity integration? (threading etc)
     
  4. Zullar

    Zullar

    Joined:
    May 21, 2013
    Posts:
    651
    I believe it requires Steam to use.

    I did not have any challenges. It was super easy. I call one method to get a list of all Steam friends (so you can see who is online/offline/in your game/etc.). If I want to send data to one I just call a method that sends a byte array to a SteamID(s). Then every Update I check for new received network messages and handle accordingly. Data is sent directly (for speed) but if it fails then it goes through Steam's relay servers automatically. For reliable channels it automatically makes sure the data is received in order even if a packet is dropped. Super simple and very robust. I have literally not had 1 bug in over a year of using it.

    I will say though one obstacle with Steamworks.NET though there is no "connecting/disconnecting"... you need to build this functionality in yourself which takes time. It's actually kind of weird you just sent data to another client without ever connecting... there is no handshaking or anything. Very strange.

    What do you mean by threading? I'm not sure how to answer.

    But a robust system that can send byte[] arrays is probably what most dev's are looking for. The reason UNET failed (in my opinion) is it was because they tried to add all this functionality and features on top of a core system that didn't work. On the low level UNET doesn't even have NAT punch through. And the UNET HLAP is so buggy and unrobust and limited it's absolutely unusable. Doesn't help that their HLAPI guy (SeanR) left Unity right at launch. I made a bug list here before I abandoned UNET
    https://forum.unity.com/threads/my-compiled-list-of-unet-bugs-issues.403578/.
     
    Last edited: May 1, 2018
    MrLucid72 likes this.