概括:
我使用 Box2D 作为物理引擎的 50% 完成的 2D 横向卷轴应该在最终版本中支持多人游戏。然而,目前的代码只是一个单人游戏。
- 我现在该怎么办?
- 更重要的是,我应该如何实现多人游戏并将其与单人游戏结合起来?
- 将单人模式与多人模式分开编码是不是一个坏主意(就像 Notch 用 Minecraft 做的那样)?
单人游戏的性能应该尽可能好(使用环回服务器模拟物理来实现单人游戏模式将是一个问题)
完整背景/问题:
我正在使用 C++ 开发一个相对较大的 2D 游戏项目,其中物理是它的核心元素。(我为此使用 Box2D)
完成的游戏应该有完整的多人游戏支持,但是我犯了一个错误,我没有正确规划网络部分,直到现在基本上都在做单人游戏。
我认为可以以相对简单明了的方式将多人支持添加到几乎完成的单人游戏中,但显然,从我所读到的内容来看这是错误的。
我什至读到多人游戏应该从一开始就被编程,单人游戏模式实际上只包括托管一个不可见的本地服务器并通过环回连接到它。(我发现大多数 FPS 游戏引擎都是这样做的,例如 Source)
所以我在这里,完成了一半的 2D 横向卷轴游戏,我真的不知道如何继续。
简单地继续在单人/客户端上工作现在对我来说似乎毫无用处,因为我必须在以后重新编码和重构。
首先,向任何可能发现自己处于这种情况的人提出一个一般性问题:
- 我应该如何进行?
然后,更具体的一个 - 我一直在尝试找出如何处理我的游戏的网络部分:
- 单人游戏的隐形/环回服务器
这样做的好处是单人模式和多人模式之间基本上没有区别。不需要太多额外的代码。
一个很大的缺点:单人游戏中的性能和其他限制。将运行两个物理模拟。一个用于客户端,一个用于环回服务器。
即使您通过为来自回送服务器的数据提供直接路径来解决问题,例如通过线程的直接通信,单人游戏也会受到限制。
这是一个问题,因为应该允许人们同时玩大量的物体。
- 分离的单人/多人模式
单人模式不会涉及服务器。
我不确定这将如何工作。但至少我认为会有很多额外的工作,因为所有的单人游戏功能都必须重新实现或绑定到多人游戏模式。
- 多人模式作为单人游戏的模块
这只是我的一个快速想法。多人游戏可以由单人游戏组成,附加一个加载并连接到服务器的网络模块,该服务器发送和接收数据并更新单人游戏世界。
在回顾中,我很遗憾没有早点计划多人模式。我真的被困在这一点上,我希望这里有人能够帮助我!