GameplayKit框架详细解析(一) —— 基本概览
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.02.06 |
前言
GameplayKit框架,构建和组织你的游戏逻辑。 整合常见的游戏行为,如随机数生成,人工智能,寻路和代理行为。接下来几篇我们就一起看一下这个框架。
Overview
下面先看一下该框架的基本信息。
GameplayKit是一个面向对象的框架,为构建游戏提供基础工具和技术。 GameplayKit包含用于设计具有功能性,可重用架构的游戏的工具,以及用于构建和增强诸如角色移动和对手行为的游戏玩法特征的技术。
下面看一下该框架的基本结构。
Getting Started with GameplayKit - GameplayKit开始
GameplayKit涵盖游戏设计和开发的许多方面。 有关游戏设计模式的更深入讨论,您可以使用GameplayKit,以及说明使用GameplayKit功能构建游戏的教程,请参阅GameplayKit Programming Guide。
Related Sample Code - 相关示例代码
要实验GameplayKit
,请参阅以下示例代码项目:
-
FourInARow: Using the GameplayKit Minmax Strategist for Opponent AI
-
DemoBots: Building a Cross Platform Game with SpriteKit and GameplayKit
Topics
1. Entities and Components
用于设计可组合的,可重复使用的游戏逻辑的通用架构。
-
- 与游戏相关的对象,其功能完全由一组组件对象提供。
-
- 抽象超类,用于创建将特定游戏玩法功能添加到实体的对象。
-
- 为指定类的所有组件对象管理定期更新消息。
2. State Machines
用于定义状态相关游戏逻辑的模块化系统。
-
- 抽象超类,用于将状态特定的逻辑定义为状态机的一部分。
-
- 一个有限状态机 - 一个状态对象的集合,每个状态对象定义了游戏玩法的特定状态的逻辑和状态之间转换的规则。
3. Spatial Partitioning
数据结构,组织游戏世界中的对象,以快速搜索位置或邻近度。
-
- 用于根据二维空间中的位置来组织对象的数据结构。
-
- 用于管理在四叉树中组织的对象的辅助类。
-
- 用于根据三维空间中的位置来组织对象的数据结构。
-
- 用于管理在八叉树中组织的对象的辅助类。
-
- 一种数据结构,根据二维空间中的位置自适应组织对象。
4. Strategists
用于计划的AI形式在回合制游戏中移动。 通过创建采用游戏模型协议的类来描述您的游戏玩法,然后使用这些类与策略对象来创建AI玩家或建议移动。
-
- 提供人工智能的对象的一般接口,用于回合(和类似)游戏。
-
- 使用确定性策略选择回合制游戏的人工智能。
-
- 使用概率策略选择回合制游戏的人工智能
-
- 实施这个协议来描述你的游戏模型,这样一个战略对象可以计划游戏的移动
-
- 执行这个协议来描述你的回合制游戏中的一个玩家,这样一个策略对象可以计划游戏的移动。
-
- 实施这个协议来描述在你的回合制游戏中的一个移动,以便一个策略对象可以计划游戏的移动。
5. Decision Trees
定义一系列问题和可能的答案,最终采取行动,或根据您提供的数据自动构建预测模型。
-
- 一个数据结构,模拟一系列具体的问题,他们可能的答案,以及一系列答案中的后续行动。
-
- 用于手动创建决策树的节点,代表特定的问题和可能的答案,或回答其他问题后的操作。
6. Pathfinding
创建图形,模拟您的游戏世界的导航性,允许GameplayKit规划游戏角色的最佳路线。
-
- 描述游戏世界的可导航性并提供寻路方法来搜索通过该空间的路线的节点的集合。
-
- 2D游戏世界的导航图形创建了一个最小的网络,用于在障碍物周围进行精确的路径查找。
-
- 2D游戏世界的导航图形创建了一个空间填充网络,可以在障碍物周围进行平滑寻路。
-
- 2D游戏世界的导航图,其中运动被限制为整数网格。
-
- 导航图中的单个节点用于寻路。
-
- 导航图中的一个节点,与连续2D空间中的一个点相关联。
-
- 导航图中的一个节点,与连续三维空间中的一个点相关联。
-
- 导航图中的一个节点,与离散二维网格上的位置关联。
7. Agents, Goals, and Behaviors
通过结合高层次的目标,例如移动到目标,遵循路径或避开障碍,将自主移动添加到角色和其他游戏对象。
-
- 根据一组目标和现实约束来移动游戏实体的组件。
-
- 在二维空间中操作的代理。
-
- 在三维空间中运作的代理
-
- 激励一个或多个代理人移动的影响。
-
- 一套共同影响代理人运动的目标。
-
- 一组行为,每个行为都是一组目标,共同影响一个代理人的行动。
-
- 一个代理可以跟随的多边形路径。
-
- 实现这个协议来同步一个代理的状态和它在游戏中的可视化表示。
8. Obstacles
在游戏世界中模拟不可访问区域的类,用于Pathfinding和Agents。
-
- 游戏世界中代表不可访问区域的对象的抽象基类。
-
- 代理要避免的一个循环不能通行的区域。
-
- 代理应避免的球形不可通过的体积。
-
- 2D游戏世界中的多边形不可通行区域。
9. Procedural Noise
生成相干随机噪声的场,然后用它们来创建类似云或木纹等自然现象的纹理图像,建立无限大小的程序游戏世界等等。
-
- 噪声生成器的抽象超类。
-
- 由噪声源产生的程序性噪声,可以用来处理,变换或合并噪声。
-
- 程序噪声数据的样本,您可以从中直接读取噪声值或创建噪声纹理。
-
- 产生相干噪声的程序噪声发生器的抽象超类。
-
- 一种程序噪声发生器,其输出是一种具有平滑特征的分形相干噪声。
-
- 一种程序性噪声发生器,其输出是一种类似于云和地形等自然现象的分形相干噪声。
-
- 程序噪声发生器,其输出是一种具有明确定义的特征的多重分形相干噪声。
-
- 一个程序性噪声发生器,其输出(也称为沃利噪声或蜂窝噪声)将空间划分为围绕随机种子点的离散单元。
-
- 程序噪声发生器,其输出是同心圆柱壳的3D场。
-
- 程序噪声发生器,其输出是同心球壳的3D场。
-
- 程序性噪声发生器,其输出是交替方形模式。
-
- 程序噪声发生器,输出一个单一的恒定值的字段。
10. Randomization
标准算法的强大而灵活的实现,让您在不影响可测试性的情况下增加游戏玩法的不可预测性。
-
- GameplayKit中的所有随机化类(或可用)的通用界面。
-
- GameplayKit中所有基本随机化类的超类。
-
- 实现ARC4算法的基本随机数生成器,适用于大多数游戏机制。
-
GKLinearCongruentialRandomSource
- 一个基本的随机数生成器实现线性同余生成器算法,比默认的随机源更快但更少随机。
-
- 一个实现Mersenne Twister算法的基本随机数生成器,它随机性更强,但比默认随机源慢。
-
- 用于随机数的发生器,落在特定的范围内,并在多个采样中显示特定的分布。
-
- 用于随机数的生成器,它跨多个采样,遵循高斯分布(也称为正态分布)。
-
- 一个随机数的生成器,它是在许多采样中均匀分布的,但是类似值的短序列是不可靠的
11. Rule Systems
将游戏设计从可执行代码中分离出来,以加速游戏的开发周期,或者实现模糊逻辑推理,为游戏添加真实的行为。
-
- 在规则系统的上下文中使用的规则,要测试谓词并在测试成功时执行操作。
-
- 在使用Foundation NSPredicate对象评估自身的规则系统中使用的规则。
-
- 规则列表,以及用于评估和解释结果的上下文,用于构建数据驱动的逻辑或模糊逻辑系统。
12. Xcode and SpriteKit Integration
支持使用Xcode中的SpriteKit场景编辑器轻松创建和编辑GameplayKit功能的类和协议。
-
- 用于将GameplayKit对象与SpriteKit场景相关联的容器。
-
- 标识支持嵌入的GameplayKit信息的其他框架的场景类。
-
- 管理SpriteKit节点的组件。
13. Reference
14. Classes
后记
本篇已结束,后面更精彩~~~