My game recently had a plane added to it where it has a two-player crew; one is the pilot, one launches and controls a player-guided missile.
With StreamingEnabled, this system would be an issue (the player guides the missile out of streaming range), but I got around this by having the missile be a model with the “Persistent” streaming mode, the primary part of the model is made the primary part of the controlling player’s character (and then resets when the player exits the seat or detonates the missile), making that primary part have its network owner set to the controlling player, and all is well. I’ve used it for other missile systems in my game, and it works flawlessly.
However, this one doesn’t. If the co-pilot launches a missile mid-flight, and the missile gets out of streaming range, the out of streaming range screen appears, as you can see below:
This is obviously a big issue given that its not that difficult to get out of streaming range controlling a missile while the jet with the rest of your character in it goes the other direction.
However, if the co-pilot is by themself, they can fly the missile for unlimited range, no issue.
The co-pilot can even fly this missile with unlimited range even if there’s a pilot - as long as pilot has not taken off yet.
I do not understand this behavior, at all. I’ve tried a lot of hacky ways around it, like resetting the missile’s NetworkOwnership (setting it to nil and not auto) before the missile has it set to the controlling player, but nothing seems to work.
I have a Battleship in the game where you oftentimes have a captain of the ship controlling the ship and a separate player launching and guiding cruise missiles from there, and there is no issue with the exact same system that is used for this plane’s air-launched cruise missile - except the battleship’s network ownership is set to nil and never to the captain player (movement is done on the server via a VehicleSeat - not optimal but the only workaround here)
I assume the issue here is something to do network ownership disputes - even though the way I’ve coded it, this should not be an issue (in theory). How can I fix this/get around it?