【问题标题】:Windows Phone XNA Shooter Game => UDP, TCP or Mixed?Windows Phone XNA 射击游戏 => UDP、TCP 还是混合的?
【发布时间】:2012-07-11 21:49:42
【问题描述】:

几个月前,我在 Windows Phone 上开发了一款实时快节奏射击游戏,然后我也将游戏移植到了 Windows。

现在我正在考虑让游戏支持多人游戏,但我有几个问题,因为我以前从未做过:

考虑到它是一个射击游戏,所以有很多子弹、各种类型的游戏对象、玩家/小怪的移动等......:

  • 在这种情况下使用异步套接字是否足够快?(WP 播放器与 Windows 播放器或 WP 与 WP 或 Windows 与 Windows)
    • 注意:玩家将通过集中式套接字服务器进行通信
  • Windows Phone Sockets 的性能够好吗?(3G/4G、Wifi)
  • 我应该使用 TCP 还是 UDP 或两者都使用(例如,UDP 用于对象/动作,TCP 用于聊天)
  • 您将如何继续发送数据,您将发送什么样的数据以及发送频率如何?

提前非常感谢! :)

【问题讨论】:

    标签: c# windows-phone-7 xna windows-phone-7.1


    【解决方案1】:

    通常射击游戏使用 UDP 发送带有射击的数据包,并且不会考虑 100% 的时间发送它们,因为有这么多数据包,即使有一些在电缆中丢失也没关系。但是为什么不先尝试TCP,然后如果出现问题再切换到UDP呢?

    【讨论】:

      【解决方案2】:

      一般建议是发送最少量的信息,这些信息通常是用户输入而不是世界状态。

      例如在游戏进行到 142 秒时,用户 A 按下了开火按钮。在 145 秒时,用户 B 开始向左移动。

      (根据用户输入,每个客户端都可以重新创建世界状态...通常。如果您有随机元素,那么这是在您的设计中捕捉和重新考虑它们的好方法。)

      至于协议选择,我建议从 HTTP 开始,然后“向下”工作。这提供了最强大的“内置”功能(例如 NAT 遍历和代理),并有望尽早突出您可能遇到的任何网络逻辑问题(例如您的预测算法是否合理地接近玩家的游戏风格,以便在重新同步时'ing 确实发生在客户端上,“快速返回”并不烦人)。

      当/如果您确定 HTTP 太重/太慢,那么您可以在知道需要实现什么的情况下将其换成 UDP 之类的东西。

      【讨论】:

      • 感谢您的回复。你对如何处理世界对象有什么建议吗?例如:小怪移动,小怪产生,小怪死亡,子弹旅行?那里有很多信息,我认为绝对需要同步!
      • 一般来说,我建议你真的想达到一个点,即任何 NPC(和环境)的移动都是完全确定的,因此每个客户端都可以推导出来,而无需讨论它。例如如果您知道玩家角色何时何地击中“火”,那么每个客户端都应该能够计算子弹的轨迹,而无需传输或接收它。
      【解决方案3】:

      我会乞求、借用和窃取其他游戏的好点子。 id Software's Quake 3 has its network source open and many folks have dissected it。当今大多数 FPS 游戏都使用 UDP 来确保及时交付时间敏感数据。丢弃的旧数据不需要新数据包。

      Quake 3 使用一种策略,即最后一个已知的良好快照 ID 与来自客户端的每个数据包一起发送,而服务器在内部为每个快照发送一个 ID。此时,当客户端丢弃数据时,它会继续在其一侧发送最后一个已知的正确 ID,并且服务器会从其快照缓冲区发送一个差异。

      如果您使用 TCP,则必须等待每个客户端确认旧数据,这会增加人为延迟,这对于第一人称射击游戏来说是无法忍受的。

      【讨论】:

        【解决方案4】:

        混合:对于身份验证、登录或更改服务器/客户端信息,使用 TCP,但当大多数数据通过电缆传输时使用 UDP。由于面向连接的操作,TCP 会产生更高的延迟。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          • 1970-01-01
          • 1970-01-01
          • 2012-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多