154758lovo335y2olmmsmf.png
  总的来讲,游戏状态只由服务器来管理。客户端会发送他们的行为到服务器。服务器定期更新状态,然后将状态发回去,客户端只要显示可以了。

  处理网络

  傀儡客户端对于回合制游戏来讲能良好工作,比如策略游戏或者扑克牌。它在局域网下也会有不错的表现,通信几乎是立刻到达。但这对于因特网上互联的快节奏游戏来讲是不可行。

  这里算一下网速。假设你在旧金山,连接到纽约的服务器。这大概有4000km,也就是2500里(差不多等于里斯本到莫斯科)。没有东西能比光速快,就算是在互联网上的字节(微观上是光脉冲,在电缆中的电流,也就是电磁波)。光传播速度大约是300,000 km/s,所以穿越4000km需要13毫秒。

  这可能听起来很快,但这是基于非常乐观的假设–这里假设了数据以光速在直线上传输,这几乎是不可能的事情。在现实生活中,数据需要经过一个个路由器跳跃,大多数都没有到达光速;路由器本身还存在一定的延迟,需要对数据包进行拷贝、检查、发送。

  为了便于讨论,假设数据包从客户端到服务器需要50毫秒,这已经是很好的情况–如果你在纽约连接到东京会怎样?如果网络阻塞会怎样?100、200甚至500毫秒的延迟也不是没有的。

  回到我们的例子,你的客户端发送输入信息到服务器“我按下右键”。服务器在50毫秒后收到。假设服务器处理请求并且马上回包。你的客户端会在50毫秒后收到“你在(1,0)”。

  在你看来,所发生的事情无非就是按下右键有十分之一秒没有响应而已,接着角色才开始往右走。这个在你输入与结果之间的延迟听起来不是特别严重,但这会影响手感。如果延迟到了半秒钟,这就不仅仅是影响手感,而是这游戏没法玩了。

  总结

  网络多人游戏非常有趣,但是带来了全新的挑战。权威服务器架构能解决大部分作弊问题。简单的实现方式能让游戏没有响应性。

  在接下来的文章里,我们将会基于权威服务器去构建系统,同时会去最小化延迟给玩家带来的不良体验,让玩家感受到单机游戏般顺畅。

  相关阅读浅谈动作类网络游戏同步的实现方案

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛