Quake2源码分析(1)
简介:
Quake2游戏是著名的Id Software公司的第⼀⼈称视⾓游戏,在⽹上的源代码是开放的(也有Quake3),这些代码使⽤的某些技术也许已经过时(如那时的GPU编程技术还不完备),但出⾃著名的FPS游戏之⽗John Carmark的Quake游戏源代码使我们今天在研究游戏框架,游戏引擎设计,C/S通信等⽅⾯都有着难得的借鉴和学习价值,更重要的是,这是⼀款商业程序的开源,在此我们也能领悟到John Carmark的⾼超的编程技术.以下就是我学习Quake2源码的⼀些⼼得.闲话说到这,Let's Begin!
研究⽬标:
Quake2⼯程分为6个部分:ctf(组队作战),game(游戏逻辑部分),quake2(游戏引擎部分),Radar(雷达系统),ref_gl(OpenGL图形⽀
持),ref_soft(软件图形⽀持).我们⾸先需要着重分析的是游戏引擎部分,也就是quake2⼯程.
打开quake2⼯程,我们先看它的头⽂件:
cdaudio: CD⾳频⽀持
client: 定义了客户端状态和桢数等⼀些重要的数据结构,全局变量还有客户端⼀些重要的实现引擎功能的函数,我们在后⾯会详细分析client.
conproc: 实现⼀个类似控制台的功能
console: 实现控制台的输⼊
game: 定义了game模块的输⼊和输出函数,也就是定义了quake2引擎和上层的游戏逻辑部分如何交互
手机游戏源码论坛init: 实现⼀个简单的dll加载回调函数
input: 输⼊⼦系统,和引擎交互(⿏标,键盘和游戏杆)
keys: 键盘⽀持
q_shared: 共享的数学库,数据结构定义和枚举变量
qcommon: 相当于引擎中的⼀个通⽤库,它实现了引擎其他部分需要的⼀些通⽤功能,我们将在后⾯详细分析.
qfiles: 游戏中的⽂件格式的定义和解析.
qmenu: 菜单界⾯⽀持
ref: 定义了引擎和图形模块(ref_gl和ref_soft)部分的交互,输⼊和输出函数
screen: 屏幕操作的⼀些⽀持
server: 游戏引擎的服务器端,这也是很重要的部分,我们后⾯会详细分析.
snd_loc: 定义了本地的底层⾳频处理函数
sound: 声⾳系统的⽀持
vid: 视频系统的⼀些函数
winquake: 和windows系统相关的⼀些函数
quake2的注释很少,这也给分析源代码带来了很⼤的难度,不过抽象出游戏引擎的主要逻辑,分析出游戏引擎的主要架构和⼀些重要功能的算法还是有可能的.为了不深没在代码中,我会试图清晰的把游戏引擎的各个部分的相互关系的主要功能说明开来.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。