zoukankan      html  css  js  c++  java
  • quake3源码大体结构

     这个没全部整理好,先发表了,慢慢改动,雷神的代码比较复杂,我不知道会改动到几时,就先发表了,以后慢慢改动

    1   雷神编辑器 ->map文件

          格式如下

          运用地图编辑器的功能来实现编辑房间,地形的功能者也,最后保存格式为map文件,建议下载一个雷神地图编辑器

     2  生成bsp文件过程

         1,加载map文件数据到内存中,建立一棵二叉树,将entity中的brush的每个面的值赋给node节点,再给每个每个节点将patch镶嵌上

         2   遍历二叉树,在每个节点中根据brush选出平面,进行bap树分割,将数据根据bsp树进行场景处理

         3   遍历二叉树,根据node是否有两个子节点,判断是否该节点为一个叶子节点,如是则表明为一个protrol入口。

         4  遍历二叉树, 根据入口生成pvs

         5  生成网格,存储光照的值,最后在渲染部分运用光照贴图加上这些值,表示光照。

    3   生成aas文件过程

         1. bspc文件夹内根据bsp文件的brush类型例如火山,梯子,传送门,来生成行对应的运动方式,例如机器人接触水面就开始游泳

         再设置速度等参数,例如在水中跳得多高,游的多快。      

        2. botlib文件内则生成了Bot运动时所用到的东西,例如bot运动时经过的房间,行走的路径,顶点等等

     4   渲染阶段

      render->根据配置文件的来配置opengl->设置视口大小->加载bsp文件->根据 玩家位置->找到玩家所在的房间及邻居房间->表示房间及物体的多边形数目,光源数目等等

                          静的直接渲染->  多边形根据类型    例如mesh,triangles,patch等等,再增加多边形数目,

                          动的物体则要计算它的几何位移,其余跟静态物体没区别,例如  水波计算它的波动率,而怪物,则要根据更新动画来显示出来,光源的移动,旋转,缩放等等

                          在确定完玩家潜在能看到的多边形后,将多边形进行排序,进行透明的先渲染,再对不透明的多边形渲染

                          当对于多边形阶段完了后,进行纹理映射部分

                         对于纹理图片,分格式加载bmp,jpg,tga等等格式,进行加载,根据纹理对应的参数进行对应的纹理混合方式

                          然后再渲染阴影,

                          渲染天空,使用的天空盒进行渲染

                          backend后置阶段,则对于幁缓存区进行操作,比较深度测试,模板测试,颜色测试等等

                         对投影方式进行改为正投影,使得用于渲染2D的文字,图片,按钮之类,例如生命值,弹药数

                                                                                                         加载bsp,渲染器阶段

                                                   

     5. 游戏阶段                           game.dll       

     windows->load库文件{    检测机器的类型,如什么显卡,什么cpu之类,生成配置文件    ,等等,篇幅太小,难一写全                                    

                                                     render.dll

                                   单人游戏 —》加载bsp,aas文件玩游戏{

        game   {                                                                                 加载aas地图,进行机器人的人工智能阶段

                              多人游戏—>配置ip或ipx协议,联网玩游戏

      单人阶段  

            初始化bot 数量,根据bsp的entity,将表示bot,物体的md3模型加载到内存中,根据bsp文件存放的中的位置数据,在屏幕中显示出来。

            游戏类型分为team,ctF等类型,类型不同游戏形式也不同,

            在同一类的队员可以互相通信,设置一个领队

            主要是人工智能的代码,例如导航,

             追逐目标,对于一个组队来共同追逐一个目标等等

             武器选择,设置武器的子弹速度等等,push传送门的使用等等 ,武器的发射速度,及碰撞检测   

                                                                        导航,寻路

                   机器人使用的有限状态机  -{    遇见敌人,打!   打不过,逃! 

                                                                        遇见物体,如弹药,生命值,如果缺少就拿取

  • 相关阅读:
    检测浏览器是否支持DOM2级规定的HTML事件
    click冒泡到body
    浏览器事件归类
    兼容主流浏览器的事件处理程序
    eventPhase三个状态测试
    鼠标滚轮事件(mousewheel)
    自定义右键菜单(contextmenu)
    数据库范式
    敏捷开发模式
    没有清晰的职业规划,跳槽会很失败
  • 原文地址:https://www.cnblogs.com/zengqh/p/2614929.html
Copyright © 2011-2022 走看看