I have some amazing news!
**Massive Update! ~ Feb 21 2016**
Using a new algorithm that is a hybrid of both input replication and interpolation, I've now accomplished my goal of a game based on replicating player-controlled physics-simulating characters that can also platform freely!
**I can now fully support the network coding for a physics-based platformer multiplayer game!**
You won't believe it but in the video below I am testing with **200 millisecond simulated lag**!
The results are that good!
I am using a completely custom pawn for this, with my own skeletal mesh component! I am not using ACharacter replication system at all.
https://www.youtube.com/watch?v=DLF0OlQ-TzM
I invented an algorithm that supports replication of the movement of meshes that are player-controlled and simulating physics!
Replicating the movement of skeletal meshes that are simulating physics is one level of the issue I’ve been solving,
but the other level is when that replicated skeletal mesh movement is being controlled by a human player!
As you might well know from looking in the code base, replicating player-controlled movements over a realistic network situation is quite complicated!
Well in this video I demonstrate replicating player-controlled movements of physics-simulating skeletal meshes!
Enjoy!
**Realistic Network Lag**
I used these network settings forth both server and client for realitistic network testing!
You can stick the below into a .txt in your Engine/Binaries directory and then run it using exec filename.txt from the console of both clients and server.
Net PktLoss=1
Net PktOrder=0
Net PktDup=0
Net PktLag=75
Net PktLagVariance=0
Video
In the video it looks like I am just rolling around, the reason it is significant is because the movements are replicating properly!
The right window is the client, who is watching the server move around accurately despite having to watch what the listen server is doing across a network!
**Secret Core of Algorithm**
I dont ever do hard "sets" of the Mesh's physics location, I only apply additional forces on the non-player simulated proxies to keep them up to date with what actual player's mesh is doing!
So each client and the server are being told what the correct physics mesh location is, but are then just applying additional forces to the replicated linear and angular velocity to get their proxies to the right position.
The actual player-controlled mesh does not receive any updates so that the player's experience is always smooth, instead the player-controlled mesh is updating all of its proxies over the network. :)
What This Means
This means multiplayer game where all the players are controlling physics simulating skeletal meshes!
Physics-based multiplayer game!
PS: Epic if you want this tech for ACharacter class, to check when a Character’s mesh is ragdolled and then run my code to keep the simulated ragdoll meshes in sync, let me know!