Non-Authoritative Games with Bolt (Co-op)

Hello,

I'm highly considering Bolt for my project, but I had a few questions. To be clear, my aim is to make a co-op action game, which means I don't need the game to be authoritative. I've read this would be quite simple with Bolt. There is no need to for lag compensation or setting up specific hitboxes, but how is this possible?

I assume Bolt is simply replicating the transform and values of the prefab, but then what about enemy AI? How would I sync their behaviour trees? And if a player is bouncing an enemy around through combo attacks, this would most likely not be predicted or synced very well between the players correct? Leading to unco-ordinated gameplay with enemies teleporting around the map.

Would I set a client to own each enemy? Would each client simply sync back up with the "Master Client" after the enemies get a little too far?

How much flexibility can I have? Example, in my action game there would be start-up for each attack, as well as HitStop on enemies when the attacks connect. Could I predict enemy movement ahead of time so that it could be more synced between players?

Lastly, I already have custom character controllers and hitboxes setup using the Unity Animator. I assume I don't have to change anything to work with Bolt then as I'm not using any of its server-side capabilities?

Thank you for your time. I appreciate anyone trying to answer!

Comments

  • I would have all AI ownership and logic on the host. Transform smoothing should make it look good even with latency.

    With client auth, not many changes are needed to animation etc. You just replicate.
  • How would you handle damage? Would you send them using Bolt events? The responsiveness of your damage would rely on your connection to the host then? Or maybe send damage values but have the attack connect client side first?
  • Yes you can just use events. Many Bolt games have immediately client side effects like a sound or particle. If you want "immediate responsiveness" I'd look at Photon Quantum. https://www.photonengine.com/en-US/Quantum
  • Thank you for the help but Im a small indie and not looking to make anything competitive. I simply want to know what I can do with Bolt to make it as responsive as possible.

    I imagine input delay would do nothing to help? My game would be a variable frame rate aimed at 30 fps gameplay, would that matter?

    Thanks again for the support.
  • Input delay would not help. Bolt operates independently of FPS / OnUpdate tick
  • Alright, thank you for your help. I will most likely purchase Bolt soon. If you could humor one last thought. What if I send the attack with how long ago it happened, could I then fast forward/simulate ticks on the host so the position will be closer to what the client intended? How difficult might this be considering four players simultaneously sending events?
  • I don't really follow, it sounds kind of like lag compensation.
  • Yes. On the client side, when I attack an enemy, ill have it move based on immediate feedback. Say it takes 5-8 frames to get to the host, the host knows this and calculates where the enemy might now be based on this velocity.

    I dont know if this might involve recording the transforms but in theory this should help smooth things out right?