3D游戏之神-——约翰.卡马克

常用链接

统计

最新评论

QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一)

QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析()

前言:

一:研究quake系列引擎断断续续也已经两年有余了,一直想写点什么,但是真的到了那一步,又发现其实很难下笔,原因有三:1 文笔不流畅,特别是技术性技巧的缺乏,概念难以精确定义,无法想内心的真实表达转换为文字,郁闷啊!!2 QUAKE系列引擎的庞大结构以及各个模块的协作关系,真的想写的时候不知道如何组织,导致思路极其紊乱。3 对于QUAKE系列的深奥部分,列如bsp的编译程序部分的源码还未完全理解,这是整个QUAKE引擎的核心部分,这是QUAKE系列引擎最核心的部分,可以说,整个QUAKE系列引擎就是围绕这张图推进的。虽然BSP的生成确实是一个非常非常难的难点,好在使用起BSP来相对比较简单,即使不知道如何生成,但至少可以灵活使用,伟大的慷慨的卡马克。

   二:QUAKE系列的引擎源码分析涉及到的引擎包括如下几个:

           1  QUAKE1 及其基于   QUAKE1框架的扩展引擎DARKPLACES

           2  QUAKE2 及其基于 QUAKE2 框架的扩展引擎 QFUSION

           3  QUAKE3及其基于 QUAKE3 框架的扩展引擎  XREAL/EVQ3 

   三:为什么要使用上述的扩展引擎?

1         QUAKE系列引擎毕竟时间久远,现代硬件技术的发展以及渲染方面的新概念,新技术的出现,一些扩展引擎更加贴近当今世界技术发展的潮流。例如这三个引擎都增加了GLSL进行相应的扩展。

2         这些扩展引擎都是非常著名的开源项目,资料比较多,而且都有相应使用这些扩展引擎作成的游戏,可以观看到游戏实时效果。

例如基于DARKPLACES引擎的游戏—NEXUIZ,渲染效果极其惊人啊!!!

    基于 QFUSION 引擎的游戏-----WARSOW

基于 XREAL/EVQ3引擎的游戏-----REVOLUTION

3         对上述三个扩展引擎的感受

A:DARKPLACES使用QUAKE1的框架结构,重写了全部的渲染模块,网络协议以及传输模块,支持DOOM3类型的光影特效,根据我的感觉,应该是渲染效果最好的开源的项目,使用到了相当多的特效(DOOM3光影特效=Stencil Shadow Volume, Per Pixel Lighting, NormalizationCubeMap, 2D+1D Attenuation Texturing, and Light Projection Filtering.该引擎可以使用著名的QUAKEC进行服务器端游戏逻辑的开发(相当于QUAKE3中的GAME.DLL模块),同时相对于QUAKE1QUAKEC内置函数,该引擎扩展了相当多的服务器端QUAKEC函数.更漂亮的是他同时扩展了客户端逻辑部分的函数,通过这些函数可以编写客户端游戏逻辑(相当于QUAKE3中的CGAME.DLL模块,但不完全等同).事实上本人是非常喜欢QUAKEC的编码方式,简练而强大.

B:QFUSION引擎最大的特点是他的逻辑结构非常清晰,他所扩展的骨骼动画系统是其最大的特点.本人的感觉是极其漂亮(当然每个人的观点不同,这只是本人的观点罢了).他使用了skm骨骼动画文件格式.正是通过该引擎的骨骼动画系统,让本人完全掌握整个骨骼动画的精髓,真是收益非浅啊!!!而且整个游戏逻辑端非常清晰,在代码分析时候主要以该引擎作为原代码基础.

C:xreal/evq3整体框架与quake3变化不大,但是最重要的一点是,本人最喜欢的渲染器结构是quake3render.dll,简直是太完美了,quake3的渲染器可以使用双处理器,为了支持双处理器的运作,quake3自己实现了一条渲染命令流水线,及其完美,收益非浅啊!!!!又要说一句非常重要的话了,伟大的慷慨的卡马克.而引xreal/evq3擎完美的保留了quake3的渲染器框架结构同时扩展了较多的功能,光影特效足够强大.增加了md5骨骼模型的渲染.在以后渲染器代码分析时候,主要以该扩展引擎为基础结合darkplaces引擎的相关技术.

 

 

        

      总体而言, quake系列引擎的整体架构非常漂亮,是学习的好材料,并且从quake1quake3,整体逻辑端代码变化不大, 真正比较有突破性的是渲染引擎.本人在学习quake引擎过程中常常敬佩卡马克的想象力,api函数是如此之简洁,整体框架是如此之完美,面向对象的c写得如此之漂亮,通过quake引擎,可以学到游戏设计的各个概念以及各个模块,外部工具是如何完美的结合起来,这一点是非常非常重要的.

     

     

    

 

   

     

posted on 2007-11-19 00:45 落魄江湖 阅读(7216) 评论(11)  编辑 收藏 引用

评论

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 08:49 kong

期待下期。  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 10:18 mm

支持。期待下期。

建议你能做下面这几个东西的详细说明:
quakec
skm骨骼动画
多核渲染命令流水线  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 13:12 力为

www.caxsoft.com已经做好转载的准备~  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 13:46 tiro

建议先列出一个总体架构框架,然后分模块分析。  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 14:51 Corner Zhang

顶!
很好的开篇啊,不过最好能有如何mod quake的文章 :)  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-19 14:55 victorzhong

期待下期  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一)[未登录] 2007-11-19 17:34 flyman

写的非常的漂亮,想在没有时间看QUAKE,所以只有在这享受了,严重支持。  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2007-11-22 18:52 风在奔跑

写得不错,我也暂时没时间看quake引擎源码,看来你的文章还是有收获。支持  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2008-01-12 14:04 零度失真

收益了。  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2008-03-12 14:43 肖建

楼主写得太好了,希望能有更多的好文章出炉  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(一) 2008-09-19 09:58 arun

正在学习中。。感谢lz的尽心。。  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理