Search Unity

Discussion Which Networking solutions do you use, and why?

Discussion in 'Multiplayer' started by CodeSmile, Oct 6, 2022.

  1. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    5,887
    I'm trying to better understand the plethora of networking options that exist(ed) for Unity as I'm thinking about solutions (paid assets) for network app development.

    Here's a couple questions that I'm interested in to hear from multiplayer developers. Feel free to skip any that you cannot comment on or have no experience with.
    1. Which networking solution do you currently use? (ie Photon PUN, Photon Fusion, Mirror, UNET, MLAPI, NGO, that Fish thing ..)
      • a) Which ones have you used in the past?
      • b) Which are you interested in using for future games/apps?
      • c) In your opinion, which of these could be seen as the "most popular" choice and why?
    2. What genre are/were these? Ie MOBA, FPS, MMO, On-Site VR entertainment ...
    3. Which platforms (build targets) are you targeting / most interested in targeting?
    4. Which paid or free networking/multiplayer assets did you successfully incorporate in your project(s)? (excluding the networking solution itself and related services like Relay, Lobby, Matchmaking)
    5. What were some of the things you expected to be easier / didn't expect to be as much work/trouble as it turned out to be? (please mention which networking solution that refers to)
    6. In your first networked/multiplayer project, what are some of the things you wished you had known /understood about network/multiplayer development before you got started?
    I appreciate any responses!

    I'm also particularly interested in your ideas for networking assets that you wish existed and would make a whole bunch of things easier, faster to develop, more reliable, great multiplayer game features that are just too time consuming to replicate, and so on.
     
    Voxel-Busters likes this.
  2. r31o

    r31o

    Joined:
    Jul 29, 2021
    Posts:
    460
    1.I currently use Fish-Networking
    a)I have used Photon PUN, bolt, fusion, tom's networking solution and Riptide Networking (The last two are pretty much the same).
    b)Im very happy with FN, no plans to use other
    c)The ones I used or networking solution in general?

    2.I make FPS games
    3.I mostly target PC, but I had the idea of developing a WebGL game.
    4)I have never added any asset to the networking solution.
    5)When I started with Toms networking solution, and Riptide, I found them very low-level, which I dont like, since, I hate all the networking stuff (But I love the result after making them :)), so I now use FN, which has a lot of things built-in, which saves me a lot of time.
    6)That I dont like networking.
     
    Randallhbarber and CodeSmile like this.
  3. Punfish

    Punfish

    Joined:
    Dec 7, 2014
    Posts:
    401
    I'm the developer of FishNet so naturally I am using FishNet for my projects, including paid jobs.

    1a. Extensively I have used Bolt, PUN, Mirror; the most recent prior to my own would be Mirror for about two years. I've casually tried MLAPI, NGO, Darkrift, and a few others.
    1b. I made and use FishNet because every other option I tried had limitations, race conditions, missing modern features, lots of bugs, or constant regressions.
    1c. I'd say FishNet and NGO are the fastest rising and most promising options. I'd speculate FishNet has more features and is more stable than NGO at this time; but I've not used NGO for several months so take that into consideration.

    2. FishNet has been used to create a variety of games under various genres: FPS, MMO, TPS, platformer, VR. There is no limitation as to game type really. The paid project I'm working on is a 2D topdown fast-paced physics based shooter.

    3. I target computer/console because I'm not a fan of mobile gaming.

    4. I try to give users a full experience without having to seek third-party assets. For example, the NetworkTransform in FishNet is better than what a paid asset could offer. Other solutions have an implementation of SmoothSync because their integrated NetworkTransform is lacking.
    There are some things I leave to others though, more specifically tasks which are often unique to game types and where I trust the third party developers. Some examples would be: voice chat, command console, heathens steamworks.

    5. I'll exclude names for the sake of being civil but here are some problems I had with past solutions: did not scale as advertised, lots of race conditions, updates regularly breaking user(my) code, no progression, bugs that never got resolved on closed source options, clunky and unnatural workflow, code-base/usage lacked consistency, expensive hidden costs.

    6. All beginners should know that creating a multiplayer game takes a different way of thinking. If you are new to programming AND multiplayer it's going to be a rough start no matter what choice you make. But, generic as this phrase is, it also be true, "nothing is impossible if you put your mind to it".
     
  4. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    5,887
    Thanks for the summaries thus far! Much appreciated! :)

    I have scoured the web for networking solutions just to wrap my head around the plethora of options out there (it's mind-boggling). Will share that shortly ...
     
  5. CodeSmile

    CodeSmile

    Joined:
    Apr 10, 2014
    Posts:
    5,887
  6. StinkySteak

    StinkySteak

    Joined:
    Jul 7, 2017
    Posts:
    11
    1. Fusion
    a) PUN, Fishnet, Fusion
    b) -Netick, It's not CCU Based & Great API
    -NGO, It's free, has Huge community, made by Unity
    -Fusion, It's the BEST Solution rn, however the CCU Pricing trouble indie developer
    c) Fishnet, Because It's free, Open source, huge community, best for indie developers. However I dont like the API, takes much work, really not agile
    2. Medium Sized PvP
    3. Windows, Linux, Android, IOS, Steamdeck
    4. Fusion, PUN
    5. Fusion, because I came from PUN didnt know, Client/Server Topology really confuses me
    6.
    -we can only serialize primitive values, cannot sync class, GameObject, consider what to network and not
    -Client/Server Topology, Client can only send inputs, the rest is processed by Server
     
  7. Punfish

    Punfish

    Joined:
    Dec 7, 2014
    Posts:
    401
    Hey! I'm always looking for areas to improve FishNet. If you care to inbox me a message I'd be happy to hear what can be done better. Thanks!
     
    MattThomSA and efimovrusl like this.
  8. qbvbsite

    qbvbsite

    Joined:
    Feb 19, 2013
    Posts:
    83
    Want to preface this with I'm a developer by trade but only dabble in Unity. One day maybe I'll finish a multiplayer game but time is always lacking. In my current project I rolled my own authoritative server and used LiteNetLib for the networking piece.
    1. LiteNetLib
    2. MMO
    3. PC / Maybe Mobile at some point
    4. None
    5. Multiplayer in general: Smooth Movement, Authoritative Server (Not Unity), and Networking (Packet Loss/Latency)
    6. Wish there was more information on using non Unity authoritative server.
     
  9. MrBigly

    MrBigly

    Joined:
    Oct 30, 2017
    Posts:
    221
    1. Which networking solution do you currently use? (ie Photon PUN, Photon Fusion, Mirror, UNET, MLAPI, NGO, that Fish thing ..)
      I am rolling my own.
      • a) Which ones have you used in the past?
        I have only looked at using several offerings which is what lead me to roll my own. None of the offerings I looked at met my design and marketing goals.
      • b) Which are you interested in using for future games/apps?
        My own. I would be very interested in Quantum, but its pricing is unacceptable. I have a tremendous appreciation for Quantum, as I spent some time researching the effort of rolling my own fully deterministic user input only solution, but abandoned it due to the need to replace whole pieces of Unity (e.g., physics engine).
      • c) In your opinion, which of these could be seen as the "most popular" choice and why?
        If Quantum were made part of Unity, this entire conversation would cease. If it were free or if it were more reasonable, I would say it would be everyone's number one choice unless no cost were a requirement.
        I will say that as my solution matures to become a viable snapin Asset (many months away), then it may be considered a strong contender for its performant designs and ease of integration. (If it were not easy to integrate with existing game code, then I wouldn't offer it.)
    2. What genre are/were these? Ie MOBA, FPS, MMO, On-Site VR entertainment ...
      FPS ala Halo
    3. Which platforms (build targets) are you targeting / most interested in targeting?
      Exclusively desktops and consoles
    4. Which paid or free networking/multiplayer assets did you successfully incorporate in your project(s)? (excluding the networking solution itself and related services like Relay, Lobby, Matchmaking)
      My own, first time, very successful
    5. What were some of the things you expected to be easier / didn't expect to be as much work/trouble as it turned out to be? (please mention which networking solution that refers to)
      The primary deal breakers for each of the offerings I looked into included the following:
      Pricing - My requirements included no costs of any kinds.
      Requirements - I had to eliminate any offering that failed to meet each of my requirements. As an example, I require isolated LAN and Local networking modes in addition to Internet mode.
      Architecture - Integration had to be straight forward and intuitive. I was not about to build my code to work with Netcode A only to find I had to switch to Netcode B for some unforeseen reason, but that the migration would require a significant refactoring of my game. I was never going to allow that to happen.
      Design - I looked into Netcode for GameObjects and also just the Unity Transport as something to roll my own on top of. I tried to implement my own version of one of their demos involving Jobs and sockets. I wanted my game to do something a little differently, and it was confusing why Jobs was behaving the way it did, so I eventually abandoned it. I also came to the conclusion that Jobs was overly complicated in how you write code for it. I like the concept, but Unity needs to make it far more intuitive and terse in coding requirements.
    6. In your first networked/multiplayer project, what are some of the things you wished you had known /understood about network/multiplayer development before you got started?
      Nothing and Everything. I am learning about all aspects of netcode while at the same time I am meeting every requirement for my own shooter, and at a pace much faster than expected. And I am having the time of my life doing it.
    I love Unity!
     
    Last edited: Feb 11, 2023
  10. unity_QJ7RazXzghZCzA

    unity_QJ7RazXzghZCzA

    Joined:
    Jul 9, 2021
    Posts:
    104
    Hey, thanks you for your work. Finally there is solution both robust, free and with good performance. I have no trust for Unity solutions such as NGO. No matter what unity creating they always do it in wrong way, buggy, slow, non-extendable, non-stable or just expensive. I will chose your solution with closed eyes over NGO or even Photon solutions. Mirror is also has good reputation but some peoples says it could be over complicated.
     
    Welfarecheck likes this.
  11. Punfish

    Punfish

    Joined:
    Dec 7, 2014
    Posts:
    401
    Thanks! Wow that post was awhile ago too, we've definitely done so much since.

    There are some neat things coming in the near future that not even big paid assets offer!
     
    unity_QJ7RazXzghZCzA likes this.
  12. unity_QJ7RazXzghZCzA

    unity_QJ7RazXzghZCzA

    Joined:
    Jul 9, 2021
    Posts:
    104
    Thanks! Making world better!
     
  13. Lo-renzo

    Lo-renzo

    Joined:
    Apr 8, 2018
    Posts:
    1,511
    1. Which networking solution do you currently use? (ie Photon PUN, Photon Fusion, Mirror, UNET, MLAPI, NGO, that Fish thing ..) I'm using Fish Networking
      • a) Which ones have you used in the past? MLAPI, NGO
      • b) Which are you interested in using for future games/apps? Fish - it's fully featured, active development, great community. Looks like it has a bright future.
    2. What genre are/were these? Ie MOBA, FPS, MMO, On-Site VR entertainment ... MOBA-ish.
    3. Desktop & console.
    4. None
    5. What were some of the things you expected to be easier / didn't expect to be as much work/trouble as it turned out to be? (please mention which networking solution that refers to)
      1. Within Fish I recall the loading events being somewhat confusing, had some unexpected event ordering. Then there's the consideration of what events you need to happen on server and/or client, reconnection after D/C, late-joining clients, and minute variation when testing over different Transports, or directly loading a particular scene in the Editor outside of the normal pathway. It required a facade, which sorted things out.
      2. Medium-speed projectiles were harder than expected. Slow? No problem. Fast? No problem. Recall how weird TF2 rockets can behave at times.
    6. In your first networked/multiplayer project, what are some of the things you wished you had known /understood about network/multiplayer development before you got started?
      1. Read networking post mortems, watch GDC talks, even if their model is different than yours because it gets the noggin jogging for how to creatively solve or mask some issue you may have. I learned a lot from this Halo talk for example
      2. Basic tip: get started with ParrelSync right away. It's a free asset to have 2+ editors open at once on the same computer.
      3. Set up Steam early. You can use AppId 480 for testing prior to having a Steam page. Testing over Steam (on two computers) is even more convenient than ParrelSync much of the time.
     
    aavagames and Punfish like this.