Search Unity

Networking: feedback and questions

Discussion in 'Multiplayer' started by BHouse, Sep 13, 2018.

  1. JTovey

    JTovey

    Unity Technologies

    Joined:
    Oct 30, 2018
    Posts:
    35
    Hi Pophl,

    We suggest that for situations like this, you keep your current UNET code for this project, rather than trying to switch over to the new library. If you are starting a new project, then the new library is the way to go, but for existing projects which are planning to ship in the next 12 months, it would be better to simply use the existing code you have.
     
  2. Kichang-Kim

    Kichang-Kim

    Joined:
    Oct 19, 2010
    Posts:
    1,011
    Kirsche and Gorkadread like this.
  3. virgilcwyile

    virgilcwyile

    Joined:
    Jan 31, 2016
    Posts:
    73
    So i went into Services>Multiplayer then it took me to this(Attached) screen which shows UNet Deprecated. Can some one point me to a good video tutorial or text tutorial for new Multiplayer System. And does it have a name for which I should search online. I want to start a MMO from scratch using New Multiplayer System.
     

    Attached Files:

  4. timjohansson

    timjohansson

    Unity Technologies

    Joined:
    Jul 13, 2016
    Posts:
    473
    Right now we have two separate repos, one internal and one public. We want to move everything to the public one, but we need to solve a few technical issues before we can do that, one example is our CI which only works on the internal repo right now. Until we can get that solved we will at least try to be more open about what we are currently working on with some public roadmap, we are trying to figure out a good way to shared it.

    Since the initial release we have been working on networking pipelines which we will use to add reliability and other features to the transport. We are planning to push an updated version to the public repo once that is merged the master of the internal repo. I can unfortunately not give a hard date for when that will be right now.
     
    JTovey and Kirsche like this.
  5. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    @timjohansson There is no hard secrets here how to do it, your graphics teams are doing an excellent job at it, For instance the post processing stack is on github and done properly, or what about the scriptable render pipelines? Check how they are developing in the open, that seems to work great..
    Why is it so hard for you guys at unity to make networking of the same quality? too small teams? no finances?
    Networking is a integral part of game development, almost all of the most successfull games right now are about networking, and you guys just keep failing and failing.
    Your competition is overtaking you left and right, providing great network libraries for their customers, and games are being created on those platforms, you are facing tough competition and still cannot get your act together, HLAPI broken and deprecated, LLAPI broken and abandoned, New library developed again behind closed doors without even the most basic features.

    What's going on guys? seriously?
     
  6. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    I don't think they communicate with each other among themselves within Unity. Unity needs to get their acts together quickly, otherwise, they are going to make the same mistake again. It's been very disappointing so far. There is no update since the initial dump and we have no idea where they are going. Words alone will not be enough anymore. Unity will have to earn the trust the hard way.
     
    Vincenzo likes this.
  7. FelipefSky

    FelipefSky

    Joined:
    Sep 27, 2018
    Posts:
    1
    Yeah, since 3 months ago nothing was committed to the public... not even a written documentation providing more info as well...
     
  8. projectorgames_unity

    projectorgames_unity

    Joined:
    Oct 15, 2018
    Posts:
    107
    So much this. There's posts on this subforum about Photon and UNET, and just lots of exciting blog posts about the networking, but what appears to be a real dearth of useful information.
     
    ModLunar likes this.
  9. CallMeSpam

    CallMeSpam

    Joined:
    Feb 10, 2018
    Posts:
    19
    Since we have an information vacuum, let's speculate for entertainment while we wait.

    Here's mine: Management wanted flashy announcement for conferences and overlooked the fact that the code was wasn't even close to production ready; workers are keeping their heads down because 'management is never wrong'. So now, after the flash/buzz around the conferences we have quiet time.
     
    Roni92pl, ModLunar and Vincenzo like this.
  10. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    Yeah, It's going through that endless circle, i.e., we will have to wait for the next Unite event for another marketing campaign making empty promises.
     
  11. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    But why does unity have to re-invent the wheel all the time, a good networking transport is ready and available already to the community, it consists of 5000 lines of C code plus a C# wrapper, works cross platform and is proven technology used in countless games. It supports everything you want from a network transport and is performing great. (much better than unet ever did);
    https://github.com/nxrighthere/ENet-CSharp

    Check also the benchmark results here:
    https://github.com/nxrighthere/BenchmarkNet/wiki/Benchmark-Results

    So if good transports exist, why roll new ones, especially the one you build here:
    https://github.com/Unity-Technologies/multiplayer

    Which is pretty much a terrible implementation with way too much code to do something so simple.
    Your not helping your customers at all here unity!

    Now about the higher level stuff that's where your customers DO need help, it's that stuff that would really help to be working in the unity ecosystem....

    Your customers are forced to run to solutions like Photon, Smartfox, SpartialOS, which are very expensive, costing per connected client, forcing you to use their cloud, or self hosting with giant licensing costs. the costs of that is way higher than the unity pro licenses per seat, have you thought about that? your scaring your customers away really, because they want to make simple games but are pushed to greedy companies. and decide to move to other engines which have stuff like that build-in.

    You guys bought multiplay.co.uk for 20 million. why haven't you invested i don't know, 10% of that and hired some top networking programmers and rolled a great networking solution for your clients, directly integrated with the unity ecosystem, that does not force you to use google cloud by the way.

    I can go on and on, but unity has disappointed us with the networking solution, and keeps doing it, again and again.
    All the blabla on these blogs and topics on this forum haven't gotten us anywhere near a good solution,

    The FPS example was a fiasco too, it was one big project and mess, not having any real networking solution people could use..

    For me, it does not matter I rolled my own higher level networking part, but I would assume not everybody is in that position.

    Clock is ticking unity, the future is networking. don't disappoint your customers.
     
    Roni92pl, ModLunar, litebox and 8 others like this.
  12. goldbug

    goldbug

    Joined:
    Oct 12, 2011
    Posts:
    767
    Enet may be great, but I would be careful with those benchmarks. They don't take into account UDP/IP header so sending 3 packages is counted the same as sending 1 batched package. Heck they don't even touch a network card (clients and servers are in the same machine)
     
  13. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    What are you smoking?

    And never will be, because NIC shouldn't be a bottleneck when you measure performance. I already said this to you once.
     
    Last edited: Jan 24, 2019
    Knightmore and e199 like this.
  14. goldbug

    goldbug

    Joined:
    Oct 12, 2011
    Posts:
    767
    the bandwidth only takes into account payload. You are not adding UPD/IP header size, resends or acks.

    you can tell it to me 100 times and I will still not agree with it. But this is OT
     
    Last edited: Jan 24, 2019
  15. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    No I'll just drop you into ignore list.
     
    Deleted User likes this.
  16. CallMeSpam

    CallMeSpam

    Joined:
    Feb 10, 2018
    Posts:
    19
    Ownership and licensing probably makes it a non-starter; the MIT license is pretty benign, but it isn't the same as owning the code outright. No doubt there are other issues as well, but that's likely the top one.

    As for the package, it does look pretty slick, but more painful than necessary to implement that cross-platform capability.
     
  17. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    There is not a single problem, Unity utilizes 3rd-party modules under the hood with a way less liberal licenses. Competitors such as Godot don't have any problems with it. Riot Games is using ENet in League of Legends for about a decade.

    And here you are dead wrong as well. Pure C is one of the most portable languages in the digital world. ENet can be compiled without a single problem for any platform including mobiles. Slight changes and improvements are required for consoles. ENet can even work in the browser using Emscripten which compiles LLVM bitcode to JavaScript.
     
    Last edited: Jan 25, 2019
    Anjin_nz, Vincenzo and Deleted User like this.
  18. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    nxrighthere likes this.
  19. CallMeSpam

    CallMeSpam

    Joined:
    Feb 10, 2018
    Posts:
    19
    You have every right to be proud of your work, but that doesn't mean its right for every application. In response to your statements.

    First: Contracting for use of third party software allows the language of the contract to be negotiated to ensure that it is compatible with Unity's agreements with its users. Open source licenses are fantastic, but they can produce challenges because there is no way to adjust the language to meet the specific needs of the user. Godot is already under the MIT license so its a good fit. A developer using software with an open source license is also fine because they can decide for themselves if their use is compatible with the license.

    Second: Pure C is indeed highly portable, but the only binaries available for download are x64 binaries, so someone who wants to casually use the product for iPhone or Android has to download and configure CMake, NDK, and XCode. Not an overwhelming obstacle, and not your problem, but there are easier alternatives for casual users.
     
  20. goldbug

    goldbug

    Joined:
    Oct 12, 2011
    Posts:
    767
  21. goldbug

    goldbug

    Joined:
    Oct 12, 2011
    Posts:
    767
    Browsers do not allow direct access to sockets at all, even in webassembly. The only suitable protocols available are websocket (TCP) and webrtc(UDP) AFAIK.

    Has anyone ever gotten enet to work on browsers?
     
    Last edited: Jan 25, 2019
  22. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    Which statements? I didn't say a single word that Unity should integrate ENet into the engine, and more than that I don't want this to happen because Unity doesn't deserve ENet to be a part of the engine's ecosystem, this is my personal opinion.

    You don't know anything about MIT it's already clear to us, let's move on.

    This is a low-level networking library with a mature protocol encapsulated into UDP (it can work with any other protocol and with a custom sockets if required). ENet is designed for network programmers, not casual users.
     
    Last edited: Jul 10, 2019
    Deleted User likes this.
  23. CallMeSpam

    CallMeSpam

    Joined:
    Feb 10, 2018
    Posts:
    19
    LOL, have a nice day!
     
    ModLunar likes this.
  24. inlife360

    inlife360

    Joined:
    Mar 11, 2016
    Posts:
    1
    enet is based on udp, it is possible to attach it via webrtc thingy, as you mentioned, also checkout https://github.com/mnaamani/enet-emscripten
     
    goldbug and nxrighthere like this.
  25. Deleted User

    Deleted User

    Guest

    That is your answer?
    Come on now)
     
  26. Deleted User

    Deleted User

    Guest

    goldbug likes this.
  27. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    I checked the git and it still hasn't been updated for 3 months. Well, I guess that it should be expected from Unity Network Team...
     
  28. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Hi, just popping in to announce that while there's a little lag, please moderate yourselves to be less argumentative about each other and focus on improving Unity's communication here.

    There is little wonder Unity would not respond when users are squabbling. I know of staff who no longer post because of PMs, because of demands. Lets ask nicely and be patient.

    Last I heard, Unity are simply waiting for a bit of tech in place before moving to public repo.
     
    ModLunar likes this.
  29. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    I understand you are a moderator and don't know anything of what is actually happening at unity, but that is the point, were not being told what their up to.

    We the clients are sitting here, with an engine with no working networking layer, and unity is dead silent.
    No communication, that is so important, what bit of tech? what are they working on?

    Why no public repo?

    Also why is the code they put up so bad? thousands of lines of code for a ping pong example is unbelievable, they really expect people to use their library?

    I hate to be that person, but Unity, wake up, look at your competition. They are making huge steps with network layers...
     
    e199 likes this.
  30. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    As they stated - it will not WORK on your external version of Unity. You need a source code change inside Unity first. Unity are working on it.
     
  31. CallMeSpam

    CallMeSpam

    Joined:
    Feb 10, 2018
    Posts:
    19
    Thanks for taking the time to communicate. I can see that you are a bit frustrated, but so are we. Making this information simple to find would be easier on everyone. The same questions keep getting asked because the publicly available answers are spread in multiple locations, and not where one would expect them. Prominently advertised info on the website like https://unity.com/solutions/real-time-multiplayer,
    https://support.unity3d.com/hc/en-us/articles/360001252086-UNet-Deprecation-FAQ,
    https://blogs.unity3d.com/2018/08/02/evolving-multiplayer-games-beyond-unet/, and
    https://blogs.unity3d.com/2018/09/12/multiplayer-connected-games-first-steps-forward/ do not provide a discussion of the delay, so people are confused and come here looking for answers. Even when they find this thread it is confusing because the originating post indicates that it will be kept up to date, but it hasn't been updated since November:
    As to the "As they Stated" bit, I'm assuming you are referring to the post below. I'm sure it makes sense to an insider, but to those of us on the outside, it is not clear what the phrase "our CI which only works on the internal repo right now" even means.
    Edit: added to reference web pages
     
    Last edited: Jan 31, 2019
    Vortavasail and Deleted User like this.
  32. BHouse

    BHouse

    Joined:
    Jan 10, 2018
    Posts:
    76
    We just posted an update in the UNet deprecation thread that may be of interest to people following this thread. Most relevant to this group is the new published list of active projects:
    • Active Projects list for Networking - the networking team has published their current priorities to the public git repo project view as a "plan of intent" - it's their goal to keep this up-to-date with each of the projects we are currently working on. We've been seeing solid progress internally, and we're hopeful that some of the work-in-progress items listed in Github will be in the hands of the community soon.
    Note - sticky post also updated to include this link.
     
    Last edited: Feb 14, 2019
    Kirsche, zhuchun and Anjin_nz like this.
  33. hwaet

    hwaet

    Joined:
    Mar 21, 2015
    Posts:
    26
    Thank you for the update!

    Has there been any additional consideration for a separate unity forum space for the new mutiplayer stack? Or a more search-friendly name branding of the system? I believe a central place for info on this would be helpful now, to keep users informed and patient. (Many of us *do* understand that these things take time, and just want to keep updated as it goes along)

    In the future, a separate forum space would also be a great place to find learning resources that don't conflict with 3rd party solutions and legacy systems that are heavily discussed in 'Connected Games'.

    And as for name branding, searching for "unity multiplayer" is going to be wacky once people start making tutorials for this new system.
     
  34. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    It is very depressing...to be honest.
    It sounds like you bought yourself a couple of years time. As long as there is something while developing, it's ok, like mentality.

    Let say you have something stable in the year 2020, it will take at least a year or two before people start supporting it. History shows that Unity tech is very unstable and it breaks without notice and we learned the hardway that it's not a very good idea to get on board soon. Network is by nature very complicated and very easy to break and it will take even longer if done by Unity.

    I had high hope that Unity will do something different this time but past few months of your attitude showed that nothing has changed. It's all about lip-service.

    I looked at the GitHub list. It's too high level and it means nothing.
    Yeah, that's what network system does. So what are you saying?

    The question is, how will you do it? What kind of optimization scheme you will use like UE's Replication Graph...
    Do you have any ideas what and how you want to solve? That's kind of thing I wanted to see.

    Yeah, as you said, you have a few years to think about it and good luck!
     
    ocnenued likes this.
  35. Vincenzo

    Vincenzo

    Joined:
    Feb 29, 2012
    Posts:
    146
    That's great you have a plan what you want to work on or what you are working on, but work in the open, public github guys!
    It's the only way to move this project forward, get feedback early and listen to your customers.

    Right now this project is dead in the water already, what is on github right now is terrible, but we can't comment on it properly because we don't know if you are making it better, fixing it, and what you are implementing now.

    Once again, guys, there are no secrets here, great lower level libraries have been written, and work well, take lessons from it, take lessons from your concurrence, they are making a great network framework right now and you can learn from them.

    Get us in there with you, lets make this a great network library together. not like this.
     
  36. Anjin_nz

    Anjin_nz

    Joined:
    Jun 24, 2014
    Posts:
    75
    Just to repost what I have said on the deprecation thread. Our opinion should count as we developed one of the first successful Android multiplayer games on Unity.

    I call for a senior member of Untys technical staff to own this. Ideally Joachim or someone directly reporting to him.

    This situation has gone on for many years now and repeating the past mistakes will result in a mass exodus which no one here wants.

    We need to be sure that the CTO is aware of this issue and that progress will be monitored and timely dates set.

    Vincenzos comments should be supported- Networking is no longer a nice to have, it's a critical core part of gaming today. Unity will win or lose key customers based on this.

    Let me make this patently clear- as a pro Unity dev house. If Unity's networking support fails again and UE4's Android and VR support improves we will be forced to switch.

    I have had a public conversation with Tim Sweeney on twitter about improving Android support (see anjin_games twitter handle).

    Ultimately we need a viable platform for Android/VR that supports networking properly. Whoever delivers this will win the community.

    Unity must provide a new working solution by early 2020 (at the latest) and needs to bet the company on it.

    We love you Unity but you can't fail on this one anymore.
     
    Vincenzo likes this.
  37. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    The reason for that is that no 3rd party solution will ever be fully integrated with the ECS, Burst and Job system. So by using ENET, we'd be missing out on many of the gains that the Data-Oriented-Tech-Stack would bring.



    It's the same reason why Unity will have to make an ECS physics engine at some point too

    -

    Another thing that's important to remember is platform support. Enet is not guaranteed to continue to evolve and support PS5/etc..... It's unclear from Enet's website if they even support current-gen consoles and mobiles. All they say is "ENet works on Windows and any other Unix or Unix-like platform providing a BSD sockets interface"
     
    Last edited: Mar 12, 2019
    BHouse likes this.
  38. nxrighthere

    nxrighthere

    Joined:
    Mar 2, 2014
    Posts:
    567
    Including the Unity's low-level layer, because network transport is by definition a coarse-grained system which performs long-running continuous I/O while the whole data-oriented tech stack is about fine-grained parallelism.

    ENet abstractions are okay for this and can be improved to make packets work on top of large contiguous page-aligned vectored memory blocks if you want a good memory layout. It takes about a day to write the code in plain C, and this is done in my other performance-oriented projects.

    That said, my opinion around Unity's networking future and ENet is opposite. It's not about technical problems it's all about the business and investments.
     
    Last edited: Apr 11, 2019
  39. ScottPeal

    ScottPeal

    Joined:
    Jan 14, 2013
    Posts:
    61
    Wow, April 7th and still no movement!
     
    Kichang-Kim and ocnenued like this.
  40. i_am_kisly

    i_am_kisly

    Joined:
    Feb 16, 2015
    Posts:
    22
    Hello !
    New Networking has formalized protocol desscription document? I need connect this with dotnetty or other console application.
     
    Last edited: Apr 10, 2019
  41. Kichang-Kim

    Kichang-Kim

    Joined:
    Oct 19, 2010
    Posts:
    1,011
  42. Kichang-Kim

    Kichang-Kim

    Joined:
    Oct 19, 2010
    Posts:
    1,011
    @BHouse Hi, Any ETA about packet fragmentation and reliability? (same functionality as LLAPI)

    Edit:
    Also, current sample uses Entities 0.0.12-p.19! Latest Entities completly removed [Inject] and has lots of breaking changes, so I think the sample shoud be fixed for it. (even if it doesn't have any new function)
     
    Last edited: Apr 11, 2019
  43. pKallv

    pKallv

    Joined:
    Mar 2, 2014
    Posts:
    1,191
    When will we see anything structured from Unity, like tutorials, asynchronous etc.?
     
  44. Kichang-Kim

    Kichang-Kim

    Joined:
    Oct 19, 2010
    Posts:
    1,011
  45. Soaryn

    Soaryn

    Joined:
    Apr 17, 2015
    Posts:
    328
    Still would like to have built in TCP socket support vs having to roll our own in the new system :\
     
  46. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Now that there's reliable-sequenced support in the new transport (for UDP), would you still need TCP? Seems to me like it's the same thing
     
  47. Soaryn

    Soaryn

    Joined:
    Apr 17, 2015
    Posts:
    328
    To access say a 3rd party WebSocket API that is reliant on a TCP connection I do. :) I have no control over the server, only the client. The requirement is a TCP connection.
     
    PhilSA likes this.
  48. gaijin_unity

    gaijin_unity

    Joined:
    Feb 6, 2019
    Posts:
    2
    Just use generic TcpClient.
    Unity networking is about communication between your game instances
     
  49. Soaryn

    Soaryn

    Joined:
    Apr 17, 2015
    Posts:
    328
    Well I am currently using C# sockets; however, is is naive to think that Unity is exclusively for games. To that end it would also be silly for Unity to exclusive work on tools for solely gaming.
    The new networking system is more Data Oriented than the current implemntations.
     
  50. gaijin_unity

    gaijin_unity

    Joined:
    Feb 6, 2019
    Posts:
    2
    point is not about "game" but about "your"
    I rephrase: Unity networking is about communication between your game or app instances made with Unity.
     
    Joe-Censored likes this.