您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 3D游戏开发步步高系列课程(2):3D引擎开
3D游戏开发步步高系列课程(2)3D引擎开发介绍付仲恺微软特邀开发专家我们将涉及到…•学习3D游戏‘PucthePirate’的开发议题•介绍Microsoft®VisualC#®2005Express版本开发环境•3D引擎开发环境•已知问题和解决方案•3D引擎框架介绍基础知识•基本计算机知识•基本软件开发(C#)知识Level200Level200C#Express环境•可视化的Windows应用程序设计–支持所见即所得的拖拽操作,易于创建出美观、易用的应用程序–内置WindowsXP主题支持工具–支持大量的控件应用–菜单,状态条都可以轻松创建出来C#Express环境•互动式的开发环境–支持代码高亮彩色显示、语法校对、智能感知功能–内置大量IntelliSense代码片断和模板–支持重构功能,使得代码结构改变或重组代码都变得更加容易C#Express环境•强大的数据支持–支持使用SQLServer2005ExpressEdition来创建数据驱动的应用程序–通过鼠标拖拽就可以创建出数据库应用程序,易于更快、更容易的创建全功能、数据驱动的应用程序–通过内置的可视化数据库工具来完成数据库设计和查询工作3D游戏引擎开发环境•Microsoft®.NETFramework2.0–免费下载:••C#Express开发环境–免费下载:•最新版本的Microsoft®DirectX®软件开发包(SDK)–免费下载:=EDB98FFA-A59C-4C23-9B92-BA304F188314&displaylang=en已知问题和解决方案•引用位置不存在•症状–编译错误–Microsoft.DirectX.Direct3DX引用图标出现黄色叹号•解决方案–删除当前引用–从DirectX安装目录下的相关路径添加Microsoft.DirectX.Direct3DX引用•用于托管代码开发的目录Runtime\x86\DirectX3D游戏引擎框架介绍•大部分游戏都需要的公共模块:–文本显示–模型加载和渲染–游戏物体的基类–声音和音乐的加载和播放–DirectX初始化代码–简单AI–基于结点的路径搜索Project类•位于main.cs•DirectX应用框架代码,主程序入口•初始化游戏中所需要的设备•处理所有的消息•处理游戏循环体中负责更新游戏物体和渲染物体的方法–OnFrameMove–OnFrameRenderMain类•OnFrameMove–该函数在任何帧发生之前调用,根据游戏时间对场景(例如,动画)的位置进行更新•OnFrameRender–绘制场景,在调用返回后DirectX将交换链中的下一个缓冲区的内容显示在屏幕上Game类•位于Game.cs•处理整个游戏•构造函数:设置所有资源的文件路径BaseLevel类•位于Level.cs•抽象基类–是Level和ClosingLevel的父类•构造函数:重置整个层级Level类•位于Level.cs•这个类从BaseLevel类继承•是所有可玩层级(playablelevels)的基类Level1类•位于Level1.cs•在游戏中表示第一个层级,继承自Level类•构造函数设置层级:•初始化所有的图形•初始化所有的音效•在游戏板的边角设置重生结点•创建网格,更新结点和背景物体,创建敌人,cookie和对应的HUD,并且设置敌人和玩家的起始位置Background类•位于Background.cs•用于保存背景并且显示到屏幕GameObject类•位于Object.cs•所有游戏物体的基类–抽象类•用于创建物体,设置物体的变换矩阵,检测物体的碰撞,检测物体的方向•构造函数:设置物体的位置和旋转角度,并且保存mesh或者动画的引用Node类•位于Grid.cs•继承自GameObject类•移动的物体使用这些结点来改变他们的位置•GridPosition结构体保存网格中结点的位置•每个结点对象都有一个位置和一组用于移动玩家和敌人的邻居结点(相邻结点)•构造函数完成:–设置结点在网格上面的位置–结点索引–结点可用的邻居Cookie类•位于Grid.cs•继承自GameObject类•负责创建和处理cookie物体•构造函数:–创建新的cookie–设置位置,类型和碰撞半径–Cookie使用mesh或者动画索引创建Grid类•位于Grid.cs•继承自GameObject类•用于创建其它物体所属的网格(地图)–网格包括物体移动所使用的结点–结点对象在整个网格对象上展开•构造函数:–创建网格上面的结点•指明结点位置,索引,mesh,邻接结点–设置每个结点可用的邻居(邻接结点)–填充路径数组–更新结点Grid类•Partial关键字可以将一个类的定义在多个文件中描述•位于AdvancedPathFinding.cs•实现Dijkstra算法•解决单源最短路径问题的一个贪心算法•该算法在一组结点中寻找所有的最短路径,并且将其保存在数组中Enemy类•位于Enemy.cs•继承自GameObject类•创建新的敌人,并且控制其运动•构造函数:创建敌人,设置碰撞半径,形状,索引和运动速度ClosingLevel类•位于ClosingLevel.cs•负责初始化并且显示结束层级(胜利或者失败)•不是一个可玩的层级•构造函数:初始化层级图像,声音和项目Player类•位于Player.cs•继承自GameObject•负责玩家角色(英雄)的创建,移动,输入,更新和渲染•构造函数:创建新的玩家,设置初始移动结点和其碰撞半径模型类•Mesh类•包含静态mesh–例如:不包含动画的模型•Animation类•包含动态mesh–例如:与一个或者多个动画相关的模型•使用关键帧绘制技术•使用骨架和皮肤技术Mesh类•Mesh类–位于Mesh.cs–用于处理物体的图形形状和3DMax导出文件(.x)•MeshHolder类–位于Mesh.cs–保存游戏中所有mesh的列表Animation类•位于Animation.cs•使用DirectX的样例代码•使用关键帧绘制技术–将动画序列中关键帧提取出来,其他帧根据时间用关键帧插值计算得到•使用骨架和皮肤技术–将模型定义为一系列的骨件,通过骨架的动作来实现动画,被定义为皮肤的顶点通过数学公式计算其运动–优势:•比基于顶点的动画节省更多的内存–劣势:•骨件的运动是通过几何变换定义的。当骨件弯曲时,会产生缺口–解决方案:使用蒙皮,调整并且混合在关节附近的顶点的位置HUD3D类•位于HUD3D.cs•继承自GameObject类•负责HUD对象(生命数量,暂停框)的更新和渲染•构造函数:创建HUD对象,设置HUD打开或者关闭Sound类•Sound类–位于Sound.cs–负责加载和播放音效–构造函数:保存音效文件和音效描述•SoundHolder类–位于Sound.cs–保存游戏中所有音效的列表Music类•位于Music.cs•负责游戏背景音乐•构造函数:根据音乐文件的名字创建音乐对象MainMenu类•位于MainMenu.cs•继承自BaseLevel类•在这个层级中,玩家启动一个新游戏,察看帮助或者退出游戏•构造函数:初始化并且创建所有属于这个层级的项目MainItem类•位于MainMenu.cs•继承自GameObject•更新主菜单层级的项目•构造函数:创建对象,并且设置其最大转动角度课程总结•介绍Microsoft®VisualC#®2005Express版本开发环境•3D引擎开发环境•已知问题和解决方案•3D引擎框架介绍获取更多MSDN资源•MSDN中文网站•MSDN中文网络广播•MSDNFlash•MSDN开发中心如需提出问题,请单击“提问”按钮并在随后显示的浮动面板中输入问题内容。一旦完成问题输入后,请单击“提问”按钮。
本文标题:3D游戏开发步步高系列课程(2):3D引擎开
链接地址:https://www.777doc.com/doc-4395502 .html