游戏引擎:游戏引擎剖析( 9)

原文作者:Jake Simpson
译者: 向海
Email:[email protected]


第9部分: 现成产品和定做游戏引擎设计工具游戏特定主题


现成产品和定做设计工具
  我们从第8部份脚本引擎来到这章节中许多主题我们认为那些铁杆游戏玩家和有志成为游戏开发者那些人将会发现它们相当有趣我们将开始讨论现成产品和定制设计工具

  你工具选择是你引擎设计个非常重要部份这是你将用来给你游戏产生内容东西是最耗时部份在这个过程中有助于节省时间和资源任何东西都是好那些不能东西就是糟糕在那里那是容易

  当然没有那么容易有比这更多事情可能会立刻被注意到工具集选择和从工具到游戏资产路径比它听起来更有窍门技巧得多并受到很多原因影响比如是否适宜手边工作费用内容生产者熟悉市场渗透工具支持等等当考虑选择现货成品工具或者即使当开发你自己工具时记得开发者实际在做工作最好能够做需要借助工具做些现货成品工具能在价格上达到那里当你陷入多个拷贝许可时费用猛涨

  然后就有诱人可能性从头制造你自己工具为你游戏和引擎需要而设计这当然需要时间员大量努力来产生在开发者友好方式中所需要东西快速打造基于窗口文件转换器是回事情从头建造个完整关卡设计工具又是另外回事情方面如果你确实选择这条道路最后你会有游戏开发者地带其他人没有工具因此你东西将会看起来是独特如今和众区别是件非常值得想望事情而且从群众这些天起突出是件非常令人想要事物产生所有竞争

  当然由于内部工具开发你需要某人来做所有那些不可避免改变和修正但这里真正意义是这是可能使用现成工具工具开发者会很少你需要些特征而改变他们输出文件格式这样你东西最后看起来更加通用否则你必须采用额外步骤使用另外工具来得到想要结果当然会花费开发者更多时间

  值得记住是如今许多有名3D工具已经有段时间历史了并且正在产生简直没有产品更重要对他们所做已经有定程度经验了

  如果你选择建造你自己工具多半你是a) 重新创造车轮到某种程度 b) 陷入那些建造现成工具人们已经遇到过相同问题的中只是他们已经解决了这些问题时常人们建造个单特定工具花费了相当时间和努力并产生了个远远超出你自己个人需求工具还有他们有代表性地收编了些你或者认为是没有用或者没有时间自己实现特征加上他们典型地有吸收特征你或会没有想有用,或没有时间实现你自己. 这是第 3方软件Software无法争辩


插件和目建造工具
  通常大多数游戏开发过程最终都是这样混合自己开发文件转换器工具现成内容创造工具和通常那些要增加些必须特殊功能工具些附加插件现成工具在提供你不可避免会需要功能方面有很长段时间了但是正如不可避免总有些很有用有帮助或者完全必须东西你不能得到个小插件可能是个很好替代品而且时常那就是所走过为特定目建造预处理也是可用比如把TGA文件转换为个对PS2友好格式或者那些相关东西

  如果你或你公司打算建造某种类型游戏工具那么这些工具般是从个项目到个项目地演变发展而不是每次都从头重新建造如果你变换游戏类型很好那些产生具有每个多边形命中能力高分辨率模型工具明显地不是款RTS(即时战略)风格游戏所必须

  Gil GribbRave Software技术带头人对‘现成工具’和‘自己动手建造’问题是这么说:

  "自己开发工具有能够根据自己产品需要进行定制优势你拥有代码可以修正任何或者增加任何改进

  自制工具缺点是建造和维护它们是非常昂贵通常成本要比现成工具高很多在许多情况下由于应用范围缘故建立自己工具是完全不可能比如说3D建模和动画软件Software包或者位图编辑软件Software"

  当然如果你想要游戏玩家能够修改你游戏而且你自己建立了所有工具那么你就必须要向世界发布这些工具这可能会引起点点疑惑记住建立你自己工具部分原因是你可以领先你竞争者有时侯发布这些工具源代码甚至可能让你获益匪浅这确实提供了种创造内容思路方法再次Gil Gribb阐述这个主题:

  "我是支持发布几乎所有源代码我认为我们没有任何来自我们竞争者害怕事情合法业务不会想到窃取知识产权游戏迷业余游戏制作者以及游戏普及都能够从发布源代码获益"

  好我们游戏引擎剖析系列到这里当然我们已经特别讨论了许多和引擎相关主题下面让我们继续讨论些和游戏特定相关部分


游戏控制机制
  控制机制能够对开发中游戏带来巨大差别有时甚至表明你正在建立游戏种类或者风格

  尝试在某个时候用gamepad玩个即时战略类游戏--它不只没有乐趣有时当你被限制在个特定输入装置时候例如鼠标和键盘为你游戏发明新控制思路方法会是个令人筋疲力尽过程当Raven开始开发Heretic II时他们决定做件事情的就是为用鼠标使用第 3人称照相机尝试和找出个直观思路方法在这以前大多数游戏采用是Tomb Raider风格照相机(第 3人称预兆追逐)他们发现这时常不能正确地工作在很多情形下会给玩家带来挫折照相机时常会得到任意视角如果可能话移动相机而且有时改变玩家方向

  假定他们目标对象是FPS游戏人群Raven需要找到个对FPS游戏玩家来说直观控制乌鸦座(Corvus)方式他们这样做了但确实花费了些时间些区别方式—他们应当让照相机固定在个方向吗或者让它是浮动吗?大多数游戏开发努力—除非个确定类型游戏个没有虚饰实现—倾向于花费些研发找出物理控制装置和游戏需要内部控制机制最直接合并这里是个暗示—旦你发现个方式很起作用就坚持下去用这种方式控制游戏内在东西能把视野直觉甚至游戏焦点完全改变成你从未想要过东西发现起作用东西证明它起作用然后就别管它过分设计控制会导致特征偏离和可察觉游戏概念问题

  像这类特征偏离个很好例子可以在Independence War中看到这款游戏有着如此多模式按键等等仅仅熟悉和操纵游戏都不可能

  很明确这里关键是简单个好经验法则是在正常游戏中如果你游戏需要比在普通gamepad按键或者你手上手指更多按键那么些事情需要被重做注意, 我不是说款游戏不应该有灵活性—Soldier of Fortune必定有许多可能按键设定但通常当你认为它们大多数实际上都是不需要时候Quake引擎有个很好方式你可以选择你想要使用什么武器但你不是必须这样游戏将会自动地为你那样做这就是灵活性和过度设计的间区别如果游戏需要你按下某个键来选择个武器那将会有问题你理解这个了吗?

  控制机制不能被过高估价 -- 款游戏时常将会根据玩家觉得他们对事件或者主要角色有多少控制而获得成功或失败如果控制被改变重新定向或仅仅简单地从他们哪儿移除它能导致游戏自身缺乏参和不用说那是件很糟糕事情在这上面花费时间并让它保持简单将会有巨大帮助


实体和照相机
  现在我们来到了引擎不太令人愉快部份也是定义得最少部分当游戏运行时候游戏在这个部分能变得极端地多出错耗时间或仅彻底极限

  在这里我们所谈论是游戏引擎 "游戏" 部份这个部分使用所有其它技术让些事物显示在屏幕上到处移动让它对你产生反应并且让你对些事物产生反应这个系统有许多思路方法但现在我将紧扣Quake思路方法那是我最熟悉

  让我们从实体开始这些可以被定义为‘游戏对象’现在那不仅仅意谓你在屏幕上看见模型虽然实体确定地控制这些 -- 实体也可能是其他事物基本上它是游戏在任何给定时间需要知道任何事物例如让事情继续进行定时器模型碰撞检测盒特效模型游戏玩家等等

  甚至照相机都可能是实体(在几乎所有Raven产品中都是这样)照相机在世界中被分配个有角度原点它们每幀都被刷新并告知渲染器应该从哪里得到它视野数据and off we go典型地实体是为了返回到游戏早先状态而被存储和装载那些东西通常在装载过程中使用思路方法是把游戏地图装载进来好像你正在重新开始个关卡然后装载所有存储实体这样他们就返回到游戏存储时它们状态Voila即刻返回个存储游戏当我理解Heretic II思路方法时这并不是那么容易—装载/存储几乎比其他任何事情带给我问题还多特别是在协作模式

照相机有许多形式:

  自由形式:照相机能去任何地方
  脚本:照相机可以沿着条设定路径前进
  游戏时间:照相机有必须要遵循定义行为

  仅仅说"嗯我将仅仅跟随主要角色"是不够这意谓你也可能需要让照相机穿过墙壁或让它按些方式移动以致甚至引起些胃恶心让它沿着些定义上下运动路径前进也有益处如同任何玩Descent游戏超过小时人可以告诉你身体和头部习惯于上下是个静态变量并当它不是时他们不喜欢它制作Quake 1 Mike Abrash曾经告诉我即使当它被定义他仍然处理 麦可 Abrash 地震 1,曾经告诉我即使当它被定义,他仍然从他们正制作游戏感到运动恶心他提到对于他来说离开制作Quake 1年时间才让他胃安定下来啊哈我们所作出牺牲


武器系统
  游戏模块另外个部份是武器系统大多数游戏有武器系统或类似东西 这是在世界中影响其他物体而且使他们对给定情形产生反应东西--比如说被射击通常武器系统由许多区别类型组成;攻击扫描基于飞弹以及范围形式

  攻击扫描是直接攻击武器在屏幕上他们产生效果只是那样个效果当使用它时候和武器实际操作没有任何关系当你用手枪开火时子弹被认为立即穿过世界并直接击中在它运动轨迹上任何人/事物

  基于飞弹武器有个占用有限时间穿越世界真实射弹从而带给对方些可以躲避时间

  基于范围武器像手榴弹和炸弹东西不必击中就可以伤害到你;你只是必须处于爆炸范围内处在那种爆炸范围内玩家受到飞溅损害熔岩是另外种形式基于范围武器

  那么你如何决定什么被击中而什么没有被击中呢?很好这个问题把我们带到了追踪我们将在接下来物理学和人工智能章节更多接触追踪这是例程当给定世界中条从A点到B点直线时比如从枪末端到预先定义距离它告诉游戏什么被击中追踪很棒但很昂贵他们必须对那条线上所有多边形进行‘碰撞检测’来看是否有什么地方被击中更不用说模型和其它对象了这也是些物理学工作方式个给定角色做个笔直向下跟踪可以知道地板位于什么地方肆意滥用追踪 — 如在游戏幀中多次使用它们 -- 对于今天许多游戏速度下降是有责任在Jedi Knight II:Outcast他们光刀战斗已经遇到了这个问题他们不仅需要知道光刀是否击中了某处什么和它现在位置而且对于它们的间所有点都得这样他们对光刀做了多次追踪


  好吧个章节结束了仅仅剩下两个章节了下面我们介绍人工智能和搜索更多细节
Tags:  游戏搜索引擎 游戏引擎启动异常 什么是游戏引擎 游戏引擎

延伸阅读

最新评论

发表评论