I’m not to familiar with these kinds of stuff but I suggest the Ownership should be on the server. To make it not fall through the map, you could make the planets be loaded in the server side and when a player joins, they would delete all planets and when a hostile spawns, a player script would detect that and delete it if they are not on the same planet with that hostile. Deleting the hostiles might take up performance depending on the amount spawning and how complex the hostile model is. To reduce that, I suggest making a folder on each planet that holds all the hostiles so a localScript would just detect if a new child was added on there and delete it. You could use game:GetService(“Debris”). It another form of object deletion but they don’t delete immediately and it might improve performance but I’m not too sure.
If you want the hostile to spawn on the server but only be replicated to players on the same planet (instead of all the players), you could use this thingy I found:
I’m not too sure how it works or how good it is (as I never used it) but it basically allows you to replicate things from the server to some clients instead of all of them.