如何使用websockets进行实时游戏

Sha*_*ean 12 multiplayer websocket

我想制作一个使用websockets和node.js服务器的2人乒乓球游戏.socket.io在客户端和服务器上都使用.到目前为止,我唯一的经验是创建一个聊天应用程序.

这是我第一次尝试多人游戏,所以我对网络游戏并不熟悉.服务器应该跟踪:

  1. 球的每个位置以及经常或何时?
  2. 玩家移动,玩家向左或向右移动,如果我按住一段时间该怎么办?我应该发送像?pressHoldStartPositionpressHoldStopPosition?我想这很容易,如果我只允许按下而不是按住.

我的想法:

  1. 当球击中球员时,客户端计算速度,开始和结束位置,而另一个客户端应该从中执行正确的动画.
  2. 不知道.

rez*_*ner 13

  1. 客户计算 - 没有 - 除非你想让它预测下一个游戏步骤*(服务器anwser).整个游戏在服务器上运行,服务器是唯一可信赖的数据和计算源.在类似于少于10个对象的游戏中,您可以经常发送数据(间隔为50毫秒).对于一个球我会发送[x,y,速度或角度],用于桨[x,y].然后在旧的(客户端上的x,y)和新的(x,y,你刚从服务器获得)之间进行插值(动画时间 - 50ms).

  2. 不要发送 - 玩家按下的数百万个副本 - 而是每个时间段(100ms?)发送一个数据包,其中包含"玩家正在按下"等信息100ms,或者"玩家设置位置"到(32,100)然后检查服务器端是可能的,并接受或拒绝.

也许这个主题将有助于你的冒险:

使用Node.JS构建的多人JavaScript游戏 - 分离玩家

[*1]预测是一种滞后补偿机制,您可以在以后实施.简化的方式意味着服务器和客户端共享一些游戏逻辑代码,当客户端没有来自服务器的当前数据时,它会尝试模拟真实游戏中发生的事情.