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

乘风有时 乘风有时     2022-09-30     795

关键词:

游戏性系统简介

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

剖析游戏世界

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

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

实现动态元素:游戏对象

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

游戏对象模型

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

数据驱动游戏引擎

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

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

游戏世界编辑器

典型功能

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

  • 世界组块创建及管理:除了组块管理基本功能外,还可以连接若干静态网格,以及AI用的导航地图、可攀抓边缘信息等等静态数据。有的还提供专门的地形编辑器用于编辑地形(或解析高度场地形)和水体。
  • 可视化游戏世界:可让开发者大幅提高开发效率,通常3D游戏提供顶、侧、正视图和三维透视视图4部分,2D游戏提供正射视角。有的编辑器直接整合自制的渲染引擎至工具中,有的把自身整合至第三方3D软件,有的会通过与实际的游戏引擎通信,利用游戏引擎来渲染三维视图,甚至整合至游戏引擎本身。
  • 导航:提供滚动、放大缩小、聚焦某个对象旋转、摄像机飞行模式、记录历史摄像机位置并跳转等等方便开发的功能。
  • 选取:在编辑器中可以选取个别或框选多个游戏对象,并对它们批量操作。使用光线投射方式选取三维对象时,编辑器可让用户循环选取与光线相交的所有对象,而不是总选取最近者。
  • 图层:把对象用预设或用户自定义的图层来分组,把游戏世界中的内容有条理地组织起来。图层也是分工的重要工具,多人可以在同个世界组块上的不同图层工作而不冲突。
  • 属性网格:可视化编辑游戏对象通常有多个属性(一般是键值对),这些属性一般仅限使用简单的院子数据类型。编辑器提供多种方法编辑。
    • 选取多个对象后的编辑方式:此高级特性把选中的对象的共有属性混合在一起显示。在网格中编辑公共值时,会把新值更新至所有选取对象的属性中。
    • 自由格式属性:通常这种属性集会关联到某个用户自定义的对象,以形成新的“自由格式”属性,如光源属性集包含位置、方向、颜色、强度及光源类型属性。
  • 安放对象及对齐辅助工具:除了基本的平移、旋转、缩放工具外,有的编辑器还提供对齐至网格,对齐至地形,对齐至对象,多个对象分布或对齐等功能。
  • 特殊对象类型
    • 光源:通常用特殊图标表示,因为光源没有网格。编辑器可能会尝试模拟光源对场景的照明效果,让设计师能实时调整并能看到场景的最终大致效果。
    • 粒子发射器:若编辑器是独立于渲染引擎之上,则可简单用图标表示,或尝试在编辑器中模拟效果;若编辑器是内置于游戏引擎,则可以实际模拟调整,达到“所见即所得”的效果。
    • 区域:即空间中的体积,供游戏侦测相关事件用(如Unity中的trigger)
  • 读/写世界组块:有的引擎把每个组块储存为单个文件,有的可以独立读/写个别的图层;有的引擎使用自定义的二进制文件格式,有的使用如XML的文本格式。
  • 快速迭代:优秀的编辑器会支持某程度的动态微调功能以供快速迭代。有的编辑器在游戏本身内执行,让用户即时看到改动的效果,有的连接至运行中的游戏,或完全脱机运行。具体的机制并不重要,最重要的是给用户足够短的往返迭代时间。

集成资产管理工具

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

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

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

 

 

《游戏引擎架构》笔记六

资源及文件系统载入及管理多种媒体,是游戏引擎必须具备的能力。多数引擎会采用某种类型的资源(或资产)管理器,载入并管理游戏所需的资源,并确保在同一时间每个媒体文件只可载入一份。每个资源管理器都会大量使用... 查看详情

《游戏引擎架构》笔记一

游戏团队的结构:工程师、艺术家、游戏设计师、制作人工程师分为运行时工程师和工具工程师;运行时工程师是制作引擎和游戏本身;工具工程师制作离线工具。艺术家分为概念艺术家、三维建模师、纹理艺术家、灯光师、动... 查看详情

《游戏引擎架构》笔记九

...bugString()打印信息。但是它不支持格式化输出,所以Windows游戏引擎以自定义函数包装此函数#inc 查看详情

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

碰撞及刚体动力学 一些碰撞/物理系统:http://www.gamedev.net/community/forums/topic.asp?topic_id=463024I-Collide:http://cs.unc.edu/I-COLLIDESWIFT:ODE:http://www.ode.orgBullet:http://code.google.com/p/bullet/TrueAxi 查看详情

《游戏引擎架构》笔记三

C++基础复习面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。而多态则是为了实现接口重用。封装它是指... 查看详情

游戏开发入门游戏引擎架构

链接:游戏开发入门(十一)游戏引擎架构(8节课时常:约2小时40分钟)该堂课是对游戏引擎内容的一个概括总结,同时也是对游戏开发技术的一个相当全面的总结。正如我在开篇所提到的,游戏... 查看详情

games104笔记-引擎架构分层和整体pipeline

目录现代游戏引擎什么是游戏引擎引擎开发的难点游戏引擎分层资源层Importing关联资产CompositeassetRuntimeAssetManager功能层Tick多核核心层高性能计算数据结构与容器内存管理平台层文件路径硬件渲染接口硬件CPU架构工具层现代游戏... 查看详情

[games104笔记]3/21基础架构1『引擎架构分层,整体pipeline』

笔记结合了游戏引擎架构GameEngineArchitecturebyJasonGregory 第二版仅为个人学习整理,目录平台层核心层资源层功能层工具层工具层功能层资源层核心层core平台层platform功能调用基本上是自上而下(上层调用下层)"如同所有软件系统&#... 查看详情

ruby‘sadventrue游戏制作笔记(十三)unity血条ui的显示(代码片段)

Ruby'sAdventrue游戏制作笔记(十三)Unity血条UI的显示前言一、创建一个UI二、在HeadFrame中创建两个新的UIImage三、添加脚本系列链接前言本文章是我学习Unity官方项目项目所做笔记,作为学习Unity的游戏笔记,在最... 查看详情

ruby‘sadventrue游戏制作笔记(十三)unity血条ui的显示(代码片段)

Ruby'sAdventrue游戏制作笔记(十三)Unity血条UI的显示前言一、创建一个UI二、在HeadFrame中创建两个新的UIImage三、添加脚本系列链接前言本文章是我学习Unity官方项目项目所做笔记,作为学习Unity的游戏笔记,在最... 查看详情

游戏引擎架构

游戏编程分为游戏逻辑和游戏引擎。游戏引擎是一套可重复利用的底层框架。包括渲染引擎、声音引擎、网络引擎等等。现提供一套游戏架构,从底层向上分别为:硬件、驱动、操作系统。第三方软件开发包:DirectX、OpenGL,Boost... 查看详情

ruby‘sadventrue游戏制作笔记(十三)unity血条ui的显示(代码片段)

Ruby'sAdventrue游戏制作笔记(十三)Unity血条UI的显示前言一、创建一个UI二、在HeadFrame中创建两个新的UIImage三、添加脚本系列链接前言本文章是我学习Unity官方项目项目所做笔记,作为学习Unity的游戏笔记,在最... 查看详情

游戏引擎架构pdf下载

网盘下载地址:游戏引擎架构PDF下载–易分享电子书PDF资源网 作者:[美]JasonGregory(杰森.格雷戈瑞)出版社:电子工业出版社原作名:GameEngineArchitecture译者:叶劲峰出版年:2014-1页数:800定价:128.00元装帧:平装内容简介··&m... 查看详情

最先进的游戏引擎架构

】最先进的游戏引擎架构【英文标题】:Gameenginearchitecturestate-of-the-art【发布时间】:2011-10-0319:18:35【问题描述】:我已经阅读了很多关于游戏引擎架构的文章,并且想了解以下内容:什么是(是?)目前被认为是游戏引擎的最... 查看详情

游戏引擎架构,3d游戏引擎设计unreal引擎技术等五本pdf推荐

 扫码时备注或说明中留下邮箱付款后如未回复请至https://shop135452397.taobao.com/联系店主 查看详情

游戏引擎架构入门

游戏引擎的组成:运行时组件+工具套件。运行时组件:硬件、驱动、操作系统、第三方软件开发包(SDK)和中间件:数据结构及算法(STL、STLport、Boost、Loki)、图形(OpenGL、DirectX)、碰撞和物理(PhysX、Havok、ODE)、角色动画... 查看详情

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

...备用地址:网盘下载  内容简介编辑[1]  《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然... 查看详情

手把手教你架构3d游戏引擎

 最近利用空闲的时间写了一本针对程序员开发3D游戏引擎的书籍,《手把手教你架构3D游戏引擎》电子工业出版社,里面涉及到向量变换,矩阵变换,固定流水线的实现。给读者揭秘引擎的底层封装实现,对于学习者非常容... 查看详情