我正在 Unity 中实现简单的 2D mmo 游戏。
我想实现服务器和客户端之间的用户位置同步。你会建议哪种方法?
我的两个方法想法:
第一:
描述:
- ClientA 生成事件移动。他移动的 Delta 时间为 0,并通过套接字将此事件作为命令发送,并带有开始移动的本地时间戳 (T1)。
- 服务器将记住并向现场的每个客户广播有关此事件的信息
- ClientB 将在 (T3) 时间收到 ClientA 的事件,并从 dt (delta time) = T3-T1 开始执行移动动作。
(我们还可以以帧或服务器时间为 T3 和 T1 评分)。
描述:
- 每次我们都会为客户广播当前的场景状态
- 场景状态将在服务器或客户端计算(没关系)
- ClientA 将向服务器发送移动事件,服务器将接收它并记住它并广播给其他客户端。
- ClientB 将获取 ClientA 对象的同步状态并使用对象的当前移动状态更新它们的位置)并每次插入。
出色地。问题是.... 这两种解决方案的优缺点是什么?也许你有比我想象的更好的解决方案。
解决方案可能在 Unity 引擎上,但应该比我想象的更有效。另外,什么解决方案将 Unity Networking 和 Photon 与 Photon 服务器一起使用?
谢谢!