Network Ownership Events/Synchronization

As a Roblox developer, it is currently too hard to effectively track when the Network Ownership of assemblies change, or synchronzie it across assemblies.

If Roblox is able to address this issue, it would improve my development experience because it would allow me to better take advantage of network ownership to create a more cohesive physics experience.

Adding new events for this could contribute to clutter, and due to the property-like nature of network ownership (get/set) it doesn’t make much sense either. There are at least a few similar APIs like BasePart:GetMass() (now BasePart.Mass) which have been converted into properties.

The main use case for this would be for synchronizing the network ownership between two or more assemblies, especially when logistically doing so is otherwise hard.

For example here is the problem I am currently encountering. Say you have a tow truck with a tow hook, attached by a rope. This will mean two assemblies. Synchronizing network ownership becomes a logistical problem, and an impossible one once network ownership becomes automatic.

In order to track when network ownership changes, you need to implement this yourself in every place where you set it. But this only covers places where you explicitly set something, it becomes difficult to structure this, and meanwhile even if you do, no functionality like this exists for automatic network ownership, besides polling, which is bad practice.

To create a more coherent physics experience, it would be nice to be able to have the network ownership of two or more related assemblies be synchronized like this, even in cases where constraints aren’t used and those assemblies might have custom physics. Plus, sometimes you want your RopeConstraints or similar to have two different network owners such as in the case of two players’ characters being strung together.