Created in Unreal 4. Coded in blueprint.
Unfortunately, I never got this to work as intended. Unreal uses a non-deterministic physics engine. I learned a lot but I eventually came to conclusion that this would be much easier with a deterministic physics engine. With enough time, I might be able to figure out a good way to do it without deterministic physics. Mostly the trick is getting the results on the client side to accurately predict enough of the movement that the results from the server can be smoothed out to match the correct state. It's a very interesting but difficult problem to solve if you want clients to feel immediate and accurate physics results. With a dedicated server, all players would see very similar results but it was never quite performance I was intending.