科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件高级WinSock多人游戏编程技术

高级WinSock多人游戏编程技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

多人网络游戏中如何避免迟延是一个比较重要的话题。作为多人网络游戏开发者,我们总是努力使事情做得更快,减少迟延以获得更多的带宽。

作者:佚名 来源:论坛 2007年10月20日

关键字: Winsock 多人游戏 编程

  • 评论
  • 分享微博
  • 分享邮件
多人网络游戏中如何避免迟延是一个比较重要的话题。作为多人网络游戏开发者,我们总是努力使事情做得更快,减少迟延以获得更多的带宽。这也是我们为什么通常会抛弃TCP的稳定性而使用UDP提高速度的原因。减少延迟,接受更多应答多播也是其中一种方法。在未来的因特网,多播涉及高速高品质跨网络数字电视数据传输。在网络游戏中,多播会给我们带来什么好处?简而言之,它不仅能降低游戏服务器的工作量,并且解决了在网络上无游戏管理者裁判状况下玩家彼此通信的老问题,假如DirectPlay进一步使用多播的话,那么我们也将有更多的理由使用它。

  1、基于多播技术的想法(The Idea Behind Multicasting)

  在一些理论学说中。它们通常以服务器至客户机作为开发模式,客户机发送数据到服务器,这一输入更新游戏状态并且服务器而后把由上述的信息发送到所有客户机上:

  如果说,此刻服务器连接着32个玩家,然后同一样的信息将被发送32次(每个玩家)。如果被送到32个玩家的数据都为20字节,那么将有640字节将必须通过服务器的网络连接被发送出去。如果此时32个玩家又从事着各自不同的任务时,例如敲击键盘或移动鼠标,这些事件产生的数据量将非常庞大。当然,我们必须写出更好的代码处理欲发送的数据,多播可以很好的解决问题。

  如何获得多播的帮助呢?这是很好的问题,多播可以显著地减少服务器向网络基层组织发送数据包任务的负担。在多播中,信息包能被送到网络组里的各个地址,而不是单个的地址。

  这是一方法类似我们发电子邮件的工作 — 当我们想要把同一内容的电子邮件发送到多个邮件地址时,我们不是在自己的电脑上给每个地址都写一封单独的信。相反,我们会告诉服务器重复的将这信息发送到其它的邮件地址上。

  2、不足之处(The Darker Side)

  当然,有原因致使多播技术通常情况不被使用到:

  一些因特网服务提供者及网络还不支持多播。倒霉。因此,如果你想要在一个游戏中实现多播,你可以增加多播的功能选项。网上很少看见支持多播的游戏,但是它在未来将希望。

  只有在多于三个玩家以上的游戏中使用多播技术才是有价值的。

  多播需求更多甚至连程序员都懒得浏览检验的代码。就像我们所知道的,实际上多播几乎不需要额外的代码。有限公司采用多播技术的高质量数字电视的主意看起来好像延缓了游戏程序员共同开发程序。我怀疑他应学习黑客论理学,源码开放(非营利)组织万岁。

  3、多播工作原理(How Multicasting Works)

  你也许听说过广播。广播把数据发送给在网络中的每个地址。不同广播是,多播仅仅发送给那些明确地登记的而且对数据的兴趣的地址。

  在一个支持多播的IP网络上,这里存在一些象多播组的事物。如果你想要收到多播数据包,你就必须连接入一个多播组。虽然不考虑成员关系而发送数据包至一个多播组是可能的,但是在发送数据之前自身加入一个组是更好办法(由于某些我不敢冒险的原因)。如果你是你所发送多播数据包目的地的组中的成员,同样你也将收到一份你所发数据的拷贝。一个客户不会受到所有从多播组中发来的数据包,除非数据包被发至socket响应的端口。

  因此明智的做法是将所有的游戏客户机连接到多播组,在同一端口上等待循环数据。然后服务器将单个数据包发送到多播组里,当信息包沿着路线被重复某地操作时,将发送到所有的客户机上。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章