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

常用链接

统计

最新评论

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

    本来想直接进入quake源码分析,但发现如果没有好的写作框架,就凭QUAKE引擎这么大的代码群,真的很难写的,所以决定先搭一个分析框架,定义好各个章节,争取在本周内全部完成该工作,然后从下个礼拜开始就往分析框架里面填写内容了!哈哈!!
     声明:1。本人从未进入程序员行列,只是喜好才写这些文章的,所以在文章写作过程中,有任何技术性的错误,以及没有甬道正确的术语,请见谅(因为很多quake中的术语都是我自己定义的)
                2。在整体的分析过程中,并不一定按照目录所定义好的顺序来写的,想到什么就写什么,这就是博客的精神把!!整个目录框架是分析的思路,可能会改变。
                3。在目录各个章节都是主题的定义,我会在空闲时间慢慢的填进去的,希望能够最终坚持下来形成一整套关于quake系列比较系统的文挡。
                4。 本人的目的是在中国形成一个比较活跃的以quake为基础的社群,希望更多的人了解quake的精神,我想在中国研究quake引擎的人应该很多,高手更是不少,但是在中国的网络上却看不到系统的quake源码分析,不知道为什么??所以由本人,一个不在程序员序列的图形学爱好者来稍微引导一下。由于本人不属于程序员,因此也更本没有所谓违反某个软件公司的知识产权,具有更大的灵活性,希望其他地方的各个quake高手进行完善与修整本人所写的东东。
             5。 本人渴望与从事游戏行业的程序员进行交流。由于本人的生活圈子与程序员根本不搭界,所以没有机会和从事游戏设计的人员进行交流,很郁闷啊。很想了解一下现在的图形学在中国处于什么状态,各个游戏公司底层的引擎是自己开发的还是使用开源的或则是购买世界著名的游戏引擎。希望能有机会与各位交流,本人的qq号码是47178234,本人生活在上海,如果有上海的高手,我们可以多多交流,时而可以face to face的交流拉,以增加对程序员生活的真正了解!! 

目录:

 第一章:QUAKE引擎的整体框架结构:

         1.引擎和API的精确定义

         2.整个quake引擎是基于C/S模式

         3.各个模块间的关系图

         4.客户端如何与服务器端相连接(网络消息的传递与响应以及客户端数据库的产生)

         5.当客户端连接到服务器后如何进入游戏状态的流程(即玩家的产生)

         6.当客户端死亡后重生的流程

         7.简要说明进入游戏状态后一帧运行的流程,包括各个模块函数调用的示意图                  

 第二章:渲染器(refresh模块)

         1. 两个重要的由外部操作的结构(refEntity_trefdef_t)以及这些结构各个值域的详细解释

         2.渲染器模块导出函数(API)的分类以及作用(quake3-1.32b原代码为准)

            A:渲染数据资源管理函数集(12个函数,资源包括BSP世界数据,模型数据,shader数据,skin数据,vis数据以及字体)

            B:设置渲染命令流水线的函数集(4个函数)

            C:场景管理以及渲染的函数集(7个函数)

            D:其他函数集(6个函数)总计29个导出函数

         3Quake3 渲染器的整体结构:

            AQUAKE3渲染器是以OPENGL为基础并支持双处理器并行运算的

            BQUAKE3渲染器在渲染过程中可以分为前端部分和后端部分(图解),他们是如何协调起来的。

            C: QUAKE3是如何支持双处理器并行进行渲染

         4.对quake3模型系统的扩展(使用MD5模型格式以及skm模型格式)

            A: 为什么不用MD3模型

            BMD5&SKM骨骼模型的格式分析

            C:骨骼动画的原理以及应用

(1)       骨骼动画的分类(boneoffset类型和vertexoffset类型的详解以及各自的优缺点)

(2)       详细分析骨骼动画数学原理

(3)       在定义骨骼动画的时候需要详细考虑的一些问题以及目的,不同的目的会有不同的编码方式

(4)       重点分析SKM骨骼动画在warsow游戏中的运用以及编码方式

(5)       骨骼动画的CPU实现和GPU实现的优缺点分析以及如何平衡各自的优缺点

(6)       附我的计划:市面上公开格式的骨骼动画事实上在渲染原理上基本差别不是很大,因此在学习骨骼动画的过程中,感受很多啊,现在本人正在进行系统设计,根据骨骼动画的原理,参考相关资料,提炼出一条骨骼动画统一渲染流水线。完成后公开源代码。系统设计的要求是

(A)       可以直接并入quake3引擎的多核渲染流水线

(B)       使用CPU实现的,以SIMD为基础数学运算(因为CPU实现进行转化后可以直接获得顶点数据再进行阴影系统的绘制,而GPU数据的取回比较麻烦,再说本人也没有支持D3D10版本的GPU,无法使用新增加的stream output statge以及几何shader

(C)       能够在运行过程中人工控制各个骨头的运动

(D)       使用统一的骨骼动画渲染流水线,使模型与数据相分离,并且将阴影系统并入该渲染流水线。

 

         5BSP文件格式以及QUAKE3 SHADER文件格式


今天就写到目录的前两章,计划在本周内将所有章节全部定义出来,然后再填写各个小节的内容
                                                                                
           

 

posted on 2007-11-20 16:28 落魄江湖 阅读(5570) 评论(8)  编辑 收藏 引用

评论

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-20 17:43 w2001

8错,支持!  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-20 19:01 lovedday

厉害,外行竟然可以研究到这种程度,佩服啊!
我坐好板凳听课了。 :)  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-20 19:02 lovedday

中国现阶段缺乏的就是对大型游戏的源码剖析这样的文章,我想现在不少人手里都有一些大型游戏的源码,但是要看懂这么庞大的代码不是一件容易的事,支持博主的做法!  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二)[未登录] 2007-11-20 19:21 步磊峰

@lovedday
蛮喜欢你贴出来的关于rpg的相关内容,非常有用的东西,对游戏逻辑端的概括比较精练,事实上quake的cgame与game模块很多的东西与你贴出的物件系统和角色控制所述有相当多的相似性,事实上quake引擎修改一下很容易用来开发rpg类型游戏的客户端的游戏逻辑和服务器端的游戏逻辑,网络信息也可以重新定义,只是不知道如何编写服务器端程序,需要支持众多人数同时在线,消息及时的更新  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-20 21:48 tiro

这方面的高手肯定有,不过他们可能开发任务都非常的紧,所以根本拿不出时间和精力来总结成文章。不过博主一番努力说不定会把一部分人吸引过来哈。希望博主能把这个系列的文章坚持写完哈,这对于后学者可是功德无量啊。  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-21 09:04 金庆

看了“Master of DOOM”中译本的前两章,觉得很有意思。如果有时间,我也要研究一下3D游戏引区擎。学C的看操作系统源码,学C++的看3D游戏引擎,因为这分别是两种语言的主要应用领域。

对于上海程序员的交流,我也很期待。(我也在上海。)不过我感觉上海程序员不太愿意相互交流,可能是太忙了。北京程序员的组织与活动好象是最多的,好羡慕。想交流的程序员请加入“上海程序员”Google讨论组,期待出现几个组织能力强点的人,凝聚上海程序员。欢迎加入:上海程序员 ( http://groups.google.com/group/programmers_sh )  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-22 10:52 victorzhong

支持!  回复  更多评论   

# re: QUAKE系列引擎以及基于QUAKE扩展引擎的源代码全面分析(二) 2007-11-22 16:01 daids

正好在学习游戏引擎源码,向博主学习啊  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理