本来想直接进入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_t和refdef_t)以及这些结构各个值域的详细解释
2.渲染器模块导出函数(API)的分类以及作用(以quake3-1.32b原代码为准)
A:渲染数据资源管理函数集(12个函数,资源包括BSP世界数据,模型数据,shader数据,skin数据,vis数据以及字体)
B:设置渲染命令流水线的函数集(4个函数)
C:场景管理以及渲染的函数集(7个函数)
D:其他函数集(6个函数)总计29个导出函数
3.Quake3 渲染器的整体结构:
A:QUAKE3渲染器是以OPENGL为基础并支持双处理器并行运算的
B:QUAKE3渲染器在渲染过程中可以分为前端部分和后端部分(图解),他们是如何协调起来的。
C: QUAKE3是如何支持双处理器并行进行渲染
4.对quake3模型系统的扩展(使用MD5模型格式以及skm模型格式)
A: 为什么不用MD3模型
B:MD5&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) 使用统一的骨骼动画渲染流水线,使模型与数据相分离,并且将阴影系统并入该渲染流水线。
5.BSP文件格式以及QUAKE3 SHADER文件格式
今天就写到目录的前两章,计划在本周内将所有章节全部定义出来,然后再填写各个小节的内容