1 / 132

基于 Torque 引擎的游戏实例开发学习

基于 Torque 引擎的游戏实例开发学习. 基于 Torque 引擎的游戏开发. 雏形游戏 原型丰富 游戏集成. 雏形游戏. 技能、素材准备 开发环境建立 创建简化的游戏场景 添加模型与对象,完成游戏启动与退出 实现基本游戏逻辑,原型测试. 技能、素材准备. 开发环境准备 剧情分析设计 游戏开发训练. 开发环境准备. Torque 功能了解,开发环境熟悉 运行根目录下的 torqueDemo.exe 文件,启动开发运行平台. 剧情设计. 设计一款夺宝 FPS 游戏. 游戏开发训练. 游戏世界中视角的调整

finn-ayala
Download Presentation

基于 Torque 引擎的游戏实例开发学习

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于Torque 引擎的游戏实例开发学习

  2. 基于Torque 引擎的游戏开发 • 雏形游戏 • 原型丰富 • 游戏集成

  3. 雏形游戏 • 技能、素材准备 • 开发环境建立 • 创建简化的游戏场景 • 添加模型与对象,完成游戏启动与退出 • 实现基本游戏逻辑,原型测试

  4. 技能、素材准备 • 开发环境准备 • 剧情分析设计 • 游戏开发训练

  5. 开发环境准备 • Torque功能了解,开发环境熟悉 • 运行根目录下的torqueDemo.exe文件,启动开发运行平台

  6. 剧情设计 • 设计一款夺宝FPS游戏

  7. 游戏开发训练 • 游戏世界中视角的调整 • 进入系统的程序菜单中运行培训实例 Tutorial base 开发环境 • 选择世界编辑器按钮 进入世界编辑器,这时进入的是摄像头视角的游戏世界,这是一个空旷的虚拟世界,还没有人任何生灵和建筑,是世界编辑器的观查界面。 • 选择主菜单的摄像机 Camera 菜单,该菜单的各项有两类作用,上面是调整观查游戏世界的视角,下面是调整玩家或摄像头移动的速度,即视角移动的速度。

  8. 首先要说明的是,如果是玩家视角,玩家的移动是受玩家的行动能力限制的,而如果是摄像头视角,则摄像头的移动是随处都可以去的,比如上天入地,进到人体或建筑物。首先要说明的是,如果是玩家视角,玩家的移动是受玩家的行动能力限制的,而如果是摄像头视角,则摄像头的移动是随处都可以去的,比如上天入地,进到人体或建筑物。 • Drop Camera at Player Alt Q :将摄像头移动到玩家处,并以摄像头为观查游戏世界的视角 • Drop Player at Camera Alt W :将玩家移动到摄像头处并以玩家为观查游戏世界的视角。 • Toggle Camera Alt C :在玩家和摄像头之间切换观查游戏世界的视角

  9. Drop Player at Camera • 如果摄像头在地下时,会出现什么状况呢? • 因为玩家是有重量的而地面是可以托起玩家的,如果玩家在地下了,引擎就认为对玩家没有支撑了,这时,玩家将无限地掉到地心去。 • 解救方法是进行视角的切换用 Toggle Camera ,由玩家视角切换到摄像头视角,然后调整方向将摄像头从地下升上来,然后再执行 Drop Player at Camera将玩家移动到摄像头处。 • 如果摄像头在高空,会出现什么状况呢?

  10. 玩家基本动作控制键的使用 • 视角的移动是通过字母按键 W 、 S 、 A 、 D 来控制的, W 是向前, S 是向后, A 是向左, D 是向右;视角角度的旋转和调整是通过按住鼠标右键,晃动鼠标来进行的。 • 玩家现身 • 在玩家视角中有两种方式一是无玩家方式,即以玩家的眼睛看世界;另一种方式则是以玩家身后的一个假想眼睛看世界,这样就会使玩家现身,玩家是否现身在游戏运行状态下是通过切换键 Tab 来实现的,在开发环境下通过 Ctrl 和 Tab 键来切换

  11. 任务区域编辑器 Mission Area Editor • 任务区域编辑器 Mission Area Editor ,由主菜单的窗口 Window 菜单中给出,用来定义限制玩家移动的区域,这里可以快速调整视角(摄像头或玩家)的位置进行地形的镜像

  12. 美术素材准备 • 选择 Torque 附带的第一人称射击游戏 FPS 的美术素材 • 将环境 environment ,建筑物 interiors 和模型 shapes 目录下的内容保存好以备自己编写游戏时使用

  13. 知识点 • 1 )游戏世界中的视角有两类,其中玩家视角有分为玩家现身和不现身 • 2 )玩家视角时,注意不要掉到地下

  14. 开发环境建立 • 建立自己的游戏结构 • 生成一个自己的游戏任务 • 添加美术素材

  15. 建立自己的游戏结构 • 1 )在标准的 Torque 引擎的安装中,实际的游戏目录是在 Torque/SDK/example 目录中 • 2 )荒原夺宝游戏将以 tutorial.base 目录的培训环境为基础,由此展开游戏的制作,所以复制一份 example 目录 ( 包括它里面所有的内容 ) 出来 • 3 )将 example 目录改为 GameRoot 目录,这个目录是荒原夺宝游戏的根目录,将 tutorial.base 目录改为 Capturetreasure (夺宝)目录,这个目录是游戏制作的目录 • 4 )将游戏根目录下的游戏执行文件 torqueDemo.exe 改为 Capturetreasure.exe 作为夺宝游戏的启动文件

  16. 建立自己的游戏结构 • 5 )将 GameRoot 目录下 main.cs 脚本文件中的默认游戏目录进行如 下的修改 $defaultGame = "Capturetreasure"; 以新的游戏目录 Capturetreasure 代替原来的 tutorial.base 注意: defaultGame 是大小写敏感的,所以确保 Capturetreasure 是以大写字母开头 • 6 )和步骤5)类似,将 Capturetreasure 目录下 main.cs 脚本文件中的默认游戏任务的路径进行如下的修改 $Editor::newMissionOverride = "tutorial.base/data/missions/flat.mis"; 修改为 $Editor::newMissionOverride ="Capturetreasure/data/missions/flat.mis";

  17. 生成一个自己的游戏任务 • 1 )运行启动 Capturetreasure.exe ,在 Torque 开发平台中进入世界编辑器,通过文件菜单 File->New Mission 产生新的游戏任务 • 2 )通过文件菜单 File->Save Mission 保存这个新游戏任务 • 3 )保存在 Capturetreasure/data/missions/ 目录下,命名为 Capturetreasure.mis ,退出并关闭 Torque 开发平台 • 4 )将 Capturetreasure 目录下,main.cs 中的默认任务名改为新的任务名 Capturetreasure.mis ,将函数 onStart 的下面一行 $Editor::newMissionOverride = "Capturetreasure/data/missions/flat.mis"; 修改为 $Editor::newMissionOverride = "Capturetreasure/data/missions/Capturetreasure.mis"; • 5 )再次运行启动 Capturetreasure.exe ,如 图2 所示进入世界编辑器,这样进入的就是刚保存的新游戏任务,即是 荒原夺宝游戏的原始模型

  18. 添加美术素材 • 将环境 environment ,建筑物 interiors 和模型 shapes 目录及其内容复制到 Capturetreasure/data/ 目录下,添加新的美术素材

  19. 知识点 • 1 )根目 GameRoot 下的 main.cs 脚本程序是游戏脚本的入口程序 • 2 ) Torque 开发平台的每个新脚本的编译都需要该平台的重新启动和运行 • 3 )文件菜单 File->Open Mission 同样可以装入游戏任务

  20. 创建简化游戏场景 • 剧情理解: • 根据游戏背景的描述,勇士们夺宝的古城并非鸟语花香、景色宜人的胜地,而是荒草丛生,怪石峥嵘,以藏有无数财宝而著名。作为夺宝游戏,过于简单的场景将使游戏的可玩性大打折扣。因此,在游戏的地形设计上,需要考虑能烘托出恶劣、凶险、变化多端的夺宝环境为宜。当然,宝物的设置必不可少。

  21. 创建简化游戏场景 需求分析: 根据游戏需要,本任务的核心是实现游戏的基本地形并在不同地点设置宝物。通过对剧情的理解,游戏场景需要设计为恶劣、凶险、变化多端的夺宝环境。因此,在游戏场景的实现上使用三种类型的地面:杂草丛生的荒草地、一望无际的绿地及粗犷荒芜的沙漠。玩家每次加入战场都会从大本营内出现,作为玩家出生地点选择较为平坦的绿地,便于玩家进入游戏熟悉环境。为了丰富游戏的场景,增加环境的复杂度,将为游戏准备不同类型的游戏模型,如树、建筑物和桥等。除此之外,需要准备在场景中随机放置宝物。

  22. 创建简化游戏场景 • 方案设计: • 对于游戏地形的实现,可直接使用 Torque 引擎中的地形编辑器实现。 • 对于增加场景复杂度的游戏模型及玩家需要抢夺的宝物,可先将这些模型资源准备好,分类放在合适的游戏目录中。 • 通过 Torque 引擎添加静态模型。

  23. 创建简化游戏场景 关键技术: • 地形编辑器的使用 • 静态模型的添加

  24. 创建简化游戏场景 初步创建游戏的场景 • 1 )使用主菜单的窗口 Window->Terrain Texture Painter 渲染游戏的地面,使用三类画面,荒草 patchy.jpg 、绿地 grass.jpg 和沙漠 sand.jpg • 2 )使用主菜单的窗口 Camera->Toggle Camera 使用玩家视角,使用主菜单的窗口 Action->Excavate 和 Flatten 将玩家出生的地方整理的比较平坦,注意,不要将玩家埋没,只有在渲染条件下主菜单才有 Action 项

  25. 创建简化游戏场景 初步创建游戏的场景 • 3 )使用主菜单的窗口 Window->World Editor Creator F4 在窗口右下角按照 图1 的方式,在玩家出生的脚下添加一Logo ,以便找到自己的位置。见 图1 • 4 )使用主菜单的窗口 Window->World Editor Creator F4 在窗口右下角按照 图2 的方式,在开发平台上添加树的目录 trees ,然后在里面添加各种树

  26. 创建简化游戏场景 初步创建游戏的场景 • 5 )根据需要可以多建几个目录,例如再建一个 placeEnviron 用来包含其他场景 • 6 )添加一个 logos 目录,在该目录下添加几个 Shapes\items\ 下的 logo 模型。该模型将作为后面的宝使用 , 如 图5 所示的游戏场景的目录结构 • 7 )使用主菜单的窗口 Files->Save Mission… Ctrl S 将场景建立结果保存到 Capturetreasure/data/missions/ 目录下的 Capturetreasure.mis 文件中

  27. 添加模型对象,完成游戏启动与退出 • 1 .添加模型对象,将一个卵石添加为一个 Item 模型对象以后作为宝石 • 1 )修改 Capturetreasure/server/logoitem.cs ,将 logoitem+.cs 中的程序添加上,建立模型目录下的新的模型分类 Boulders • 2 )将 item.cs 复制到 Capturetreasure/server/ 目录下,并在 game.cs 的 onServerCreated() 函数的末尾添加 item.cs 的加载执行, exec("./item.cs"); • 3 )重新启动游戏开发平台,就可以在 shapes 目录下看到 Boulders 类,及其里面的 boulderitem 模型。见图1 • 4 )在游戏场景的适当位置添加该模型,并将它们组织为一个宝石组,命名为 boulders 见 图2

  28. 添加模型对象,完成游戏启动与退出 • 2 .建立游戏的启动按钮 1 )通过 F10 进入界面设计窗口 2 )在新控件中选择 GuiButtonCtrl 按钮,见 图3 3 )在右下方属性框中找到 Misc 节的 text 项,并把输入在按钮上希望显示的文字“ GameStart ”并点击“ Apply ”。现在按钮上显示的就是“ GameStart ”了,见 图4 4 )在 Parent 节的 command 项中填入“ loadMyMission(); ”并点击“ Apply ” 5 )修改 loadMyMission() 函数,保证它装入的是需要的任务 Capturetreasure.mis 该函数位于 Capturetreasure 目录下的 main.cs 文件的末尾。 6 )保存新的启动界面,到 Client/ui/mainMenuGui.gui ,见 图5 7) 退出后重新启动则在启动界面上就可以通过 GameStart 按钮,进入游戏。 8 )采用同样的方式可以加入游戏退出按钮,区别是在退出按钮的 Parent 节的 command 项中填入“ quit (); ”即可

  29. 知识点 1 )界面控件的添加及属性设置 2 ) loadMyMission() 函数的作用和修改 3 )用户函数和系统函数的使用

  30. 设计、实现基本游戏逻辑 • 剧情理解: • 在游戏中,玩家最后的胜利取决于通过夺宝赚取的分数。玩家每成功夺宝一件,分数将自动增加,各种宝物的分值不等,分数的多少显示了占有宝物的价值。

  31. 设计、实现基本游戏逻辑 • 需求分析: • 本任务初步实现玩家夺宝和分数的增加。游戏中,需要在一个显眼的位置设置一个显示分数的计分器。该计分器能够实时更新玩家的夺宝状况。在宝物被某一玩家夺取后,根据情节需要,应使该宝物自动消失,游戏显示结束。

  32. 设计、实现基本游戏逻辑 • 方案设计: • 对于计分器的添加,使用GUI控件中的GuiTextCtrl文本框。 • 对于宝石夺取后的消失、计分器分值的增加等逻辑的实现需要在服务器端添加加分和程序结束判断的脚本程序及在客户端添加分数显示和结束处理脚本程序。

  33. 设计、实现基本游戏逻辑 • 关键技术: • 界面控件的添加及属性设置、加分逻辑的分析与实现、宝石抢夺结束的判断及处理、分数显示及游戏结束或重新开始的提示。

  34. 记分器的实现 • 基本游戏逻辑要实现的是每一个抢到宝石的要加 1 分,方法如下: • 1 )进入 GUI 界面编辑器。启动游戏,使其处于运行状态。键入 F10 进入 GUI 界面编辑器;进入后,在该编辑器上方中间, GUI 文件选择下拉菜单中,选中的 PlayGui 文件就是游戏世界的界面文件,如 图1 所示

  35. 记分器的实现 • 2 )添加分数计数器。在编辑器上方的第一个“新控件选择 New Control ”下拉菜单中选择 GuiTextCtrl 。在编辑器右侧上方的树形视图上,确定该新控件被选重,

  36. 记分器的实现 • 3 )设置记分器属性。该文本控件用作记分器,在右下方的属性窗口中把这个控件重命名为“ ScoreCounter ”(在 Apply 按钮旁边的输入框)。点击 Parent 节中的 profile 按钮,选择 GuiBigTextProfile ,使记分显示大文字。在 General 节的 text 域里填入“ Score: 0 ” , 设置初值,并点击 Apply ,如 图3 所示,这时在游戏界面上,可以看到这个显示较大字符的记分器了,如 图4 所示

  37. 记分器的实现 • 4 )调整记分器位置。把它放在一个看起来舒服的位置,并检查它在不同分辨率下的显示效果。可以把 HorizSizing 和 VertSizing 都设置为 relative 。使得记分器的相对位置不变。选择 File 菜单的 Save GUI …选项,把它存放在“ Capturetreasure/client/ui/playGui.gui ”目录,如 图5. 所示

  38. 记分器的实现 • 5 )在编辑界面中修改这个 playGui.gui ,在主控件定义的最后一行添加 nocursor = "1"; 保证鼠标能够指挥摄像机 • 6 )添加并保证加载加分程序。由教学网站上得到该套路的服务器端加分程序 logoitem+.cs ,将代码粘贴到 Capturetreasure /server/logoitem.cs 文件中并保存它。 • 7 )添加并保证加载分数显示程序。由教学网站上得到该套路的客户端分数显示程序 clientGame.cs ,将其拷贝到 Capturetreasure / client/ 目录下

  39. 记分器的实现 • 8 )打开 Capturetreasure /main.cs 文件并找到 initClient 函数里的“ Client scripts ”节。在这节代码行的下面添加下面一行代码,保证正确载入和执行 clientGame.cs 脚本文件。 exec("./client/clientGame.cs"); • 9 )重新启动游戏,当玩家碰到宝石时,宝石将不见了(表示已经获得了宝石),并在记分器中加 1 分。当全部宝石抢夺完毕后将显示结束游戏或重新开始的提示框,如 图6 所示

  40. 知识点 • 1 )界面控件的添加及属性设置 • 2 )加分逻辑的分析与实现,宝石抢夺结束的判断及处理 • 3 )分数显示及游戏结束或重新开始的提示

  41. 脚本程序 • 1 )服务器端加分和程序结束判断程序( logoitem+.cs ) • 2 )客户端分数显示和结束处理程序( clientGame.cs )

  42. 原型丰富 • 场景丰富 • 声效添加 • 玩家特性 • 环境仿真 • 界面友好

  43. 场景丰富 • 添加篝火与瀑布场景 • 实现爆炸效果

  44. 添加篝火场景 • 1 )将脚本程序中的 Particls.cs 复制到 Capturetreasure/server/ 目录下,在 game.cs 的 onServerCreated() 中添加该脚本的加载执行, exec("./particle.cs"); • 2 )将美术素材中的两个图片复制到 data/shapes/particles/ 目录下 • 3 )重新启动游戏开发平台,在图形界面下建立篝火和烟(见 图1 ,图2 ) • 4 ) 建立火的发射器节点对象 fire01 ,如 图1 所示 • 5 ) 建立烟的发射器节点 smoke01 ,如 图2 所示 • 6 )通过修改烟的位置坐标调整烟火的位置,使两者配合得当 • 7 )如此可以根据需要建立相应的火和烟,例如可以建立灯火,如 图3 所示

  45. 添加瀑布 • 1 )将脚本程序中的 waterFall.cs 中的脚本复Particls.cs 的后面 • 2 )重新启动游戏开发平台,在图形界面下建瀑布(见 图4 ) • 3 ) 建立瀑布的粒子发射器节点 wfall01 ,如 图4 所示 • 4 )一个优美的瀑布一般可以多用几个 瀑布的粒子发射器节点, 图5 就是两个粒子发射器给出的瀑布 • 5 )通过修改位置坐标调整瀑布的位置,如 图5 所示 • 6 )如此可以根据需要建立相应的瀑布

More Related