Physics-Based Prop Movement and Client-Side Prediction Issues

Hi,

My Problem:
I’m developing a prop hunt game and facing issues with the physics-based movement system. Props (objects controlled by players) rely on the physics system for movement. Since I’m using a Static Mesh as the root component for the props, I can’t add a Character Movement Component. Here’s how my movement logic currently works:

  1. Movement:
    When a movement command (e.g., AddForce) is issued on the client, it’s sent to the server using a Run on Server event. However, since the movement is processed both on the client and server, several issues occur:
  • Some clients find it very hard to move.
  • Other clients move too fast.
  • The server movement appears fine, but there are significant inconsistencies on the client side.
  1. Additional Issues:
  • When I disable Replicate Physics to Autonomous Proxies, movement becomes somewhat freer, but after a few seconds, the prop snaps back to its initial position as if there’s “9999 ping.”
  • I suspect this is due to a lack of proper server-side reconciliation, but I’m not sure how to implement it correctly.

What I Need Help With:

  • How can I implement client-side prediction and server-side reconciliation effectively?
  • What are the best practices for creating a Prop Movement system using physics?
  • Since I’m using a Static Mesh, I can’t add a movement component. How can I make clients move independently while staying synchronized with the server?

Additional Notes:

  • The game is tested on Steam, and everything works, but the clients exhibit inconsistent behavior when it comes to physics-based movement.
  • This is a Blueprint-based project, but I’m open to code or plugin suggestions.
  • Would using Launch Character or similar approaches make sense for this scenario? Or should I stick to a purely physics-based solution?

I’d greatly appreciate any insights or suggestions. Thanks in advance! :blush: