Question about Netcode for GameObjects which features will be updated later

I’ve been using Netcode for GameObject to develop my games for a while now, but I still feel that Netcode leaves a lot to be desired. Recently I looked at some other free online game frameworks, And find a comparison of their execl https://docs.google.com/spreadsheet…tvE8sp1ZQ4EgX1sI0RFA/edit?pli=1#gid=233715429 (which of course here Netco de is 1.6.0, in fact now 1.8.0 has some improvements, such as custom RPC)
However, Netcode is still not perfect in many aspects. I would like to ask whether the official has considered the following, and whether there is a specific Roadmap:

  1. Client-side prediction or server-side rollback detection
  2. Handy tools such as: LAN connectors (allowing to find and connect to devices on the same network without adjusting firewall or router rules), automatic network object pooling,
  3. Support for nested NetworkObject prefabs
  4. Some client-authority-based methods (e.g., client-generated and destroyed NetworkObject)
  5. Support loading scenes dynamically (instead of only loading scenes from BulidSetting)

You’ll find the roadmaps by searching: Multiplayer Networking roadmap | Unity

#1 is definitely on the list.

#2 LAN discovery can already be implemented with simple means, I believe there are already scripts or pointers to solutions at least out in the wild. Internet discovery of games behind a router is an issue and has a known solution: a relay server. Whether you use Unity’s relay service or another or custom solution is up to you. The rest is up to admins configuring the network.

#3 I find it not too much hassle to synch one object’s position to another. There’s probably good reasons for not allowing this, as in the end users might create incredibly nested hierarchies, which are difficult to resolve correctly (nested hierarchies cause a lot of “transform change” events bubbling down the hierarchy, which can be a performance issue in any game).

#4 makes no sense in a server-authoritative (client-server) network topology. It’s always the server driving these changes. If the client destroys something, the server needs to know, and relay it to other clients. So you could as well just have the server do it and destroy it on all clients, including the initiating client - that way the initiating client also has no “advantage” over the other clients because the change would be instant for that client.

#5 Scenes not in BuildSettings are not in the build. You cannot load what doesn’t exist, and what cannot be created at runtime. Unless you mean loading network scenes from asset bundles maybe? Assuming NGO currently doesn’t support that - which I don’t know.

As a side note:
There are several items in that list that are not accurate about NGO.:frowning:

  • You can connect to different platforms using the same project to build binaries for the platforms in question

  • The next (very soon to be released) version of NGO will support a much wider range of RPCs (making most of those marked not supported being supported).

  • You can send large packets in many different ways (NetworkVariable, RPC, Custom Messages)

  • You can efficiently create a countdown timer in NGO.

  • Offline NetworkObjects (i.e. instances that are not spawned) can exist without having to be spawned

  • This is actually how pooling works

  • Object pooling was something supported upon the first release of NGO (it has it as a long term feature)

  • Runtime parent synchronization works in NGO

  • NGO has supported Object ownership updates on all clients since first release

There are many others that are not accurate in that list. So, I would take caution in using that as a guide when picking a netcode solution and you might want to consider the support options.

On the other hand, the great thing about Unity’s technology is that you have many options to pick from!

So, it really depends upon what best fits your needs. What I can say is that Unity will always continue to evolve their netcode solution(s).

Thank you for answering my questions. I have thought about 2,3, and 4. These three questions may indeed be impossible or unnecessary for some reasons.
But I may not have been clear about the fifth question. It was in NetworkManager’s SceneManager that I couldn’t use addressable for scene loading. Although I could manage the addressable scene loading on the client without using NetworkSceneManager, the NetObjects in the scene would not be automatically implemented. This is one thing that bothers me.

And then I would like to know when the first point might be completed (because this feature is important to me, I want to know when it might be finished so I can plan my own game development).

Yes I know, I’ve already used Netcode 1.8.0 in my game development projects. I do find the new RpcAttribute very useful.
It’s just that I need some important features in my game development process (e.g. client-side prediction)

there are a lot of options for #2, personally i went with a post code to website and have clients read it… if its a local lan, you could arguably send out a broadcast message to say where are you and have the server end respond.

Thanks for your advice. I’ll give it a try

For what it is worth, we will be releasing a new “mode” for NGO called Distributed Authority (near future but cannot give out the release date yet) that solves for the issue with synchronizing owner authority motion models (i.e. has been called predicted client-side spawning by other solutions).

Distributed authority sounds frickin excellent… cant wait…

I would like to know if you will offer this as a transport or something that can be extended in order to use our own, servers for enabling that king of connection