软件学院软件技术系 第九章 实训课程训练 任课教师:杨 森 天津电子信息职业技术学院 项目化教学(一)游戏开发 任课教师:杨 森 天津电子信息职业技术学院
3D 游戏引擎介绍报告 开篇 支持DirectX技术的最新三维游戏引擎CryEngine2性能演示 孤岛危机阳光衍射,柔和粒子,环境完全交互等效果演示(30秒) 容积云(Volumetric Clouds): 球谐(Spherical Harmonics) 柔和阴影(Soft Shadows) 柔和粒子(Soft Particles) 逆光(Backlighting) 焦散(Caustics): 阳光衍射(sunrays) HDR(High Dynamic Lighting): 运动模糊(Motion Blur): 景深(Depth of Field):
一、3D 游戏引擎的起源 (一)、起源 自Doom(毁灭公爵)以来我们在三维游戏上已经走了很远。Doom不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式:游戏 “引擎”。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或向已有的游戏素材中添加新的东西。大量的新游戏根据已经存在的游戏引擎开发出来,而大多数都以ID公司的Quake(雷神之锤)引擎为基础, 这些游戏包括了现在最流行的网络对战游戏的Counter Strike,还有些游戏使用了Unreal Tournament(虚幻竞技场)引擎。事实上, “游戏引擎” 已经成为游戏设计者和游戏玩家的标准用语。
一、3D 游戏引擎的起源 (二)、什么是引擎? 我们可以把游戏的引擎比作赛车的引擎,玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引擎直接控制的,它扮演着中场发动机的角色,把游戏中的所有元素捆绑在一起,在后台指挥它们同时、有序地工作。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。” 经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节 。
一、3D 游戏引擎的起源 (三)、引擎的基本组成 (1).动画系统可以分为两种:一是骨骼动画系统,二是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。 (2).物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。
一、3D 游戏引擎的起源 (三)、引擎的基本组成 (4).引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。
一、3D 游戏引擎的起源 (四)、3D游戏引擎的核心 (1).渲染器(核心) (A). 应用程序/ 场景 场景/ 几何数据库遍历 场景/ 几何数据库遍历 对象的运动,观察相机的运动和瞄准 对象模型的动画运动 3D 世界内容的描述 对象的可见性检查,包括可能的遮挡剔除 细节层次的选择 (LOD)
一、3D 游戏引擎的起源 (四)、3D游戏引擎的核心 (1).渲染器(核心) (B). 几何 变换 (旋转,平移, 缩放) 变换 (旋转,平移, 缩放) 从模型空间到世界空间的变换 (Direct3D) 从世界空间到观察空间变换 观察投影 细节接受/ 拒绝 剔除 背面剔除 (也可以在后面的屏幕空间中做) 光照 透视分割 - 变换到裁剪空间 裁剪 变换到屏幕空间
一、3D 游戏引擎的起源 (四)、3D游戏引擎的核心 (1).渲染器(核心) (C). 三角形生成 背面剔除 ( 或者在光照计算之前的观察空间中完成) 斜率/ 角度计算 扫瞄线变换 (D). 渲染 / 光栅化 着色 纹理 雾 Alpha 透明测试 深度缓冲 抗锯齿 (可选择的) 曲面片(高次表面) 显示
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-对光照和纹理的处理 世界的灯光 顶点光照 顶点着色 ( Gouraud 着色) Phong 着色 照明映射 混合照明 裁剪运算 三角形生成阶段 纹理与MIP映射(多纹理映射) 多重纹理与凹凸映射 凹凸贴图 高速缓存抖动 纹理压缩
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-对内存使用,特效和API 颜色深度 显存 分辨率 雾 体积雾 Alpha 测试 纹理Alpha混合 模板阴影 深度测试 抗锯齿 顶点与像素着色 API DirectX与OpenGL
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-模型与动画,细节级别 角色建模与动画 骨骼模型系统 网格的系统 具有层次的骨骼系统 动画混合 反向运动学 LOD几何系统
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-物理,运动,效果 世界建造 游戏物理学 效果系统 3DMax/Maya建造关卡 BSP(二叉空间分割) PVS(潜在可视集像) 游戏物理学 碰撞检测 效果系统 过程shader 粒子系统
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-声音系统,音频APIs EAX声音扩展 OpenAL Miles声音系统 Eagle编辑器产生声音地图 位置的声音 DirectSound Music Tracks in Games(游戏中的音轨) MP3格式
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-网络和连线游戏环境 网络游戏 Internet TCP/IP TCP和UDP的选择 客户端预测 延迟问题 包大小 智能数据传输 反作弊
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-脚本系统 脚本系统 剪辑场景 脚本和人工智 多重线索 控制复杂度 可视化脚本系统
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-现成产品与定做的游戏引擎设计工具 现成产品与定做的设计工具 引擎选择 插件 自制工具 游戏控制机制 实体和照相机 武器系统
一、3D 游戏引擎的起源 (五)、3D游戏引擎的设计要素 设计要素-人工智能和导航(路径发现) 人工智能(AI) NPC角色 世界导航 局部导航 人工智能和角色动画 平衡 游戏规则