学习如何设计可扩展的“基于组件”的游戏“框架”的任何好的教程或资源?

时间:2010-05-02 04:23:01

标签: game-engine

简而言之,我正在创建一个2D mmorpg,而不像我最后一个“mmo”我开始开发我想确保当我想添加新的游戏内功能或修改现有功能时,这个功能可以很好地扩展并且运行良好

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

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

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

希望有人理解我的意思,感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

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

我认为解决这个问题主要来自两件事。首先,您需要一个良好的规范和最终设计,试图了解未来的需求,以便您现在编写的系统更容易扩展。如果不知道你希望插入什么,没有任何插件架构可以很好地工作。我不是说你需要编写一个100页的设计文档,但至少你应该集思广益你的想法并计划并在那里寻找共同点,这样当你编写功能A时,你就会用未来的功能B来编写它。

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

第三种方法可以改进您的代码,但这对您来说还没有帮助:经验。您编写的代码越多,编码越多,编码越多。有可能(很可能),使用MMO,你咬的东西比你可以咀嚼的多得多。即使是合格的专业团队也会在尝试那么大的项目时遇到难以维护的代码混乱,所以你也会毫不奇怪。但是他们有很多代码可以让他们看到完成,而且通常就是这样,而不是每当事情变得艰难时停止和重新设计。

答案 1 :(得分:3)

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

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

首先必须布置基本引擎,该引擎应该有一个“模块加载器”或一个通用的OOP风格接口,然后你可以编写要加载的模块(比如,作为.dlls)或直接编码在您的源代码中,使用提到的OOP风格的界面,而且永远不要让模块相互依赖......

即使在代码内部,通信也应该始终使用接口,永远不要在模块中放置“公共”变量并在其他地方使用它,否则你将以一个糟糕而混乱的代码结束。

但是如果你做得恰到好处,你可以做一些非常酷的东西(例如,我改变了我的游戏的整个游戏库(访问视频,鼠标,键盘,音频...的API),在中间开发...我只需要重新编码一个文件,即创建逻辑和游戏库之间接口的文件......)

答案 2 :(得分:1)

您正在考虑的是this文章所描述的内容。这是构建游戏as I have blogged about的一种可爱方式,而且这篇文章是您开始游戏的绝佳资源。