2

简而言之,我正在创建一个 2D mmorpg,与我开始开发的上一个“mmo”不同,我想确保当我想添加新的游戏内功能或修改现有功能时,它能够很好地扩展和工作。

在我最后一次尝试在前几千行代码中进行头像聊天并且只是将基本功能添加到游戏中时,我发现我的代码质量下降了,我添加新功能或修改旧功能的能力也越来越低,因为我添加了更多功能。它变成了一个大混乱,有些是如何运行的,哈哈。

这一次,我真的需要全力以赴,找到一种设计,让我能够创建一个易于添加和删除功能的游戏框架(也就是在我的世界中玩迷你游戏或邮件系统或好友列表或带有互动项目的新公共区域)。

我在想也许基于组件的方法可能是我正在寻找的,但我真的不确定。我已经阅读了有关 mmorpg 设计和 2d 游戏引擎架构的文档,但没有任何内容真正解释了设计游戏框架的方法,该框架基本上可以让我将新功能“插入”到主游戏中。

希望有人明白我的意思,任何帮助表示赞赏。

4

3 回答 3

6

如果您在游戏中搜索基于组件的系统,您会发现一些与您实际要求的完全不同的东西。无论如何,如何最好地做到这一点还远未达成一致。所以我不建议这样做。你真正谈论的并不是游戏特有的东西,更不用说MMO了。它只是编写允许扩展和改进的可维护代码的能力,早在游戏即服务变得如此流行和重要之前,这对商业软件来说就是一个问题。

我想说解决这个问题主要来自两件事。首先,您需要一个好的规范和最终的设计,以尝试理解未来的需求,以便您现在编写的系统在您遇到这种情况时更容易扩展。如果不了解您希望插入的具体内容,任何插件架构都无法正常工作。我并不是说您需要起草一份 100 页的设计文档,但至少您应该集思广益并计划并在那里寻找共同点,因此当您编写功能 A 时,您在编写它时会考虑到未来功能 B。

其次,您需要良好的软件工程原则,这意味着您的代码易于使用和使用。例如。阅读SOLID原则,并花一些时间了解这 5 个想法为何有用。遵循这些规则的代码更容易根据您未来的需求进行扭曲。

还有第三种改进代码的方法,但目前还不能帮助你:经验。你写的越多,你对编码的了解越多,你的代码就会变得更好。有可能(嗯,很可能)使用 MMO,你咬的东西比你能咀嚼的要多得多。即使是合格的专业人员团队在尝试如此规模的项目时也会遇到无法维护的混乱代码,所以你也会这样做也就不足为奇了。但是他们有一堆乱七八糟的代码,他们设法完成了,而且通常这就是它的意义所在,而不是在遇到困难时停止和重新设计。

于 2010-05-04T15:13:48.603 回答
3

是的,我得到了你想要的...

基本上,您将不得不使用经典的 OOP 设计,与商业软件编码人员使用的相同......

您首先必须布置基本引擎,该引擎应该具有“模块加载器”或通用 OOP 样式接口,然后您可以编写要加载的模块(如 .dll)或直接在源代码中编写代码代码,使用提到的 OOP 风格的接口,并且永远不会允许模块相互依赖......

通信,即使在您的代码中,也应该始终使用接口,切勿将“公共”变量放在模块中并在其他地方使用它,否则您将以糟糕而混乱的代码结束。

但是如果你做得好,你可以做一些非常酷的事情(例如,我在开发过程中更改了我的游戏的整个游戏库(访问视频、鼠标、键盘、音频的 API ......)。 .我只需要重新编码一个文件,那是一个在逻辑和游戏库之间建立接口的文件......)

于 2010-05-04T01:51:25.363 回答
1

您正在考虑的正是本文所描述的内容。正如我在博客中提到的那样,这是一种构建游戏的好方法,这篇文章是帮助您入门的绝佳资源。

于 2010-05-07T19:28:43.703 回答