Search Unity

Feedback Custom scene management

Discussion in 'Netcode for GameObjects' started by nuwn, Jan 8, 2023.

  1. nuwn

    nuwn

    Joined:
    Jan 29, 2017
    Posts:
    137
    Hi!

    Love to see netcode being made and supported, waited long for it.
    Guess I have some feedback/questions/searching for advice...

    ----- Should be worth mentioning that I am not very experienced in networking, So I might be completely off but I am ready to learn. Should also be noted that I'm on 1.2.0 as of writing this.

    So I've been spending some time looking into custom scene management, and this seems not fully supported yet. Unless you use Netcodes ways to handle scene management and syncing, etc. Or making a custom Networkmanager, spawn, sync, and all those from scratch, which is a lot of work.
    Would like to avoid having to clone netcode git to the project to be able to turn things off.

    For example:

    If I wish to load a scene as I connected, and have people late join, the current NetworkManager as of row 2244, forces a sync, so before clients join, it syncs objects and all objects will be deleted when I sync the next scene causing a lot of errors for all in-scene objects, which again forces you to use netcodes things or rebuild as stated previously. So connecting in the main menu and loading a lobby scene when connected is not a thing currently, (I think), if the lobby has in-scene objects. For this example it was made without using the methods in the network scene manager, after all, I'm looking to make a custom one. Opening a scene in additive and then having to move objects spawned to a new scene seems very inefficient. Maybe I'm missing something, please fill me in.

    Sure all can be rebuilt to fit one's needs, but there are a lot of cool things in netcode that would be awesome to still be able to access if one were to rebuild it, but it's all hidden behind internal, what if I wanted to make a custom NetworkManager but still use the network spawn manager? Why can't I do that?
    From a package installed in the package manager, which blocks edits.

    And from what I've seen so far, rebuilding all would be faster than trying to figure out how to modify the systems.
    To clarify when I say rebuild I mean "NetworkManager, NetworkSceneManager, NetworkSpawnManager", maybe more, I have not gotten that far yet.

    Can give you an insight into my normal workflow when it comes to scenes. I normally have persistent scenes, holding systems such as cameras, event managers, game managers, etc. global things, rather than DDOL. It's a bit more flexible for us, structure, and not having to add DDOL everywhere.
    I use loading scenes, currently not easy to make without custom management afaik.
    I separate scenes into behavior. Gameplay, Statics, Environments, Transitions etc.
    And I like this setup which is why I try to see if I can mimic this with netcode in a simple way.

    What I am asking for from netcode I guess, is more flexibility in the systems, less internal code, and some ways to turn off sync for the clients in various ways? and maybe verify that the documentation section is working as intended. there MUST be a better way than having to register all in-game instance ids in the manager. There is, spawn them, but still, a way that is supported in the package. And eventually more support for the custom parts of the package.

    Most likely a lot will change over time, this package being so young still. and I understand that custom management might not be a high priority.

    I'd welcome discussions, I'm here to learn :)
    Looking forward to seeing where netcode takes us.
    Thank you,
     
    Last edited: Jan 9, 2023
  2. RikuTheFuffs-U

    RikuTheFuffs-U

    Unity Technologies

    Joined:
    Feb 20, 2020
    Posts:
    440
    Hi @nuwn , thanks for the feedback and happy to see that you're trying hard to use Netcode for Gameobjects (aka "NGO")!

    I'd recommend to officially open a feature request here for every new feature you would like to see in NGO. In this way, the team behind Netcode For GameObject will be able to prioritize your feature, and you'll be automatically updated about its status.