This is not a “How do I integrate server-side physics?" post. This post contains questions about practically working with server-side physics and ways to make my life easier.
I've been using Unity for awhile now and as such I have made use of the Unity PhysX* implementation to create server-authoritative gameplay for several different projects, however these all are projects that have run within the context of the Unity Game Engine and have used their Object system & Tools to construct the physics world.
I'm sure a lot of you are aware that Unity is quite heavy even when running in “headless” mode which doesn't even perform most of the optimizations that you would expect it to, so I'm looking to start writing a multithreaded standalone server for my next project as I'm targeting a larger concurrent userbase than any of my other projects, instead of having one running within the context of Unity and all of the overhead associated with it.
Here's my concerns and the things that I'm not really sure how to solve, and the methods that I've mentally drafted to solve these problems. I'm looking for advice regarding if these solutions are a good route to pursue or if they've already been tried and better solutions have been developed by the other developers out there.
How do I get the Game World into my server?
This is probably my largest concern. I've considered writing some form of script that goes through the Unity hierarchy and exports collider data using the default PhysX implementations. Then reconstructing the colliders on the server using some form of generated configuration file, but I'm still not sure how I want to go about this, or what the best methods are.
This is very likely going to mean I can't use things like the built-in terrain editor, as well. Just struggling to wrap my head around the best way to approach it.