




免费预览已结束,剩余34页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学软件学院本科毕业论文 3D游戏设计摘要 游戏事业蓬勃发展,越来越多的人参与其中。而越来越多的大学提供了游戏开发程序,也出现了很多介绍开发游戏的书籍。但我们缺少的是一个设计完全的特色游戏所需要的所有步骤的工具。本文就是这样的一种资源。对一个游戏开发者来说,游戏引擎无疑是重中之重。本文介绍了游戏引擎-torque将很好的帮我们学习开发3D游戏。我们用UltraEdit来编辑代码,编辑GUI来设计游戏画面,用3Dmax来建立游戏模型,用SoundEdit来编辑音效。游戏环境用的是纹理,然后游戏身临其境的是音效,而脚本则把这些串成了一个整体。本文主要介绍torque等软件的使用,并使之整合成一个游戏。关键词 torque GUI 纹理 3D模型3D game designAbstract The game project is develop so good that more and more people join it. More and more universities provide the codes of the game, and many books which introduce how to emploder a game appear. But we need a tool which supports a full process to a game designed fully. And the words would be the resource.To a game developer, a good game engine is very important. The torque engine which is introduced in the words would help us exploder the project greadtly.Torque engine provide the codes which support many functions just like network connections and GUI.We use UltraEdit to compile code; compile GUI to design the game menu; use 3dmax to build the game model; use SoundEdit to compile music.we need texture to prettify game environment, and use music to be personally on the scene, then use script to them.The words introduce mainly how to use torque and other software,then set up a game.Keywords torque GUI texture 3d model目录第一章 绪论5第二章 游戏引擎概论62.1 Torque功能介绍62.2 Torque引擎包配套的软件112.3 Torque引擎使用简介112.4、为什么使用torque引擎及安装过程17第三章 用Torque引擎开发我们的3D游戏193.1辅助软件-UltraEdit193.1.1创建项目和文件203.1.2查找替换233.1.3 grep243.1.4书签253.1.5宏263.1.6总结273.2 3D游戏-tank制作283.2.1整个游戏的分析和分工安排2 游戏分工2 人员安排283.2.2游戏结构分析(文件夹)283.2.3游戏模块分析3根主模块3 控制模块3客户机控制模块3服务器控制模块3数据资源模块34第四章 结论36致 谢37参考文献38Contents Chapter 1 Introduction.6 Chapter 2 Conspectus of the torque engine72.1 the introduction of Torque function72.2 the assistant software of Torque122.3、hao to use torque 122.4、why to use torque engine end hao to build18Chapter 3 Use torque to empolder our game203.1 the assistant software -UltraEdit203.1.1 create item and file203.1.2lookip and replace243.1.3 grep253.1.4 bookmark253.1.5 macro263.1.6 summarize283.2 3D game-tank283.2.1the plan of the game。2、compartmentalizion of the game2、the plan of mans283.2.2 the analyse of configuration293.2.3 the analyse of module3 root module3 control module3 the control module of client3 the control module of server3 data resources35Chapter 4 Conclusion36Thanks37Referrence literature38第一章 绪论计算机游戏是一个每年90亿美元的行业。该行业的玩家人数不断增长,在这些增长的玩家人数中,其中一些人并不只是希望玩游戏,而是相信自己可以比游戏伙伴玩得更好。您的问题可能是缺少需要将您的梦想变为现实的相关训练、经验和工具的正确结合。本书就是帮助您实现这一点。每年,越来越多的大学提供游戏开发程序,并且每隔几个月,一个新的在线独立游戏开发人员站点就会出现在Web上。对于已经付过钱的那些人,他们并不缺少训练。对于希望创建自己的引擎和游戏其他指定部分的那些人,他们也不会缺少相关的书籍。缺少的关键元素是一种资源:带着一个富有灵感和有抱负的游戏开发人员,和他一起查看设计完整的特色游戏所需的所有步骤和工具。本书就是这种资源。除了游戏音乐合成外(这本身就可能是一个完整的书籍系列),您还将学习如何创建游戏的每个部分,其方法是使用良好定义的程序工具箱、相关的知识、技术和思想。所有的开发工具,包括引擎, 都在上。本文将介绍如何使用torque游戏引擎及游戏程序编辑,并描述下游戏架构等,使你对整个3d游戏有初步的认识。第二章 游戏引擎概论2.1 Torque功能介绍我们知道,做一个大型一点的游戏实际上和做个小操作系统差不多,每做一款游戏就从底层开始重新编写代码是非常不切实际的。因此,开发者在做第一个游戏时会把很多已经做好的东西封装成类,然后留出接口,以供下一个游戏调用。这个类库其实就可以叫做游戏引擎。严格的说它是用于控制游戏功能的主程序。控制着游戏的运行,如人工智能、游戏世界的物理定律,还实现人机交互,如接受玩家控制信息的输入,选择合适的声音以合适的音量播放等。也许这样说还过于简单和抽象,本文中我们介绍了torque游戏引擎,那么,这个游戏引擎究竟能做什么呢?(1)基本的控制流Torque Game Engine初始化库和游戏中的函数,然后在游戏的主循环体中循环直到游戏结束。主循环通常会调用平台库中的函数来产生平台事件,这些事件将驱动游戏的发展。Torque负责处理如下几种基本的事件处理:a、显示鼠标在GUI上的移动事件b、处理其他与输入有关的事件c、依据设定的时间模拟比例计算经过的时间d、管理服务器对象的处理时间e、检测服务器网络数据包的传输f、增长模拟事件的时间g、处理客户端对象的时间h、检测客户机网络数据包的传i、渲染当前帧j、检测网络连接是否超时(2)平台层平台层向该引擎提供了一个跨平台体系结构接口。平台层负责处理文件、网络操作、图片初始化、用户输入以及各种事件。(3)控制台控制台库为以Torque Engine为基础的游戏提供一些基本功能。控制台上同时具有编译器和解释器。所有的GUI、游戏对象、游戏中的逻辑以及接口都是通过控制台进行处理的。控制台语言被称作Torque Script,与C+语言类似,但具有一些利于游戏开发的特性。可以使用命令从控制台窗口载入控制台脚本,也可以从文件中自动载入。(4)输入模型输入事件经由平台层解释然后递交到游戏。默认情况下,游戏按照一张全局动作映射表检查输入事件,这张表取代所有其他的动作处理程序。如果在表中找不到指定事件的动作,则事件将被传递给GUI系统。如果GUI没有处理输入事件,它将被传递到当前活动(但非全局)的动作映射堆栈中。各个平台的相关代码会把Win32,Xwindows或Mac系统上发生的事件翻译成统一的Torque输入事件。这些事件被发送到主应用程序事件队列中。动作映射表把平台层的输入事件翻译成控制台命令任何平台输入事件都能够被绑定到一种通用的处理方法上-所以理论上,游戏并不需要知道事件是来自键盘、鼠标、操纵杆还是其他输入设备。这使得游戏玩家可以按照自己的喜好设置操作方式。(5)仿真来自平台库的事件流驱动着游戏的发展,这些事件包括:InputEvent,MouseMoveEvent,PacketReceive-Event,TimeEvent,QuiteEvent,ConsoleEvent,ConnectedReceive-Event,ConnectedAcceptEvent和ConnectedNotifyEvent。通过记录平台库的事件流,游戏的仿真会话(simulation session)部分就能够根据调试的需要重复游戏的某个片断。对象的仿真基本上是由游戏的引擎部分完成的。有时间限制的对象可以根据它是服务器对象还是客户端对象添加到以下两个处理列表中的某一个上:全局服务器队列或全局客户机队列。服务器端的对象只在某些特定的时间进行仿真,但对于客户端对象,为了在帧速率很高的时候能够产生平滑的视觉效果,必须在每一个时间事件后重新仿真。有一个专用的simulator类,它管理着所有需要仿真的对象和事件。这些对象分为不同层级的simulator类,可以通过名称或对象ID引用它们。(6)资源管理器Torque Engine会使用到为数众多的资源。地形文件、位图、形状、材质清单、字体以及内景都是游戏资源的例子。Torque有一个资源管理器,这个管理器用于管理各种游戏资源并提供一个加载和保存资源的通用接口。Torque的资源管理器支持每次只加载一种资源的一个实例。(7)图形Torque本身没有图形生成功能;取而代之的是,它使用OpenGL的图形API。Torque有一个实用工具库,这个库用于扩展OpenGL以支持更高层次的图元和资源。Torque有一个实用函数集,该函数集能够更好地支持复杂的图元和资源,而且对较容易管理的纹理和2D图形添加了一些简单的功能。Torque有一个纹理管理器,该管理器负责游戏中纹理的加载和卸载。在一个给定的时间内只能加载某个纹理的一个实例;在加载完成后纹理由OpenGL处理。当游戏切换图形模式或视频设备时,纹理管理器会透明地重新加载或是卸载游戏的纹理。Torque支持多种位图文件类型:PNG、JPEG、GIF、BMP,以及用户自定义的BM8格式,这是一种用于最小化纹理内存开销的颜色为8位的纹理格式。GUI库管理Torque游戏的用户界面。它是专门为游戏界面开发而设计的。Canvas对象是当前GUI层级的根对象。它负责发送鼠标和键盘事件,管理更新区域和光标,并在绘制下一帧的时候调用恰当的渲染方法。Canvas会跟踪内容控制,这种控制从下到上分层地控制内容的渲染,主要用于控制在屏幕上显示任意数量的浮动窗口或对话框。Profile类负责维护一组控件之间的实例数据。字体、颜色、位图和声音数据等信息都保存在Profile类的实例中,所以并不需要对每一个控件都复制一个Profile类的实例。Control类是系统中所有GUI控件的根类。一个控件可以容纳任意数量的子控件。每个控件都以父控件的边框为坐标系在父控件内部占用一块矩形区域。Control类负责处理控件的输入、渲染,同时负责接受鼠标焦点和按坐标自动调节控件的大小。(8)3D渲染Torque库有一个模块化的、可扩展的3D渲染系统。游戏子类首先定义成像方位和视觉范围,然后调用OpenGL的画图命令画出3D场景。类负责确定视口,以及模型的观察角度和投影矩阵。函数将返回当前受控对象(玩家当前正在控制的模拟对象)的成像角度,然后引擎将调用客户端场景图形对象渲染游戏环境。在客户端,场景图形库负责监控整个游戏场景,并根据当前的成像角度决定应该渲染哪些对象;而在服务器端,它负责根据玩家在游戏中的视觉角度决定应该把哪些物体发送到客户端。整个场景被分为多个区域,每个区域由多个实心部分和入口组成。场景以外是一个单独的区域;内部对象可以有多个内部区域。引擎负责找出一个给定3D点在哪个区域以及拥有该区域的对象。然后引擎就能够决定哪个或哪些区域包含一个对象实例。在渲染的时候,整个场景将从包含摄像机的区域开始,按照在它之前的区域中设置的视觉入口剪辑每个区域中的对象。引擎还负责确定网络对象的处理范围,决定一个给定对象是否需要由客户端处理。场景中的每个能够渲染的对象都是从一个基类派生出来的。在刷新场景的时候,所有可见的对象都需要准备一幅或多幅用于渲染的图像,这些图像随后将被插入到当前场景中。图像先按透明性排列,然后渲染。这种方法允许在渲染一个带有多个半透明窗口的楼房时先渲染楼房,然后渲染其他对象,接着再渲染楼房的窗口。对象可以插入多张用于渲染的图像。(9)地形地形库负责处理渲染外部场景模型的对象。它包含了sky对象,这个对象渲染外围的天空和有层次感的云层,并在渲染整个场景的时候通过设置明显的和模糊的距离使环境变得错落有致。sky对象还将产生模糊的垂直层次并将其发送给SceneGraph对象,以便渲染。TerrainBlock类提供了无限多个大小为256256的区域,这些区域在一个水平面上展开。每个区域上的数据都由资源管理器负责保存和加载,这样单个地形数据文件就可以在服务器和客户机之间共享了。对地形的纹理处理是通过代码把基本的材质纹理和新的材质纹理混和到一起,然后按照矩形区域的距离远近投影到连续的矩形上。Blender类负责混和不同的地形纹理并转换成特定的版本,以便在x86体系结构的机器上运行时能够加快速度。游戏中的水按照距离的远近自动渲染,近处的水比远处的水波纹更多,颜色更深。水的覆盖范围可以按如下方法圈定,在画面上设置一个点,然后以这个点为中心形成一个湖泊,并且不会有水从边角泄漏出去。(10)内景内景库负责渲染图像,管理冲突,并为内部对象,比如各种建筑物,提供磁盘文件服务。内部资源类管理与单个内部对象定义有关的数据,任何时候系统中都可能存在多个资源类实例。内景库管理用于渲染场景图像的区域,而且还可能拥有渲染镜像视图的子类。光源管理器类为当前已经加载了的对象产生光照贴图。只要有可能,实例就会共享光照贴图。内部资源通过一个内部导入实用程序构造和加亮。源文件是Quake风格的.map文件,该文件与凸面物理结构的实心“画笔”列表并无差别。这种画笔用来定义内部实心区域。某些特殊的画笔定义了区域的边界和类似于光源这样的对象。(11)形状和动画这个库负责管理各种形状模型的显示和动画。库的形状资源类可以在多个形状实例之间共享。形状类管理形状的所有静态数据:网格数据,动画关键帧,素材列表,纹理信息,触发器和详细的层级。实例类管理形状实例的动画、渲染以及细节的选择。实例类使用线程类管理多个同时运行的对象的动画,这些类和对象一一对应。每个线程都能够各自及时地运行,或者在其他线程运行的时候按照另一个不同的时间比例运行。线程还可以在不同的动画顺序之间切换。动画的顺序可由节点/骨骼(node/bone)动画(例如,爆炸的各个环节)、素材动画(爆炸中的纹理动画)和网格动画(如一个形状变化的水滴;注意大多数网格动画都可以通过节点级的动画和旋转动画来完成)组成。动画还包括是否渲染图形以便图形的网格只有在动画开始之后才能 看到。(12)网络连接Torque设计的基础是要提供强大的客户机/服务器网络模拟支持。Torque网络设计的目标是能够在Internet上获得良好的网络性能。Torque处理了3个基本的实时网络编程问题:受限带宽,数据包丢失和延迟。Torque游戏的实例可以在专用的服务器、客户机上安装,或者同时在服务器和客户机上安装。如果游戏有客户端和服务器端,则运行游戏时客户端将连接到服务器端,不过在同一个游戏实例中的网络代码之间有捷径相连,而且没有数据会超出网络的范围。带宽是一个棘手的问题,因为Torque支持广阔、开放的地形环境,而且要处理为数众多的客户端对象每台服务器最多可以连接128台客户机,这意味着很可能会有多个对象同时需要移动和更新。Torque使用很多策略来最大化可用带宽。a、它以比较高的频率向客户机发送对于客户机而言最为重要的更新数据,而对于其他不是最重要的更新数据,发送的频率要低一些。b、对一段数据,只发送所需的最少比特位。c、只发送已发生变化的对象的状态。d、缓存普通的字符串和数据,以便一次传送所有数据。数据包丢失也会产生问题,因为在丢失的数据包中包含的信息必须以某种方式重传,然而在大多数情况下,如果直接重传丢失的数据包,那么这些数据包中的信息在到达客户端时已经变得很陈旧了。延迟在模拟时也是一个问题,因为网络数据传输的延迟会使得客户端的视觉效果与服务器端无法同步。快速移动风格的FPS游戏需要对操作控制在瞬间之内作出响应,以便让玩家感受到游戏的风驰电掣,这也是Torque设计的初衷。另外,延迟很大的玩家无法击中高速运动的物体。为了解决这些问题,Torque采用了以下策略:a、插补(interpolation):把物体从客户端指定的地点平滑地移动到服务器指定的地点。b、推断(extrapolation):根据物体的状态和移动的规则猜测物体的移动方向c、预测(prediction):根据移动规则和客户端输入对物体的移动方向作出准确的猜测。网络体系结构分为以下几个层次:最底层是OS/平台层,上面是通知协议层,再上面是NetConnection对象和事件管理层。2.2 Torque引擎包配套的软件Torque引擎的确功能强大,但是,它的许多功能依赖于第三方软件。TorqueGameEngineSDK:这个就是Torque游戏引擎的安装程序,我们所做的工作都是围绕着它来进行的,我们就是靠着它来制作出绚丽多彩的3D游戏的。UltraEdit-32:这个软件应该很熟悉了,它可是个强大的文本编辑工具,用它来编辑Torque引擎脚本是个非常不错的选择。Paint Shop Pro:游戏中形形色色的3D物体都有漂亮的外皮,这个软件就是为3D物体建立纹理外皮的。MilkShape 3D、3Ds MAX、:这些软件都是Torque所支持的可以用来建模角色的软件,其中MilkShape 3D是Torque专用的人物建模软件,而后者是当今世面上非常流行的大型建模软件,Torque引擎为后者提供了类型转换的工具,可以轻松的将用3Ds MAX制作的模型导成Torque引擎所支持的模型。我们用的人物建模软件是3DsMax7.0。UVMapper:制作了人物模型后需要为他们穿上漂亮的衣服,这个软件可以针对任何人物模型制作外皮,这里说的外皮和上面的Paint Shop Pro所说的外皮是两个概念,Paint Shop Pro制作出来的外皮又叫材质或纹理,是针对物体的,这种外皮无法穿在人物的身上。而UVMapper制作出来外皮实际上就是人物的皮肤。SoundEdit Pro:用来制作3D音效的。这样看来,要想制作出绚丽的3D游戏,需要学习使用的软件还真不少,不过这也是它的优点之一。2.3 Torque引擎使用简介安装了TorqueSDK,在Torque/SDK/example目录下,双击torqueDemo.exe的可执行文件,出现如下图(图1-2)的开始页面:图2-1开始页面那顶上的一群图标是到TGE工具和文档的快捷方式。GUI Editor是制作图形用户界面的工具。World Editor是创造你的游戏世界并添加物体。Console是提供通过文字界面访问和控制游戏引擎的脚本。在这个教程中,我们将要探索GUI和World编辑器,并且我们会快速浏览一下Console。至于TDN,News,Docs,和Forums图标是关于Torque信息的网页的链接。Tutorial是本教程的链接。Options让你能设置普通的图形和声音选项,比如屏幕分辨率或音量等。最后,Exit就像你想象中的那样,退出这个引擎。我们在这个教程中不会深入介绍Torque的Consol(控制台),只是让你知道它能做什么,点击这个图标,在Consol窗口你可以看到引擎启动后的一些进程记录。你不仅仅可以用它来得到文字反馈,你也能直接在文字输入框中输入命令,举个例子,输入“quit();”,当然,这个命令退出了TGE。下面,我们看一下演示的游戏。点击左上角多的World Editor按钮,这时一个蓝色的机器人会浮动在一个大型的棋盘上,这表明我们已经进入了示例游戏。游戏视野是一个自由移动的摄像头,要转换成游戏者的第一视角可以通过菜单Camera Toggle Camera (快捷键Alt+C)来实现。按住右键拖动的时候,可以环视四周,而WASD键让机器人能在地面上前后左右的四处移动。如下图(图1-3)图2-2下图是这个机器人所处的3D世界。我们可以发现,这个3D世界其实什么也没有,没有游戏任务,没有怪物,没有武器,甚至没有天空,只有一个丑陋到的机器人和一片非常难看的地板。如下图(图2-3):图2-3下面我们来看如何简单的编辑我们自己的地形。选择待单的Window Terrain Editor。这时,当在屏幕中移动鼠标的时候,会有一群有色的小正方形跟在它周围。那些小正方形是可以调整的地形的区域。在游戏者模型附近点击某处,并上下拖动鼠标可以看到一个小土墩形状的,如下图(图2-4)。图2-4这里要说明的是,我们对地形的绘制可不同于场景建模,可以说它是场景建模的一部分,或者,干脆算不上什么建模,它能够实现的也仅仅就是地形的编辑而已,如果我们想在这个地面上添加其他的物体,而且这个物体不是Torque引擎本身提供的,这时涉及到的才真正算时场景的建模,这将比地形编辑复杂的多,而且仅仅用Torque引擎也是无法实现的,必须要用到功能更强大的建模软件,这将在后面具体阐述。好,现在我们继续编辑地形。选择Brush Size 可以调整选中的面积。通过移动拖动鼠标就就可以创建一个简单的环形的山脉围着游戏者模型。编辑完小山坡,选择Lighting Tools Full Relight ”来更新光照效。下图(图2-5)便是一个编辑好的简单的环形山脉,但它还没有任何纹理材质可言。图2-5现在我们准备绘制地面。回到摄像头视角并移动到能很好地看到这个山环的地方,选择Window Terrain Texture Painter的选项,我们现在要干的第一件事就是把我们的场景从这个棋盘的地面替换成更接近大自然的地面。按屏幕右侧的纹理窗口中的棋盘子窗口下的“Change”按钮,选择tutorial.base/data/terrains目录下的sand.jpg纹理并按Load键。现在来绘制一些草地。点击sand纹理下面的空纹理窗下面的“Add”按钮。注意,在Terrain Texture Painter中纹理的添加一定要按顺序的。选择“patchy.jpg”并点击Load。点击“Action”菜单我们发现当前动作被自动地设置为“Paint Material”。 现在,当点击地表的时候,刷子区域已经被绘制成“patchy.jpg”纹理了。继续选择更小的刷子来绘制你的小山。绿草区域已经自动和临近的沙子混合好了。图2-6当我们在场景中四处移动的时候,我们发现远处的场景都非常漂亮,但近处的场面纹理都被放得太大了。Torque允许你使用另一种纹理,被叫做细节纹理,是一种在近处看得纹理。先选择Window World Editor Inspector选项,然后选择右上方窗口的MissionGroup组下的Terrain TerrainBlock对象,这种图标的显示方法别叫做“Tree View”。这样做之后,我们会发现地面的数据出现在Tree下方的Inspector窗口。在“Media”区,找到“detailTexture”,按右边的browse按钮(看起来想3点“”)并找到tutorial.base/data/terrains/detail1.png文件。点击Load再看看地面,我们发现,近处的地面变得非常的细腻。图2-7下面我们添加一些物品到这个游戏世界中来。在右下方窗口,用鼠标点Shapes左边的+号展开树状结构,再展开Items。在这里可以看到TorqueLogoItem物品。点击那个对象会在屏幕中央创建一个Torque的三维Logo物体。那个Logo出现后,有个一个黄色的盒子包围着它,这就表示它被选定的(如图2-8)。在它下面的数字是它的ID号,(null)是这个物品名字的占位符,那里还有三根蓝色的线在X,Y和Z轴上,它们可以被按住并拖动这个物品。试试按物品本身拖动它以及按坐标轴来拖动它。图2-8通过上面只有几步的操作,一个游戏的框架已经出来了,这时我们选择File Save Mission As选项,选择“tutorial.base/data/misions”目录,把刚刚做好的工作保存为“myFirstExample.mis”。下次打开示例程序的时候选择这个mis就能够进入游戏了。但是现在,这个游戏什么事情都做不了,我们只能控制一个非常简单又丑陋的机器人在一个什么也没有的世界中走动。这怎么能叫做游戏呢?是的,我们用了很短的时间,没有编写任何代码就做出了一个十分简单并且无趣的游戏。不过,即使是这样简单又无趣的游戏,如果我们不使用游戏引擎而又没有什么游戏编程的经验,恐怕是要用上一两个月才能写出这样的效果吧!2.4、为什么使用torque引擎及安装过程相信您已经看到,Torque Game Engine功能强大,功能丰富,使用灵活而且易于控制。在本书中我们将要做的事情是制作游戏开发中需要的各种素材,然后编写游戏控制脚本,把这些素材联系成一个整体。乍一看这也许并不是什么艰难的事情。不过请记住,我们将担任不同的游戏开发角色。所以必须自行制作各种模型(角色、建筑、装饰和地形),录制各种声音特效,把这些东西安排进我们编造的虚拟世界中,然后设计游戏规则并编写脚本实现这些规则。安装时有多种选择,从最简单的安装一直到完全安装。最小化安装只安装Torque Engine的执行部分和一个示例游戏的文件目录,以及相应的脚本。如果只是想安装Torque Game Engine,而不带任何其他文件、额外的实用工具和示例游戏,那么请按如下步骤安装:(1)打开Torque文件夹(2)找到Setup.exe文件并双击这个文件。(3)单击Next按钮进入到Welcome画面。(4)单击Next按钮进入Destination画面,接受默认的安装路径。(5)在Select Components画面上有一个Full Installation下拉菜单。单击选中该菜单并选择CustomInstallation菜单项。然后单击Next按钮。(6)从Components列表中选择Torque,然后单击Next按钮。(7)在接下来的画面中都只需要接受默认设置,单击Next按钮就行了。第三章 用Torque引擎开发我们的3D游戏通过前面的介绍,我们已经初步掌握了3D游戏设计的基本知识以及Torque引擎的使用方法,那么现在我们就用Torque Game Engine来着手制作属于我们自己的3D游戏了。我们组开发的是坦克大战。游戏的详细介绍见附录A。我们将首先讨论 Torque Script语言,编写用于游戏开发的实际代码。我们将详细讨论代码的运行机制,以此获得对Torque Script运行机制的深刻理解。我们将创建的游戏的名字没有什么新意 Emaga,它实际上只是把agame倒过来拼写。第4章的游戏版本就称为Emaga4。当然,您可以 也可能有必要 将Emaga替换成其他任何自己喜欢的名字!前面已经说过,Torque Script非常类似于C/C+语言,但是两者之间也存在一些差别。Torque Script中不存在类型 惟一的例外是在考虑数字和字符串的时候 而且也不必在声明变量的时候为变量预分配存储空间。使用Torque Script可以控制游戏中的每个环节,从游戏规则和非玩家特征行为到玩家得分统计和车辆运动的模拟,等等。脚本包括语句、函数声明和包声明。在Torque Game Engine(TGE)的脚本语言中,很多语法与C/C+类似,二者之间的关键词集非常相似。然而,和大多数的脚本语言一样,变量不被强制定义类型,而且在使用变量之前也不必预先声明。如果您在对变量赋值之前读取这个变量的值,得到的将是一个空字符串或者是零,具体情况要看是把这个变量用作字符串变量还是数字变量。引擎的规则负责在各种值的脚本表示和引擎的内部表示之间进行转换。大多数情况下一个值的正确的脚本格式是显而易见的;数字是数字,字符串是字符串,标记值true和flase分别用于代表1和0以便增强代码的可读性。更复杂的数据类型将包含在字符串中;使用这些字符串的函数必须知道如何解释这些字符串中的数据。3.1辅助软件-UltraEdit为了编写程序,需要使用文本编辑器,或者程序编辑器。这种编辑器和Word文字处理器有所不同,大多数人使用Word只是用于编写文档、书籍、备忘录以及教堂的通知。能否熟练地使用一个功能强大的编辑器;理解如何创建、编译和运行自己编写的程序;领悟一套解决问题的方法;并逐渐熟悉很具参考价值的调试提示信息和各种调试技术。3.1.1创建项目和文件和其他任何正式的编辑环境一样,UltraEdit-32允许我们以项目的概念来管理用到的文件。在UltraEdit-32中,可以创建虚拟目录并把文件的链接保存到这些目录中。通过这种方式,您就可以以一种快捷的通道访问存放在任何位置包括网络上的某个位置 上的文件!不过,创建项目还是有点繁琐的,可以根据需要决定是否进行创建。为了帮助您创建项目,作者编写了一个实用工具UltraEdit Project Maker(UEPM)。在后面会更多地解释UEPM的使用方法,但是现在还是让我们从头开始手动创建一个项目吧。首先,配置 UltraEdit。请按如下步骤配置UltraEdit:(1) 选择菜单Start| Program Files | UltraEdit | UltraEdit-32 Text Editor启动UltraEdit。(2) 选择菜单Window|CloseAll Files关闭所有已打开的文件。(3) 在UltraEdit中选择菜单View|Views/Lists|File TreeView。在窗体的左边将弹出一个停靠的窗体(见图3-1)。这个窗体是File Tree View。图3-1 File Tree/Project View窗体(4) 在File Tree View窗体中有一个下拉组合框(其右端有一个向下的箭头;见图3-2)。如果组合框中的内容不是“Project Files”,则请单击右端的箭头并在弹出的下拉列表中选择“Project Files”。在名称被设置为Project Files之后,我们将使用Project View来表示这个窗体。图3-2把File List View模式转换成Project View模式(5) 右击Project View窗体中的空白处以弹出一个菜单,在菜单上选择Show Names Only。(6) 如果Project View是自由浮动的(也就是非停靠的),那么请再次单击右键,如果它还没有被选中的话,就选择Allow Docking菜单项。然后把鼠标放在File List View/Project View窗体的标题栏上,按住鼠标左键把窗体拖到UltraEdit窗体的左边。放开鼠标后,Project View窗体将停靠在主窗体的左边,窗体的蓝色标题栏将隐藏起来,而整个窗体的边框也由原来比较厚重的样式变得很薄。(7) 选择菜单项Project|New Project/Workspace。在弹出的对话框中,浏览到C:3DGPAil UESampleProject文件夹。在文件名文本框中输入uesample,然后确认保存类型下拉框中的内容是Project Files。单击保存按钮,将弹出Project对话框。如果系统警告文件已经存在,并询问是否需要保存,请单击Yes按钮。(8) 选中对话框上的Relative Paths和Relative to Project File两个复选框。(9) 单击New Group按钮,在弹出窗体上的文本框中输入SubFolder,然后单击OK按钮。SubFolder项将出现在树形列表中。(10) 选中SubFolder,让它呈高亮显示,单击New Group按钮并在弹出窗体上的文本框中输入SubSubFolder,然后单击OK按钮。SubSubFolder作为SubFolder的子项添加到树形列表中。也许需要单击SubFolder使其左边的加号图标出现,然后单击加号就可以看到SubSubFolder子项。(11) 选择根列表项(由符号-表示)。接下来单击New Group按钮并在弹出窗体上的文本框中输入SubFolderTwo。SubFolderTwo项将出现在树形列表中。(12) 对照图3-3仔细查看您的列表项是否与图中的一样。然后单击Close按钮关闭窗体。图3-3 产生带有层次结构的文件夹(13) 选择File | Open菜单,在弹出的对话框中浏览到C:3DGPAi1UESampleProject文件夹并打开名为sample file 1.txt的文件。以相同的方法打开名为sample file 2.txt的文件。到目前为止应该只有这两个文件是打开的。(14) 通过选择Project|File/Settings菜单项再次打开Project对话框,然后单击选中根列表项。(15) 单击+All Open Files按钮。刚才打开的两个文件将添加到项目的根目录之下。单击Close按钮关闭Project对话框。(16) 关闭两个已打开的文件。(17) 接下来,打开C:3DGPAi1UESampleProjectSubFoldersample目录下的sample file 3.txt文件和sample file 4.txt文件。(18) 现在再次打开Project对话框,选中SubFolder列表项,并单击+All Open Files按钮。(19) 关闭所有已打开的文件。(20)对C:3DGPAi1UESampleProjectSubFolderTwo目录和C:3DGPAi1UESampleProject-SubFolderSubSubFolder目录下的文件,重复(18),(19)两步的操作。确保文件添加后的结构和图3-4中的结构一样。图3-4 Project/Workspace Setup对话框的最终结果在完成上述步骤之后,应该产生一个如图2-4所示的Project Setup对话框,以及一个如图3-5所示的Project View对话框。为了得到和图中所示的对话框一样的效果,可能需要单击文件夹前面的加号图标。图3-5 Project View对话框的最终结果3.1.2查找替换UltraEdit的查找功能非常广泛和全面。我将着重介绍几种最常使用的功能:查找指定的文本、查找指定的文本并进行替换、根据行号跳到某一行,以及使用通配符和模式进行高级查找。为了实践各种功能,请打开UESample项目,并打开名为sample file 1.txt的文件。其中有些文本是从第1章的早期版本中提取出来的,我们可以删除掉。1. 查找选择Search|Find菜单项,系统将弹出Find对话框(见图3-6)。注意确保对话框上复选框的勾选情况和图3-6的情况一样。现在,在文本框中输入需要查找的单词,然后单击OK按钮。Find对话框将隐藏起来,而输入焦点将跳到第一个找到的单词处,并且以高亮显示该单词。试着查找一下“indie”(独立开发人)。图3-6 设置基本查找的Find对话框现在重新打开Find对话框并尝试使用各种选项。注意查找只是针对当前在编辑器中打开的文件进行的。查看各种选项,比如向下(Down)搜索文件,然后再向上(Up)搜索文件。把要搜索的单词变成“INDIE”(全是大写字母),然后再试着查找一下。注意此时仍然能够找到这个单词。但是,如果选中Match Case复选框再进行查找,那么系统将提示错误消息:Search String Not Found。2. 替换选择Search|Replace菜单项,系统就会弹出Replace对话框(见图3-7)。这个对话框和Find对话框有点相似,但带有更多的选项和一个输入替换文本的文本框。图3-7 用于基本查找和替换操作的Replace对话框设置3.1.3 grepUltraEdit的grep功能是在文件中查找和替换文本的高级方式。在前面讨论过的与搜索有关的对话框中,如果选中Regular Expressions复选框,这里选择的是UltraEdit风格的grep的方式。例如:查找与tank有关的文件。按下Ctrl+F,打开Find对话框,然后确保选中Regular Expressions复选框。在文本框中输入game*tank,然后单击Find Next按钮。查找的字符串以“game”开始,以“tank”结束。至于两者之间出现什么样的内容并不重要,因为星号意味着查找会匹配“game”和“tank”之间的任意长度的字符串,只要“game”和“tank”都在同一行上。使用 “computer*game”再查找一次,看看会找到什么。记住可以使用F3作为FindNext按钮的快捷键.UltraEdit风格的grep语法见附录a。3.1.4书签UltraEdit是书签(Bookmark)功能。它的目的是帮助您在一个很大的文件中快速找到标记好的内容。如果在处理文档的某个部分时觉得有可能后面需要返回到这里,只需要在此设置一个书签,然后当处理文档的其他部分时,可以使用Goto Bookmark命令在已经设置了的书签之间跳动直到发现要找的那个为止。这显然比在打开的文件中慢慢滚动以找到某个两小时前曾经处理过的地方要容易得多!要在某行文本上设置书签,只需要把鼠标放在该行文本上然后右击,选择Search|Toggle Bookmark就可以了。设置了书签的文本行将以不同的颜色高亮显示(见图3-9)。在图中,颜色比较浅的高亮行就是设置了书签的文本行。要删除书签,只需要在相应的文本行上右击鼠标,然后再次选择Search|ToggleBookmark就可以了。这将删除该行上的书签。如果要删除所有的书签,选择Search|Clear All Bookmarks,前面设置的所有书签都将消失。图3.8 设置书签的文本行已亮灰色显示3.1.5宏宏命令类似于快捷键。可以把一连串单调的编辑操作编成一个组,这个组被称为宏。建立宏之后,可以通过键盘、菜单或工具栏上的按钮激活。UltraEdit有两种形式的宏 标准宏和Quick Record宏。本书将分别讨论这两种宏,先讨论Quick Record宏。1. Quick Record宏Quick Record宏其实就是一个bare-bones宏函数。(1) 选择Macro|Quick Record菜单项(或者按下Shift+Ctrl+R)。(2) 开始进行所有需要记录下来的编辑操作。这里只要在某处输入文本blahblah blah。(3) 选择Macro|Stop Quick Recording菜单项(或者再次按下快捷键Shift+Ctrl+R)。现在就可以通过把光标放到文本中合适的位置上,然后按下Ctrl+M,或者选择Macro|Play Again菜单项来重复宏中记录的操作。在同一时刻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电力安全常识知识测试题及答案
- 2025年幕墙员工考试题库及答案
- 高铁纵向便道施工合同(3篇)
- 高炮广告牌施工协议合同(3篇)
- 高空作业工程合同模板(3篇)
- 高空门头施工要求合同(3篇)
- 安徽省辅警笔试题型及答案
- 安徽成人高考试题及答案
- 安防知识考试试题及答案
- 出差期间医疗及保险保障协议
- 2025呼和浩特粮油收储有限公司招聘18名工作人员考试参考题库及答案解析
- 新22J01 工程做法图集
- 2024年社区警务规范考试题库
- 《运动训练学》(第二版)PPT
- 小学生仪容仪表课件
- 初中语文中考复习 专题01 名著阅读之《朝花夕拾》(课内文言文+课外文言文)-2022年中考语文一轮复习黄金考点讲练测
- 我国上报数据的民营医院医疗数据统计资料
- GB/T 38207-2019中国地理实体通名汉语拼音字母拼写规则
- GB/T 14181-2010测定烟煤粘结指数专用无烟煤技术条件
- 丹佛斯变频器modbus通讯
- (中职)氯碱PVC生产工艺及设备8项目八 PVC生产教学课件
评论
0/150
提交评论