我正在用令人惊叹的phaser.io开发一个非常简单的HTML5游戏。这场比赛非常简单:2D版的1vs1排球比赛...实际上它是伟大的“皮卡丘排球”(http://imagenes.es.sftcdn.net/es/scrn/12000/12531/pikachu-volleyball-2.jpg)的“复制品”。多人游戏 - 同步球
正如我所说的,这场比赛是很容易的,我有:
- PLAYER1
- Player2
- 静态元素
- 球
而且我刚刚来控制: - 球员运动 - 球运动(实际上由街机物理控制) - 玩家 - 球碰撞
我只是为了好玩,把我的朋友的面孔添加到玩家。 这款游戏工作得很好,我和朋友一起玩,真的很开心。所以我想,为什么不让它在线多人游戏,所以我们可以从不同的位置远程玩?
阅读了关于多人游戏的HTML5游戏之后,我开始用带有nodeJS服务器的websocket(socket.io)开发它。 socket.io的实现非常简单,通讯工作正常。
事情是让游戏真正可玩。
这些都是我的步骤现在:
在客户端连接,则创建:
- PLAYER1(我自己)
- 静态元素
而且客户端等待新客户连接创建:
- 远程播放器
- 球
因此,两个客户端连接后,每个客户端上,我有:
- OwnPlayer
- RemotePlayer
- 静态元素
- 球
然后游戏开始......在这个阶段它不是很公平,因为远程玩家根本没有移动。所以,为了让远程播放器移动(在一些尝试之后),我决定实施一种权威的服务器,就像那样工作。
- 本地球员动作(输入注册) - >客户端发送的输入到服务器 - >服务器发送输入到两个客户端 - >每个客户端应用运动(通过改变速度)
这技工使球员的运动在过去工作,但'同步'(等待时间是可以接受的)。
这看起来不错,每个客户端都在播放他们的播放器,另一个播放器正在远程客户端移动。
问题是球...
在每个客户端有一个球,与街机物理移动(在网或在每个玩家的头弹跳)......所以很少有动作后,因为球员位置的同步并不完美,每个客户球的位置也不一样。
你将如何实现球同步?
有些选项我在想:
定期送球位置服务器 - >服务器发送的球位的客户端 - >客户端更新球位置(有一些插值)
仅在一个客户机(主站)和然后启用球物理发送从“主客户端”球位置“从属客户”周期性地(与的WebRTC,也许)
重新开始和制作一个真正的“权威服务器”,在服务器上安装Arcade Physics(如果可能的话),并在客户端插值?