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