总体而言 , quake 系列引擎的整体架构非常漂亮 , 是学习的好材料 。
并且从 quake1 到 quake3, 整体逻辑端代码变化不大 , 真正比较有突破性的是渲染引擎。
. 本人在学习 quake 引擎过程中常常敬佩卡马克的想象力 ,api 函数是如此之简洁 , 整体框架是如此之完美 , 面向对象的 c 写得如此之漂亮 。
通过 quake 引擎 , 可以学到游戏设计的各个概念以及各个模块 , 外部工具是如何完美的结合起来 , 这一点是非常非常重要的 .
QUAKE1 及其基于 QUAKE1 框架的扩展引擎 DARKPLACES
QUAKE2 及其基于 QUAKE2 框架的扩展引擎 QFUSION
QUAKE3 及其基于 QUAKE3 框架的扩展引擎 XREAL/EVQ3
这些扩展引擎都是非常著名的开源项目,资料比较多,而且都有相应使用这些扩展引擎作成的游戏,可以观看到游戏实时效果。
例如
基于 DARKPLACES 引擎的游戏 —NEXUIZ ,渲染效果极其惊人啊!!!
基于 QFUSION 引擎的游戏 -----WARSOW
基于 XREAL/EVQ3 引擎的游戏 -----REVOLUTION
A:DARKPLACES 使用 QUAKE1 的框架结构,重写了全部的渲染模块,网络协议以及传输模块 , 支持 DOOM3 类型的光影特效,根据我的感觉,应该是渲染效果最好的开源的项目,使用到了相当多的特效( DOOM3 光影特效 = Stencil Shadow Volume, Per Pixel Lighting, NormalizationCubeMap, 2D+1D Attenuation Texturing, and Light Projection Filtering ). 该 引擎可以使用著名的QUAKEC进行服务器端游戏逻辑的开发(相当于QUAKE3中的GAME.DLL模块),同时相对于QUAKE1的QUAKEC内置 函数,该引擎扩展了相当多的服务器端QUAKEC函数.更漂亮的是他同时扩展了客户端逻辑部分的函数,通过这些函数可以编写客户端游戏逻辑(相当于 QUAKE3中的CGAME.DLL模块,但不完全等同).事实上本人是非常喜欢QUAKEC的编码方式,简练而强大.
B:QFUSION 引擎最大的特点是他的逻辑结构非常清晰 , 他所扩展的骨骼动画系统是其最大的特点 . 本人的感觉是极其漂亮 ( 当然每个人的观点不同 , 这只是本人的观点罢了 ). 他使用了 skm 骨骼动画文件格式 . 正是通过该引擎的骨骼动画系统 , 让本人完全掌握整个骨骼动画的精髓 , 真是收益非浅啊 !!! 而且整个游戏逻辑端非常清晰 , 在代码分析时候主要以该引擎作为原代码基础 .
C:xreal/evq3 整体框架与 quake3 变化不大 , 但是最重要的一点是 , 本人最喜欢的渲染器结构是 quake3 的 render.dll, 简直是太完美了 ,quake3 的渲染器可以使用双处理器 , 为了支持双处理器的运作 ,quake3 自己实现了一条渲染命令流水线 , 及其完美 , 收益非浅啊 !!!! 又要说一句非常重要的话了 , 伟大的慷慨的卡马克 . 而引 xreal/evq3 擎完美的保留了 quake3 的渲染器框架结构同时扩展了较多的功能 , 光影特效足够强大 . 增加了 md5 骨骼模型的渲染
http://ioquake3.org
http://www.openarena.ws
http://xreal-project.net/
http://www.moddb.com/engines/qfusion
http://icculus.org/twilight/darkplaces/