quake3源码大致流程

quake3游戏从启动到结束的流程包括:加载roq视频、检测硬件信息、初始化D3D和OpenGL、网络及输入设备设置、加载配置文件、创建虚拟机和执行脚本。游戏阶段涉及地图、模型、音效加载,以及UI界面、控制台、网络对战等功能。在单人模式中,加载 BSP 文件,初始化 AI 逻辑;在多人模式中,处理网络通信和玩家状态。quake3 使用 UDP 协议解决网络延迟问题,并通过虚拟机执行命令驱动游戏运行。
摘要由CSDN通过智能技术生成

     

  现在这一部分,很大意义上是游戏的初始化部分。

很大意义上是从你点击3D游戏开始出现的画面,到这个游戏结束的一个过程经历罢了

 加载roq视频文件,解压缩

在刚开始的游戏画面一般是游戏公司的标志,例如id的公司标志乃是出现的那个汽车引擎的画面,代表id的引擎

或者人的神经的样子,代表 深思(deep idea) 还记得《doom启示录》里的id公司名字的来临吗?这个就是。

一开始q3游戏就会显示加载,bsp,等等文件,你可以看见,或者在游戏中按下“~”

打开控制台,就可以看见了

windows的代码

 windows->load库文件{   检测cpu,gpu等等显卡的信息者也

    检测机器的类型,比如显卡,cpu的种类之类,生成配置文件 ,

     初始化d3d,初始化opengl,

        初始化网络端口,鼠标,键盘的初始化,时间的记录等等,

  加载cfg配置文件,配置各个系统,。。。。。。。。。。。。。等等   

  

  初始化内存空间部分,联网,

如果出现问题的话,那么在会出现了控制台就会显出错误来

      创建虚拟机, 加载qvm等脚本文件,根据这个ui。qvmcgame.qvm,game.qvm等逻辑部分,

要对于文件进行编译

      不断遍历虚拟机的各项状态,例如断开,运行中了等等了

   如果是单机,   server的配置等等,例如玩家的数目,

      开始进行游戏

 启动cgame中的内容,对于游戏开始状态的遍历,将硬盘文件中ui的图片,标签来进行调用渲染器来进行显示在了屏幕上面

加载Ui背景音乐

然后加载代表公司的电影,来显示

 然后会出现这个ui游戏的界面部分,

一般单人部分,多人部分,设置,制作团队,退出等等这几个选项吧

然后加载代表ui的图像,文字等等在屏幕上显示出来

ui的显示部分,包括了显示部分,鼠标点击部分,菜单子菜单,按钮,标签等等。

可以按格式分为分为icon,string,图片等等,以及相应的位置.颜色。

然后在游戏运行时,被编译为机器码以后,再被render的2D部分渲染之

例如 调用这些函数

    draw font

   draw icon

   draw 3D model

   draw 2d image

   等等

ui很大意义上能够调用引擎的部分函数,改变游戏中的的设置。

       ui与控制台很大意义上对应的是各个部分函数对应的命令,虚拟机通过这个命令把命令转换为对应的真正的函数

来调用之,这个极为重要者也,quake3把各个部分的主要的接口例如渲染,ai,音效等等,的函数,对应成命令,

就像快捷方式一样,通过虚拟机,执行陷入 来实现汇编语言的跳转来转到真正的函数上来,整个quake3其实就是

根据命令行的输入,执行来处理的,

      你可以输入控制台命令来使用引擎的功能的,例如god表示无敌,give all,给你所有的东西,这其实是控制台命令罢了

命令行驱动是quake3的运行方式,其实就是有限状态机!状态的变化使得调用的函数不同者也。

例如 (伪代码如下)

 loadFile      0

 readfile       1

 write            2

 closefile       3

 addEntity      4

renderCurentFrame  5

startAI    6

  举了个简单的例子,不太恰当,大致就是quake3使用一个变量,保存的各种状态等等,不断的切换各种状态,来调用的

真实的函数执行。

机器人也是用的这个。

在控制台里可以使用命令行的一部分命令了,要用这种思路来看quake3的代码,

  quake3运行时,不光是quake3.exe的运行,还有一个控制台程序运行呢.要用调试的眼光看quake3

的代码。

查看内存的大小,以及那块文件未被加载,实时的调试程序,

查看每一幁的多边形多少,时间的长短,改错误。加载每一副地图,检验有没有问题,这个要求在做引擎时,要进行对

各个部分的处理信息显示完成消息在控制台里

例如我们平时玩的游戏,可以输入作弊命令的,例如god上帝模式,加载地图,加载生命值,其实都是在加载间接调用的

真正的函数运行罢了。

大致的流程

 在游戏开始了以后

在cgame文件夹里包含了对于地图的场景数据,音效,等等的记录等等,很像是把物体放到房间里来,摆好位置。

在加载成功后,要在控制台显示加载成功者也。利于程序猿进行知道是否加载成功了。

对文件加载进来后,分析文件有没有问题,在进行游戏的逻辑阶段,客户端的比较简单了,就是其他的玩家显示,你自己的统计

起来发到网络,渲染,等等各部分

在加载地图后,

还要加载表示物体的模型与音效(拿去后的音效),初始化位置,动得要进行运动者也

初始化玩家信息

玩家属性包括了(1)相应的模型(三部分,头部,胸部,下部),放到3D阶段渲染。

(2)  声音(例如起跳时的声音,落到水里时的声音,死亡时的声音,受伤时的声音)

(3)玩家的生命值,弹药数目,武器,装甲等等,通过2D窗口的文字,来进行2D渲染者也

如果是bot,还要加载bot对应的脚本程序,编译,赋给bot以参数者也

等等:

(4)手里预先的的武器,gun!一般从配置文件设置出,quake3初始的默认武器就是一把机关枪。

位置,移动速度。状态(爬着,走路&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值