3D FPS

1234567890

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  57 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

常用链接

留言簿(10)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

版权归 FK .ctd FK_jims

0.3d fps (第一人称射击游戏) 

简述:

当今游戏业的发展最为风光独好的莫过于MMORPG(大型多人在线游戏了),这类游戏往往投入巨大,然而收益也是非常巨大。最好的例子就是当今最为流行的网游,暴雪公司出品的魔兽世界,一个巨大的4维世界:3D空间+时间维度。而这些游戏的前面却是现在不起眼的单机3D FPS游戏。(从编程角度看)。 

3D FPS起源跟图形处理芯片有莫大的关系:ID soft公司的John kamark起用一篇60年代的数学论文架构一个BSP树的3D视图加速程序在PC机上运行3D视角图形开始成行3D射击游戏风气。经历到现在,3D FPS游戏已经是一个相对成熟的制作产业。代表作有孤岛危机,

使命召唤4,使用成熟的3D game engine制作,效果非常逼真。 

而现代一个普通3D FPS 游戏的制作基本上是使用成熟的3D game engine制作的了。3D ga me engine目前市场上有好多,各种各样,开源,免费,收费都有,收费的有高价的也有低价的,相差也比较远。目前出名的有unreal game engine && ID Tech game engine 当然游戏还要其他策划,美工,剧本的非程序员角色。 

原理上game engine就是3D graphics + physics + audio + input + script (图形+物理+声音+输入+脚本)5大组件组成, 下面我将一个一个讲解下,并寻找如何组合它们的方法: 
 

1.3D 视图渲染世界: 

概述:游戏的图形当然的用图形库,两大主流:DirectX && OpenGL. 目前基于windows平台的游戏居多。所以DirectX占优。我想介绍的是DirectX. 为什么不直接用引擎,因为引擎封装的是也是DirectX,道理一样。明白DirectX就可以对引擎的了解达到一种相当的程度。 

1.1DirectX 简单概述: 

XXXXXX 

1.2DirectX的数学3D世界 

XXXXXX 

1.3DirectX的基础 

XXXXXX 

1.4实用DirectX 

XXXXXX 

1.5GPU编程 

XXXXXX 
 

2.物理世界(碰撞检测) 

2.1AABB 
 
 
 
 

3.声音世界 
 
 
 

4.一个简单的游戏

4.0 简述:

      简单的游戏,在一个盒子里实现到有目标人物的射击;

4.1 DXUT engine 

   4.1.1DirectX SDK 里面包含了一个简单的封装D3D常用功用的类的一个库;架构如下: 

   您的浏览器可能不支持显示此图像。 

   各文件大概解析:

   1.DXUT 是管理windows窗口的,还有一些线程的内存任务的管理

   2.DXUTEnum是管理设备的也就是显卡,

   3.DXUTgui是一个简单的用户界面库

     DXUTsettingDlg就是一个已经格式化的一个管理显示设备的对话框

         一个架构图:

               您的浏览器可能不支持显示此图像。 

   4.DUXTmesh3D网格文件的管理

   5.DXUTTexture是管理纹理的

   6.DXUTmis是一个杂类,有管理数据结构体的,有时间器的,有摄象机的,有方向管制的。

         您的浏览器可能不支持显示此图像。 

   其中的CFirstPersonCamera 就是第一人称视角摄象机,用起来很方便 

   7.DUXTSound是声音 
 

   4.1.2sample DXUT 

   您的浏览器可能不支持显示此图像。 
 
 

4.2 一个盒子的世界 

      meshCell 
 

4.3增加一个东西

      4.3.1 射击球:ammo

            struct AMMO_STATE

       {

       4元数世界坐标转化  

       标志是否活动

      位置

       速度 

       颜色

       创建时间

       生命周期

       透明

      }

     

       应该就是这些的了 
     

     4.3.2 怪物:droid 

            struct DROID_STATE

{

    4元数世界坐标转化  

       标志是否活动

       标志是否被击中

      位置

      速度 

       颜色

       创建时间

       生命周期

       透明 

                  离camaer有多远

                  动作状态

}; 

4.4 游戏壮态:

       一个游戏应该有个场景管理的结构体,表明当前玩家处于游戏的什么状态,例如,玩家处在设置游戏的显示设置时,那么游戏玩的其他资源就应该不那么快创建;

         按照我设想。。就是一个标志位:玩时为1,设置其他东西为2,结束为3. 

4.5运动起来

         当创建怪物与球体后,就应该初始化它们存在的状态参数,然后根据物理定律把握住它们的状态(速度,位置,重量。。。)进行运算再返回结果给它们。 

         适当的物理参数设置:

         由于是简单游戏,所以基本上设置一下世界引力系数,再加上一些碰撞后的缺失,磨擦系数就可以了 

4.5UI

         用微软提供的DXUT库里面的就基本上足够了。 
 
 

4.6 基本程序架构 

 面向对象与全局变量? 

      基本上整体的结构是使用面向对象思想的。

            像摄象机,封装好一个类(DXUT库提供)网格也是。 

      然而大局里是用全局变量来设计的

            全局的数组储存球体信息与怪物信息;

            全局的结构体储存要渲染的资源。 

   理由

            因为要考虑到全局变量可以减少函数参数堆栈出入带来的时间损失!(3D是每秒桢桢循环,调用函数频繁)

            当然还有检索怪物跟球体,把握它们的句柄是相当迅速的 

4.7全局整体架构解析

  总有来说就是依靠在DXUT库上做个简单的程序 

      您的浏览器可能不支持显示此图像。


源代码是Directx sdk中的XACTgame。。。本人自信有能力做,不过时间紧了,要交论文了

时间08年3.31号!
估计以后要增加一下函数的解析
DXUT里面sample里的运行机制
两个球体带速度在3D里碰撞的数学问题
球体与面的碰撞问题
还有GPU里的FX文件的一些VS,PS的解析

posted on 2008-03-31 12:16 DK_jims 阅读(754) 评论(4)  编辑 收藏 引用

Feedback

# re: 3D FPS 论文 正式版 1 2008-03-31 12:22 DK_jims
人气太差,自己回一个。
可耻的自我!其实是做不出!不是时间紧!
大学生一篇论文就是这样一晚功夫就可以完成,画几张图,吹牛几句~
自己BS自己,又不得不阴敬一下自己!  回复  更多评论
  

# re: 3D FPS 论文 正式版 1 2008-03-31 12:29 DK_jims
配错最后一张图,迟一个星期改,注 最后一个图搞错了  回复  更多评论
  

# re: 3D FPS 论文 正式版 1 2008-03-31 22:44 hakuci
看不懂!!太高深了  回复  更多评论
  

# re: 3D FPS 论文 正式版 1 2009-03-06 09:41 nn
.........  回复  更多评论
  


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