|
|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: lc
|
|
|
* @Date: 2021-09-03 21:41:18
|
|
|
- * @LastEditTime: 2021-09-15 20:51:48
|
|
|
+ * @LastEditTime: 2021-09-16 22:32:55
|
|
|
* @LastEditors: Please set LastEditors
|
|
|
* @Description: 虚幻学习
|
|
|
* @FilePath: D:\Projects\markdown\虚幻.md
|
|
|
@@ -1067,3 +1067,89 @@ K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polyt
|
|
|
|
|
|
**TimeLine还可以用于向量、颜色、事件**,上面只展示了用于**浮点数**,其他的可以通过百度了解
|
|
|
|
|
|
+# 游戏框架
|
|
|
+
|
|
|
+框架(Framework)——指其约束性(框),也指其支撑性(架)。是一个基本概念上的结构,用于去解决或处理复杂的问题
|
|
|
+
|
|
|
+框架是整个或部分系统的可重用设计,表现为**一组抽象构建及构建实例间交互的方法**;另一种定义认为,框架是可以被应用开发者定制的应用骨架
|
|
|
+> 前者从应用方面而后者从目的方面给出定义
|
|
|
+
|
|
|
+虚幻提供一个名为GamePlay的框架。虚幻的设计者抽象出了多种角色,在开发过程中需要沿着设计者给定的身份进行游戏设定编写。这些虽然约束了设计,但是一定程度上加强了开发的稳定性
|
|
|
+
|
|
|
+虚幻抽象出的角色:**游戏模式(GameMode)**,**游戏状态(GameState)**,**玩家(DefaultPawn)**,**玩家状态(PlayerState)**,**玩家控制器(PlayerController)**,**用户界面(HUD)**
|
|
|
+
|
|
|
+> 抽象的角色,在游戏中扮演不同的角色,从事不同的工作任务
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **GameMode**
|
|
|
+
|
|
|
+GameMode和GameState主要负责游戏中的相关信息。GM主要负责管理游戏的规则
|
|
|
+
|
|
|
+1. 出现的玩家和观众数量,以及允许的玩家和观众最大数量
|
|
|
+2. 玩家进入游戏的方式,可包含选择生成地点和其他生成/重生行为的规则
|
|
|
+3. 游戏是否可以暂停,以及如何处理游戏暂停
|
|
|
+4. 关卡之间的过度,包括游戏是否以动画模式开场
|
|
|
+
|
|
|
+GM的主要任务就是构建和实现游戏的规则,并将游戏中的其他角色进行注册:默认玩家、HUD类、玩家控制器、观众类、GameState类、PlayerState类
|
|
|
+游戏规则及获胜条件这样的内容。它仅存在于服务器上(联网游戏中)。它一般在游戏过程中不会有太多数据改变,并且它一定不应该具有客户端需要的临时数据
|
|
|
+
|
|
|
+> 每个关卡都应该有每个关卡自己的规则,也就是一个关卡一个GameMode
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **GameState**
|
|
|
+
|
|
|
+GameState主要负责游戏中共享信息的记录,游戏的信息可以通过GameState进行存储和同步。
|
|
|
+
|
|
|
+> 主要存储共有数据,比如比赛时间。私有数据并不能存在这里
|
|
|
+
|
|
|
+包括:
|
|
|
+
|
|
|
+1. 游戏已经运行的时间(包括本地玩家加入前的运行时间)
|
|
|
+2. 每个个体玩家加入游戏的时间和玩家的当前状态
|
|
|
+3. 当前Game Mode的基类
|
|
|
+4. 游戏是否已经开始
|
|
|
+5. ……
|
|
|
+
|
|
|
+GameState是虚幻为进行游戏信息记录的载体。包括像关联玩家的列表、分数、象棋游戏中的象棋位置或者在开放世界游戏中已经完成的任务列表。GameState存在于服务器和所有客户端上,可以自由的进行复制来保持同步
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **Default Pawn默认玩家**
|
|
|
+
|
|
|
+默认玩家,不管任何游戏,都应当存在一个默认的玩家,这是肯定的!即使是最开放的游戏,也需要存在一个上帝视角进行游戏的指令发布,在虚幻中默认玩家扮演的就是这个角色。
|
|
|
+
|
|
|
+> 只有继承了Pawn的对象才能成为默认玩家
|
|
|
+> 默认玩家需要通过控制器进行控制,它们可以轻松地接收输入,并且可以执行各种各样的类似于玩家的动作
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **Player Controller**
|
|
|
+
|
|
|
+控制器,是负责管理玩家的Actor类型对象。主要目的是将真实玩家的意愿进行收集,最后汇总转投给虚拟角色。这个过程就是游戏中的玩家交互过程。
|
|
|
+PlayerController(玩家控制器)是Pawn和控制它的人类玩家间的接口。PlayerControlller本质上代表了了人类玩家的意愿(行为树的运算)
|
|
|
+
|
|
|
+> 其他还有AIController等
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **Player State**
|
|
|
+
|
|
|
+PlayerState是游戏中的一个参与者的状态,比如人类玩家或者模拟人类玩家的机器人。作为游戏一部分存在的非人类玩家AI没有PlayerState。PlayerState中适合包含的示例数据有:玩家姓名、分数、多人在线竞技游戏中的级别、多起模式中玩家是否在夺旗……
|
|
|
+
|
|
|
+所有玩家的PlayerState在所有机器上都存在(和PlayerController不同),并且可以自由地进行复制来保持同步
|
|
|
+
|
|
|
+**玩家数据和玩家操控角色数据是两个不同的数据点**
|
|
|
+
|
|
|
+> 玩家数据:等级、分数(记录在Player State)
|
|
|
+> 角色数据:高矮胖瘦、速度等(记录在Pawn 角色上)
|
|
|
+
|
|
|
+----
|
|
|
+
|
|
|
+- **HUD**
|
|
|
+
|
|
|
+HUD是一种“平头显示器”,或者说是二维的屏幕显示信息。在很多游戏中都很常见,比如:生命值、弹药量、准心十字等,每个PlayerController一般都具有一些这样的信息
|
|
|
+
|
|
|
+HUD是用来进行简单UI绘制的入口,一般在游戏开发中均更换为UMG为用户界面开发主要手段
|
|
|
+
|