3dgameengine:3D Engine 的设计架构



    咱们谈谈你如何撰写份提供优雅性能3D引擎引擎需要提供包括:曲面(curved surfaces)、动态光线(dynamic lighting)、体雾(volumetric fog)、镜面(mirrors)、入口(portals)、天空体(skyboxes)、节点阴影(vertex shaders)、粒子系统(particle systems)、静态网格模型( mesh models)、网格模型动画(animated mesh models)假如你已经知道如何以上所述所有功能顺利工作你也许便能将那些东东起置入到个引擎当中 
    等等!在你开始撰写代码前你必须先构思下如何去架构你引擎多数来讲定是迫切地渴望去制作个游戏但如果你立即投入便开始为你引擎撰写代码后定会觉得非常难受开发后期你可能会为置入新特效和控制而不得不多次重写大量局部代码甚至以失败而放弃告终点时间好好地为你引擎深谋远虑这将会为你节省大量时间也少点头痛定不会急切地去架构个巨型工程;或许你也会在引擎未完成时而干脆放弃它然后去干什么事儿好了当你掌握学习你所需知识方式的前也许你还不能完成那些事儿将设计真正地完成确实是件美事为的你会感觉更好你将为的而耀眼!
    让我们分析下具备完整功能3D游戏引擎需要哪些基本部件首先这为具有相应3D经验但且还需些指引开发者提供了些信息这是些并不难且能快速掌握但是你必须应用内容条目为将你工作更好地进行下去这里将对有关“把多大工作量”和“多少部分”置入个游戏引擎给出个总概我把这些成分称为 系统()、控制台(Console)、支持(Support)渲染/引擎 内核(Renderer/Engine Core)、游戏介质层(Game Interface)、以及工具/数据(Tools/Data)
 
Tools/Data (工具/数据)
    在开发过程中你总是需要些数据但不幸是这并不象写文本文件或是定义个立方体那么简单至少你得需要3d模型编辑器关卡编辑器以及图形你可以通过购买也可以在网上找些免费满足你开发要求不幸是你可能还需要些更多工具可你却根本无法获得(还不存在呢)这时你只得自己动手去写最终你很可能要自行设计编写个关卡编辑器你更本不可能获得你所需你可能也会编写些代码来为大量文件打个包整天面对应付成百上千个文件倒是非常痛苦你还必须写些转换器或是插件将3d模型编辑器模型格式转换成你自己格式你也需要些加工游戏数据工具譬如可见度估算或是光线贴图
    个基本准则是你可能要为设计工具而置入比游戏本身等量甚至更多代码开始你总能找到现成格式和工具但是经过段时间以后你就能认识到你需要你引擎有很大特性然后你就会放弃以前撰写方式
    也许目前非常流行利用第3方工具辅助开发所以你必须时刻注意你设计旦当你将你引擎发布为opensouce或是允许修改那也许在某天中会有某些人来应用你开发成果他们将其扩展或者做某些修改
或许你也应该花大量时间去设计美术关卡音效音乐和实体模型这就和你设计撰写游戏工具以及引擎
 
 (系统)
系统(system)是引擎和机器本身做通信交互部件个优秀引擎在待平台移植时系统则是唯需要做主要更改(扩加代码)地方我们把个系统分为若干个子系统其中包括:图形(Graphics)、输入(Input)、声音(Sound)、记时器(Timer)、配置(Configuration)主系统负责化、更新、以及关闭所有子系统 [Page]
图形子系统(Graphics Sub-)在游戏里表现得非常直观如果想在屏幕上画点什么它(图形子系统)便干这事儿
Tags:  软件架构设计 架构设计 opengl3dengine 3dgameengine

延伸阅读

最新评论

发表评论