《游戏引擎架构》笔记十三

游戏性系统简介

游戏引擎是复杂的多层软件系统,而游戏的本质,并非在于其使用的引擎或技术,而是其游戏性(gameplay)。游戏机制(game mechanics)一词,可以把游戏性这个概念变得更为具体。游戏机制通常定义为一些规则,这些规则主宰了游戏中多个实体之间的互动,如定义玩家的目标、成败的准则、角色的各种能力、游戏体验的整体流程等等。本文将简单介绍用于定义及管理游戏机制的引擎系统及相关工具。

剖析游戏世界

游戏类型虽然五花八门,但大多数会有一种基本的结构模式,通常由以下部分组成:

  1. 世界元素

    • 静态元素:地形、建筑等等几乎不会动或主动与游戏性交互的物体
    • 动态元素:角色、NPC、道具、粒子特效、动态光源、区域等等
    • 区分静态和动态元素,主要是用于优化性能——若物体的状态不变,就可以减少对它的处理。
    • 有一些游戏含有可破坏环境,算是模糊静态和动态元素分界的例子,说明元素是否静态并不是绝对的
  2. 世界组块:庞大的游戏世界通常会被拆分成为独立可玩的区域,可以演化成关卡、地图、地区等等。分割关卡有几个原因,首先是内存限制;其次它也是一个控制游戏整体流程的方便机制;最后它可以作为分工的单位,方便开发团队分别构建及管理。
  3. 高级游戏流程:指由玩家目标所组成的序列、树或图,可演化成任务、关卡、波(如塔防波次)、胜利条件或失败惩罚。在故事驱动的游戏中,流程可能也包含多个游戏内置电影、过场动画。

实现动态元素:游戏对象

游戏的动态元素通常会以面向对象方式设计,游戏对象的实质是属性(对象的当前状态)和行为(如何应对事件、随事件变化)的集合。

游戏对象模型

  • 游戏的对象模型是一种特定的面向对象编程接口,用于解决开发某个游戏中的一些具体实体的个别模拟问题。
  • 游戏的对象模型常会扩展编写引擎本身的编程语言。
  1. 工具方对象模型:一组设计师在世界编辑器里看到的游戏对象模型。
  2. 运行时对象模型:程序员用任何语言构成成分或软件系统把工具方对象模型实现于运行时的对象模型。

数据驱动游戏引擎

当游戏的行为可以全部或部分由美术设计师及游戏设计师所提供的数据控制,而不是由程序员所编写的软件完全控制,则该引擎称为数据驱动。

每个游戏引擎都应该有部分数据驱动的部件,但是要谨慎的选择把引擎的哪些部分设为数据驱动。

游戏世界编辑器

典型功能

游戏性内容对应的创作工具便是游戏世界编辑器,其用于定义世界组块,并填入静态及动态元素。所有商用游戏引擎都有某种形式的世界编辑工具,大部分会提供以下列出的主要功能。

  • 世界组块创建及管理:除了组块管理基本功能外,还可以连接若干静态网格,以及AI用的导航地图、可攀抓边缘信息等等静态数据。有的还提供专门的地形编辑器用于编辑地形(或解析高度场地形)和水体。
  • 可视化游戏世界:可让开发者大幅提高开发效率,通常3D游戏提供顶、侧、正视图和三维透视视图4部分,2D游戏提供正射视角。有的编辑器直接整合自制的渲染引擎至工具中,有的把自身整合至第三方3D软件,有的会通过与实际的游戏引擎通信,利用游戏引擎来渲染三维视图,甚至整合至游戏引擎本身。
  • 导航:提供滚动、放大缩小、聚焦某个对象旋转、摄像机飞行模式、记录历史摄像机位置并跳转等等方便开发的功能。
  • 选取:在编辑器中可以选取个别或框选多个游戏对象,并对它们批量操作。使用光线投射方式选取三维对象时,编辑器可让用户循环选取与光线相交的所有对象,而不是总选取最近者。
  • 图层:把对象用预设或用户自定义的图层来分组,把游戏世界中的内容有条理地组织起来。图层也是分工的重要工具,多人可以在同个世界组块上的不同图层工作而不冲突。
  • 属性网格:可视化编辑游戏对象通常有多个属性(一般是键值对),这些属性一般仅限使用简单的院子数据类型。编辑器提供多种方法编辑。

    • 选取多个对象后的编辑方式:此高级特性把选中的对象的共有属性混合在一起显示。在网格中编辑公共值时,会把新值更新至所有选取对象的属性中。
    • 自由格式属性:通常这种属性集会关联到某个用户自定义的对象,以形成新的“自由格式”属性,如光源属性集包含位置、方向、颜色、强度及光源类型属性。
  • 安放对象及对齐辅助工具:除了基本的平移、旋转、缩放工具外,有的编辑器还提供对齐至网格,对齐至地形,对齐至对象,多个对象分布或对齐等功能。
  • 特殊对象类型
    • 光源:通常用特殊图标表示,因为光源没有网格。编辑器可能会尝试模拟光源对场景的照明效果,让设计师能实时调整并能看到场景的最终大致效果。
    • 粒子发射器:若编辑器是独立于渲染引擎之上,则可简单用图标表示,或尝试在编辑器中模拟效果;若编辑器是内置于游戏引擎,则可以实际模拟调整,达到“所见即所得”的效果。
    • 区域:即空间中的体积,供游戏侦测相关事件用(如Unity中的trigger)
  • 读/写世界组块:有的引擎把每个组块储存为单个文件,有的可以独立读/写个别的图层;有的引擎使用自定义的二进制文件格式,有的使用如XML的文本格式。
  • 快速迭代:优秀的编辑器会支持某程度的动态微调功能以供快速迭代。有的编辑器在游戏本身内执行,让用户即时看到改动的效果,有的连接至运行中的游戏,或完全脱机运行。具体的机制并不重要,最重要的是给用户足够短的往返迭代时间。

集成资产管理工具

有些引擎的编辑器会整合游戏资产数据库的其他方面功能,例如设定网格/材质的属性、设定动画/混合树/动画状态机、设置对象的碰撞/物理属性、管理材质资源等,著名的例子有UnrealEd和Unity。它们能对用户提供统一、实时、所见即所得的资产管理视图,促进快速高效的游戏开发过程。

不同的工具对资产的优化时间点也不一样。

  • UnrealEd在导入资产时就会对资产优化,这样在关卡设计上能缩短法代时间,但是改动网格、动画、音频等来源资产会变得更痛苦。
  • Source及雷神之锤引擎,把资产优化延后至烘焙关卡、执行游戏之前。
  • 《光环(Halo)》给用户选择在任意时刻转换原始资源——这些资源在第一次载入至引擎前转换至优化格式并缓存,避免每次执行游戏时都要再做无意义的转换。
时间: 2024-10-08 18:29:17

《游戏引擎架构》笔记十三的相关文章

游戏引擎架构笔记之基础

此书获誉无数,第一版没看过,直接看的第二版,然后大致看了一眼作者提到的和第一版的区别: 1.C++语言方面的最新进展,也就是C++ 11的标准:第八代主机游戏的架构,XBOX ONE和PS4 2.鉴于音效机制的巨大作用,作者增加了几章关于音效方面的内容. 3.修复了第一版中的一些错误. 我室友才买这本英文书没多长时间,就出新版本了,不知道杂说好,只能说好贵. 作者期望这本书能包括以下内容 1.工业级的游戏引擎是如何架构出来的? 2.游戏开发团队是如何被组织起来的,如何运转的. 3.世间有无数的游

游戏引擎架构笔记之逐层设计

软件设计最底层是什么?当然是硬件平台了.书里其实有点迷惑,说硬件呢,为啥要说Microsoft Windows, Linux and MacOS-based PCs这种系统呢?其实目前的PC,应该可以安装各种系统吧.我想这一层是硬件设备.包括桌面计算机(PC,当然也包括笔记本吧),手持设备包括各种的phone,pad,主机游戏设备XBOX,PS,WII等.这一层能考虑什么呢,首先手持设备的特性,尤其像wii之类特殊的,还有屏幕分辨率等都是要考虑的,另外设备升级,比如增加了方向盘,或者头盔显示器,

《游戏引擎架构》读书笔记1-游戏引擎中的C++

3月底,我暂时结束了北京的工作,从原来的公司离职,主要是为了学习游戏开发的底层知识和3D引擎相关的内容,并进行技术转型,为了鞭策自己的学习,未来博客更新会比较频繁,现阶段主要是<游戏引擎架构>读书笔记系列和unity学习笔记系列. <游戏引擎架构>在两年前就买了,而且自己也大体的看过一遍,因为自己想学习引擎的底层知识,所以重新又找出了这本书再读一遍,并把根据自己的理解写一些读书笔记在这里与大家交流,另外因为想有一个新的开始,近期都会在博客园这里写技术博客了,前些日子搞了个自己的网站

游戏引擎架构读书心得(一)

最近在读<游戏引擎架构>这本书,虽然感觉理论颇多,而且很多很多东西都看不懂,不过还是简单的把一些感觉很好的思想和方法或者概念记录下来. 1.      关于各个部件初始化,一个最简单粗暴的办法就是将各个部件按顺序排列起来,不但可以方便的看到初始化顺序,而且修改也十分容易. 2.      关于内存分配: a)        游戏中最常见的法则是-维持最低限度的堆分配,并且永远不在紧凑的循环中使用堆分配. b)        定制的内存分配器,先预先申请一大块内存,然后构建自己的内存分配器(st

游戏引擎架构.pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容简介编辑[1]  <游戏引擎架构>同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨.本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗.虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API.文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向.<游戏引擎架构>为一个大学程度的游戏编程课程而编写,但也适合软件工程师.业余爱好者.自学游戏程序员,以及游戏产业的从业人员.通

游戏引擎架构 PDF下载

网盘下载地址:游戏引擎架构 PDF下载 – 易分享电子书PDF资源网 作者: [美] Jason Gregory (杰森.格雷戈瑞) 出版社: 电子工业出版社 原作名: Game Engine Architecture 译者: 叶劲峰 出版年: 2014-1 页数: 800 定价: 128.00元 装帧: 平装 内容简介 · · · · · · <游戏引擎架构>同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨.本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗.虽

《游戏引擎架构》读书笔记(四)

一.游戏性系统 (1)游戏世界一般分为静态元素和动态元素,静态元素和动态元素有时候没有特别明显的分界线.但是静态元素消耗资源较少,可以用笔刷等工具绘制静态元素. (2)游戏世界一般分为各个组块,如关卡,地图,地区等.建立在这之上的是高级游戏流程,即玩家的目标,比如任务. (3)游戏动态元素通常以面向对象的方式进行设计,通常称为游戏对象(Game Object),实体(entity),演员(actor)或者代理人(agent)等. a)游戏对象通常会扩展引擎本身的语言,加一些高级功能比如反射,并且

《游戏引擎架构》笔记十二

碰撞及刚体动力学 一些碰撞/物理系统:http://www.gamedev.net/community/forums/topic.asp?topic_id=463024 I-Collide:http://cs.unc.edu/I-COLLIDE SWIFT: ODE:http://www.ode.org Bullet:http://code.google.com/p/bullet/ TrueAxis:http://trueaxis.com/ PhysX: Havok: PAL:http://ww

游戏引擎架构

游戏编程分为游戏逻辑和游戏引擎.游戏引擎是一套可重复利用的底层框架.包括渲染引擎.声音引擎.网络引擎等等.现提供一套游戏架构,从底层向上分别为: 硬件.驱动.操作系统. 第三方软件开发包:DirectX.OpenGL,Boost.STL库,Granny.Havok.Animation等. 平台独立层:集合.迭代器.文件系统.网络传输层.线程库.物理碰撞包裹类. 核心系统:模块启动终止.断言.单元测试.内存分配.数学库.调试用打印及日志.性能剖析.引擎配置.异步文件. 资源(游戏资产):三维模型资