在 Unity 台球游戏中实现多人游戏的最佳方法是什么?

What's the best method to implement multiplayer on a Unity Billiard game?

我正在制作在线台球游戏。我已经完成了单人游戏、在线账户系统、在线库存系统等的所有机制。一切都很好,但我现在已经到了最难的部分,多人游戏。我尝试在每一帧同步每个球的位置,但运动一点也不流畅,球会来回移动,总体上看起来 "bad"。有人对此有任何解决方案吗?其他台球游戏(如 Miniclip 中的那个)是如何做到的,老实说,我被困在这里并感到沮丧,因为我花了一段时间学习 Photon 网络,然后发现它在处理物理同步方面并不是那么好。

uNet 在这里会是更好的选择吗?

感谢您给我的任何帮助。谢谢!

这已经用 PUN 完成了:https://www.assetstore.unity3d.com/en/#!/content/15802

您可以尝试使用同步设置或实现自定义 OnPhotonSerializeView(请参阅 PUN 包中的 DemoSynchronization)。确保在同步客户端上禁用物理模拟。请参阅 DemoBoxes 了解物理模拟示例。

或者,如果球只能沿线移动,则不要每帧都发送所有位置。仅在球碰撞时发送位置和速度,并在两者之间进行简单的速度模拟。这甚至适用于更全面的物理学,但一般规则是相同的:在关键点同步它。当然这不是自动同步那么简单

另请注意,经典台球是回合制游戏,玩家互动并不复杂。在最坏的情况下,您可以 'record' 在当前玩家客户端上模拟,而 'playback' 在其他玩家客户端上模拟。