可能的重复:
在哪里可以找到好的(组织良好的)游戏代码示例?
我已经编写了一些C ++游戏,现在正在构建自己的游戏引擎和编辑器。
我对此设计有一些疑问,希望能找到一些很好的例子。
您认为最好的设计是什么?
必须是面向对象的。编程语言并不重要,但我更喜欢按以下顺序进行:C ++,C#,Java或其他类似语言。
编辑:为了澄清更多,我对游戏特定的代码不感兴趣。我想要通用游戏引擎。
编辑:本文解释了什么是游戏引擎:维基百科上的游戏引擎,这是已知游戏引擎的列表:维基百科上的游戏引擎的列表
可能的重复:
在哪里可以找到好的(组织良好的)游戏代码示例?
我已经编写了一些C ++游戏,现在正在构建自己的游戏引擎和编辑器。
我对此设计有一些疑问,希望能找到一些很好的例子。
您认为最好的设计是什么?
必须是面向对象的。编程语言并不重要,但我更喜欢按以下顺序进行:C ++,C#,Java或其他类似语言。
编辑:为了澄清更多,我对游戏特定的代码不感兴趣。我想要通用游戏引擎。
编辑:本文解释了什么是游戏引擎:维基百科上的游戏引擎,这是已知游戏引擎的列表:维基百科上的游戏引擎的列表
Answers:
我认为构建游戏引擎的最佳方法是从您已经非常了解的内容开始,并添加乏味或重复的功能。
例如,我使用Python / pygame(这是一个SDL包装器)做了很多事情,我相当喜欢这个系统,但是有三件事困扰着我:
围绕这些功能创建面向对象的包装器相对容易。看一下第10章和此处提供的Game Engine文档:http : //aharrisbooks.net/pythonGame/
(这是作为一本书的一部分编写的,但是即使您不想要这本书,也欢迎您使用游戏引擎。)
第10章介绍了构建基本2D游戏引擎的动机和技术。在构建自己的产品时,您可能会喜欢它。实际的语言并不那么重要(当然,您需要使用OOP语言来支持OOP。)如果您已经在C ++中使用SDL,则可能首先要使引擎适应C ++ / SDL。
久负盛名的Quake(ID技术)引擎设计经受了时间的考验,可能是有史以来最成功的游戏引擎设计。自渲染器以来,除渲染器外的所有内容在90年代中期以来一直没有变化,并且仍在ETQW等现代游戏中使用。
GPL下提供了该引擎的四个迭代的完整源代码(第1至第3次地震,加上Wolf ET)。可能有一百多个积极开发的,由社区支持的,基于Quake的游戏引擎,这些引擎在现代时代一直很重要。尤其值得一看的是XreaL出色的渲染器和ioQuake3忠实地维护了针对现代硬件优化的Quake 3。同样,对于引擎的最新“官方” ID版本,也可以使用游戏逻辑(而不是整个引擎)。
即使您最终不使用此游戏引擎,也值得研究其深思熟虑的客户端-服务器分离架构以及将游戏逻辑与低级细节隔离开来。
Ogre3D渲染库非常接近引擎代码,从我听说的所有帐户来看,它的设计都非常好,非常面向对象。
在谈论游戏引擎时,我想您正在考虑的不是渲染引擎,声音引擎,物理引擎,输入引擎等。
因此,您可能正在考虑游戏体系结构,AI或设计模式/系统等,它们用于将软件结构化以管理数据和其他组件,以创建某种场景/场景/幻觉,从而产生可管理的规则集,调整以创建实际的“视频游戏”。
这是视频游戏的真正顶层,我什至尝试学习一些有关它的知识,它庞大,复杂,并且在所有其他主题上需要大量知识。想象一下,您想从零开始重建替代现实,随时跟踪并计算每个事件,并在任何时刻从这些事件中重新生成准确的数据:对于每种游戏,都有某种子集游戏引擎,而我不会认为实际上有可能制造出一种数学上足够快的通用引擎。即使对于您只控制一个角色的游戏,仍有很多事情可能会发生变化,并且仍然需要游戏改变整个架构。
娱乐业不像其他计算机科学领域那样受到开放源代码的良好服务,只是因为娱乐具有不同类型的许可证类型,其中涉及艺术许可证:游戏产品仅由客户支付,而AFAIK仅由客户支付似乎没有足够适合您的引擎:Hord3d,NeoAxis,blendelf,Panda3D。但是我无法保证您会像Unity,Torque,C4等工具一样易于使用。请记住,在图形渲染器中,游戏引擎是您在游戏制作中会找到的最困难的软件类型。