作者:Luke Hodorowicz 中文译者:antking (注:在文章的翻译过程中,感谢shenguhan对文章的修改) 简介 我们通常说一个优秀的游戏引擎必须支持大量完善的功能。这些功能包括:曲线面、动态光源、体积雾、镜面反射、框架、天空盒、顶点阴影、粒子系统、静态和动态网格模型。如果你已经知道他们是如何工作的,你也许就能很好的把他们加入你的游戏引擎中。 不过别急,在你开始编写你的引擎之前,请构思一下你的引擎框架。如果你急于立即编写你的引擎,那么很遗憾,你将不得不为新加入的特效和功能重写大量代码。所以在编写引擎之前,我们先要认真的思考这个问题。 让我们来分析一下一个完善的3D 游戏引擎是由哪些部分组成的。注意,我不能肯定这样分类是最好的,但至少它在我的游戏中工作得很好。好了,废话少说,游戏引擎的基本组成分为:系统、控制台、支持、着色器/引擎核心、游戏界面,和工具/数据。
在游戏开发过程中,你肯定会用到一些数据,然而很不幸,他们不象写一段文本或定义一个立方体那样简单,你至少需要3D模型编辑器,关卡编辑器以及图形软件。你能买到或者在网上找到一些免费的软件来满足你的要求。但不幸的是,你可能需要更多的工具软件,而这些软件现在没有,那么你就需要自己编写他们。你可能需要编写出一个关卡编辑器或者你需要的其他东西因为你无法从别的途径终获得。你也可能需要写一段代码把大量的文件打包,当然,整天对着这么多文件是非常痛苦的。你还可能需要写一个转换器,能把3D模式编辑器格式转换成你需要的格式。你可能需要用工具处理游戏数据,如可能的计算和光照图(lightmaps).最重要的是你可能为工具软件所编写的代码跟游戏代码一样长或更长。开始你能找到你要的格式和工具,但你迟早会发现他们不能适用于你的引擎,最终你将放弃他们。 在你编码时,要小心这些工具是否适用于你的引擎。你要时刻注意,修改和扩展你的工具,特别是当你将引擎发布为开源的和允许修改的。 你也许要花同样多的时间去制作图形,关卡,声音,音乐和模型。 系统 系统是引擎和计算机进行交流的一部分.判断一个引擎的好坏是看他的系统是否能很好的移植到不同的平台.系统包括几个子系统,他们是图象,输入,声音,时间器,结构.系统能很好地安装,更新,卸载他全部的子系统. 控制 我知道每个人喜欢跟着流行走,喜欢Quake的控制方式.但这确实是个好建议.你能在你的游戏和你的引擎中改变设置通过控制变量和函数,而不用重新开始他.对于在开发中输出调试信息是最好的.通常你将需要测试一些变量并输出,有时控制是很快,有时又比运行调试器好.有时你的引擎运行时,如果有错误,你不得不退出程序,你应该好好的对待这些错误.如果你不想你的用户看见或者使用这个控制系统,最好的办法是使他失效,但这肯定是不明智的. 支持 在引擎中,这个系统是用于支持其他的系统.这包括所有的数学程序(矢量,面,矩阵等等),内存管理器,文件管理器,包容器(如果你对自己的没信心,用STL).这个东西很基本,你能很好的用于其他的项目. 渲染器/引擎核心 我敢打赌没有一个人不喜欢3D图形渲染.因为有如此多的方法渲染3D世界. 游戏界面 3D游戏引擎最为重要的引擎,但他不是游戏。实际的游戏中,没有任何部分进入游戏引擎。在游戏和引擎之间有一个层,这个层是为了清洁代码并是游戏容易上手。他是一段特别的代码,他不仅使游戏引擎非常清楚,而且使用语言表诉游戏逻辑更容易,或把游戏代码归类。如果你不重视游戏中的游戏逻辑,后面就会有许多的问题和修改。 也许你在引擎和游戏提供者之间感到疑惑。答案是控制。动态的道具作为游戏引擎的一个部分,游戏/引擎层提供修改这些道具的界面。这一方面的事包括摄象机,模型道具,灯光,粒子系统物理学,播放声音,播放音乐,使用输入,更改关卡,冲突检测,回应,用于显示,瓷砖屏幕的2D图象的布局,如果你想你的游戏能使用他,就必须在引擎中加入他。 游戏 我不能告诉你怎样写游戏。值得注意的是在引擎中加入一个好的界面将为你的工作达到事半功倍的效果。 |
-
2006-09-15
你可能喜欢
全部评论4
有点味道
学习,学习。
好东西,学习了