【问题标题】:Swift Real-Time Multiplayer Online GameSwift 实时多人在线游戏
【发布时间】:2017-12-09 13:10:59
【问题描述】:

大家!

我正在制作一款实时多人游戏。想象一个有两个玩家的城堡游戏,每个玩家都有一座城堡要保卫。这个想法是每个玩家都有自己的 iPad,并且可以使用自己的设备加强防御、派出士兵和发射弹丸。

显然,这些变化应该同时反映在两个设备上(例如,如果玩家 1 发射弹丸,它的动作应该同时在两个屏幕上显示)。

我的问题是,实现这一目标的最佳方法是什么?假设我精通使用 SpriteKit 在 Swift 中制作单人游戏应用程序,但对多人在线编程一无所知。非常感谢您的宝贵时间!

附:学习服务端 swift 有用吗?

附言过去一周我一直在研究这个主题,但没有找到我需要的东西。任何帮助,将不胜感激!每个在网上提问的人似乎都已经知道某些我不知道的事情。

【问题讨论】:

  • 我不会发布这个问题的答案,因为我还没有真正做过游戏开发,但已经阅读了一些感兴趣的领域,因为尽可能接近实时地保持两个客户端同步是那些难题之一。 developer.valvesoftware.com/wiki/Source_Multiplayer_Networking Valve 分享了他们如何解决问题的一点点。这可能是您想在较低级别的网络中阅读的内容。
  • 谢谢,@marcus.ramsden!我会读那篇文章!

标签: ios swift swift3 real-time multiplayer


【解决方案1】:

在开始制作自己的游戏之前,您需要学习很多关于多人游戏的知识

这个想法是你有一个服务器,托管在你拥有的机器或像 AWS 这样的网络服务上

在该服务器中,您有某种数据库,以及在端口上运行的某种游戏服务器。

有 2 种传输协议,TCP 和 UDP。你可以查一下,但对于你提议的游戏,TCP 似乎是你所需要的

您的 swift 应用程序连接到服务器并发送所有关于玩家行为的数据。服务器发送一个包含游戏当前状态的响应。

服务器模拟所有游戏逻辑。将其视为您实际编写的代码,以使游戏在单人游戏中运行,但在服务器上除外,因此玩家无法破解客户端和作弊

将客户端想象成一个愚蠢的终端,只是将按钮点击发送到服务器并接收有关游戏状态的更新。除了渲染和预测流动性之外,它不应该处理任何游戏逻辑

转到游戏开发堆栈交换以获取更多信息,或者只是在多人视频游戏编程上进行谷歌搜索

Swift 可能不是您服务器的最佳选择。我个人将 Java 中的 Netty 用于我的服务器端游戏代码。

【讨论】:

  • 非常感谢您的深入回答!这些是我自己真的无法理解的事情(我确信很明显我什至不知道要问什么问题)。我有几个后续问题:有一个相对较新的东西叫做服务器端 Swift(我找到了一个免费的教程)。那是我用来编写游戏逻辑并将其放在服务器上供愚蠢的客户端连接的东西吗?我也在 Udemy 上 Rob Percival 的 Web 开发课程。完成它会帮助我了解更多我必须做的事情吗?再次感谢!
  • @retrovius 这是多人网络的好链接:link
  • @retrovius Web 开发和多人游戏编程是两件截然不同的事情。 Web 开发更侧重于制作网站,并将服务器端逻辑和数据库与网页和 html 和 javascript 集成。我认为从这个开始会很好,因为它会帮助你更好地理解网络,但这不是你想要的游戏。 Web 开发使用 asp.net 或 java EE 等高级框架进行编程,并且没有您需要的配置。您需要使用较低级别的网络框架,以便完全控制开发
  • 服务器端 swift 似乎更适合网站而不是游戏
  • 非常感谢这篇文章!我会检查一下并回复你。至于服务器端的 swift 课程,他们似乎用它来制作多平台游戏,而不是网站。使用 swift 构建的游戏,可在 iOS 和 Android 设备上运行。这听起来更接近我应该学习的内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2016-06-24
  • 1970-01-01
相关资源
最近更新 更多