what is the correct method for synchronizing transform data for child objects of NetworkInstantiated parents? I have tried both Transform and OnSerializeNetworkView, both using Reliable Delta Compressed state sync. The child transform data is not updated on any clients…
Thanks for the links Fattie
Tests confirm that Network.Instantiate is evil (err, automagic?) when control must be explicit. It appears that clients (or server) which introduce game objects into the network, they maintain some sort of nascent control over these objects. If control is exerted from another agent in the network, the two forces appear to “fight” each other. Perhaps I am missing something elemental here…
The “normal” RPC approach is far more intuitive and plays nicely with centralized data at the server - allowing for authoritative control if needed. The only hitch at this point is that my interpolation code isn’t working properly anymore - i’ll have to take a closer look at OnSerializeNetworkView() and the Network View component…
well there’s many, many approaches. but I just do this
use the “proper” (as I’d put it) and “normal” version of the RPC call
using one line of code on each side, set the position of the puppet
I dunno if it gets easier than that! heh !
You may like to look at these two novels on the issue…
Hope it helps in some way!
ONE POINT for future readers … how to instantiate individually? Say you need to have a Green ScapeShip appear on perhaps “player 3”.
Simply, use an RPC (ie, a “normal !” RPC) which is like
function MakeANewSpaceShip()
and, call that routine, on that player. In other words, never use “network instantiate” just program it completely normally with your own routines (“make spaceship here” “have an enemy tank appear” … whatever) and call those using “normal-indvidual” RPC calls.