查看: 456|回复: 7

[游戏性指南] 【数据驱动游戏性元素 | Unreal Engine】

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2016-6-27 16:32:06 | 显示全部楼层 |阅读模式


本页面的内容:

      
数据表
示例

数据曲线
示例

导入过程

数据连接

数据使用(仅限程序员)
     
对于延长寿命远远超出典型盒装游戏并 要求根据玩家反馈不断调整和平衡数据的游戏而言, 数据驱动游戏性有助于减轻所涉及的工作量和复杂性, 并能可视化和参数化数据创建与调度。此外,还能够将数据导出到 Excel 或其他可使用可靠工具进行维护的电子表格文档,然后再导入, 以便在游戏中自动生效。

通过 Excel 文档将数据导入 UE4 的新方法有两种:

数据表

曲线表

这些 Excel 文档以“.xlsm”为扩展名(启用宏的 Excel 文档),并具有基于宏的导出按钮, 可轻松导出至中间数据格式,即逗号分隔的变量(“.csv”)。 这些文档都处于一个位置,有助于查找和修改数据。

Example.xlsm【虚幻4翻译文档-数据驱动游戏性元素 | Unreal Engine】[虚幻4中文文档]
(right-click**和**Save as...以下载)
数据表
顾名思义,数据表就是以有意义且有用的方式将各种相关的数据归类的表格, 其中,数据字段可以是任何有效的 UObject 属性,包括资产引用。在设计师将 CSV 文件导入数据表前,程序员必须创建行容器以指示引擎如何解释数据。 这些数据表包含了列名,这些列名和基于代码的UStruct结构以及它的(子)变量一一对应, 这个UStruct的结构必须继承自FTableRowBase才可以被导入器辨识。

首列应命名为“Name”,并包含用于访问每行以供游戏使用的资源文件名称。随后的列 具有标题的变量名,而且同一列的下方为行/列交叉点的数据。鉴于此格式, 每一行将与继承自 FTableRowBase 的结构一一对应。

示例
例如,以下显示了升级经验数据的定义和向游戏提供数据的 CSV 文档:

/** Structure that defines a level up table entry */USTRUCT(BlueprintType)struct FLevelUpData : public FTableRowBase{    GENERATED_USTRUCT_BODY()public:    FLevelUpData()    : XPtoLvl(0)    , AdditionalHP(0)    {}    /** The 'Name' column is the same as the XP Level */    /** XP to get to the given level from the previous level */    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=LevelUp)    int32 XPtoLvl;    /** Extra HitPoints gained at this level */    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=LevelUp)    int32 AdditionalHP;    /** Icon to use for Achivement */    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=LevelUp)    TAssetPtrUTexture AchievementIcon;};
CSV Document:

Name,XPtoLvl,AdditionalHP,AchievementIcon1,0,0,"Texture2d'/Game/Textures/AchievementIcon1'"2,1000,9,"Texture2d'/Game/Textures/AchievementIcon2'"3,1000,10,"Texture2D'/Game/Textures/AchievementIcon3'"4,1500,12,"Texture2D'/Game/Textures/AchievementIcon4'"5,2000,14,"Texture2D'/Game/Textures/AchievementIcon5'"
资产类型前后的双引号对属性导入途径十分重要。若没有双引号,则文本将导入为 Texture2d'。
数据曲线
数据曲线的工作方式与数据表相似, 但数据曲线仅支持浮点型数据。和数据表一样,首列命名为“Name”,并包含用于访问每行 以供游戏使用的资源文件名称。首列后的每个列标题存储 用于绘制曲线的 X 轴变量。该标题下的数据为给定行的 Y 轴值。鉴于此格式, 每一行将与一个代码可访问并沿其插入数据的曲线相应。

示例
以下为伤害进程的示例表格:






0   
1   
2   
3   

Melee_Damage15202530Melee_KnockBack0000Melee_KnockBackAngle0000Melee_StunTime0000导入过程
导入 CSV 文件的过程非常简单:

从 Excel 或其他电子表格软件以“.csv”为扩展名保存文件。

打开虚幻编辑器,然后在**Content Browser**中点击**Import**。3.浏览并选择您要导入为数据表的 CSV 文件。4.最后,从下拉列表中选择行表示法,此例中即 LevelUpData。

<src="./images/Gameplay/DataDriven/levelupdata_options.jpg[/img]


该操作将在**Content Browser**的当前资源详细内容中创建数据表对象。

<src="./images/Gameplay/DataDriven/datatableobject.jpg[/img]


您可以通过**double-clicking**对象在编辑器中查看数据表的内容。您可以通过**right-clicking**对象并选择从菜单**Reimport**更新对象。 请注意,重新导入对象时将使用原始文件路径。以下为完成导入后的数据视图:

<img alt="datatableview.jpg[/img] src="./images/Gameplay/DataDriven/datatableview.jpg[/img]

数据连接
通过这些表格连接数据非常简单。从程序员的角度来看,必须执行的操作是 放置“FDataTableRowHandle”或“FCurveTableRowHandle”的蓝图公开变量, 具体取决于您想要数据表还是曲线表。从内容服务商的角度来看, 该操作将显示包含两个子字段的数据字段:

数据表/曲线表 - 这是对包含数据的表格的内容引用。

行资源文件名称 - 这是您要从中获取数据的行的首列资源文件名称。
数据使用(仅限程序员)
连接数据后,使用数据十分简单。句柄结构将提供 辅助函数(“FindRow()”和“GetCurve()”),以允许您检索填充了数据的结构或曲线。 针对“FCurveTableRowHandle”,返回值为一个“FRichCurve”指针。“FDataTableRowHandle”则 允许您在模板函数调用中指定结构。该结构可以是继承性分层中的 最终结构或任何父结构。

最后请注意,所有返回的结构和曲线不得在 超出函数的本地范围外缓存。其目的是确保若通过重新导入刷新表格, 数据更改将立即生效且无法访问无效的指针。

在上述数据表示例中,引用的资产为延迟加载资产(TAssetPtr 处理此事项)。 如果资产字段类型设置为 UTexture,则将在加载数据表时加载所有资产。
回复

使用道具 举报

0

主题

891

帖子

2915

积分

vip会员

Rank: 1

积分
2915
发表于 2016-7-2 20:03:30 来自手机 | 显示全部楼层
我又来了,太贵了,我盯着你好久了。
回复 支持 反对

使用道具 举报

0

主题

871

帖子

2828

积分

vip会员

Rank: 1

积分
2828
发表于 2016-7-4 02:47:45 | 显示全部楼层
怎么下载额
回复 支持 反对

使用道具 举报

0

主题

1079

帖子

3439

积分

vip会员

Rank: 1

积分
3439
发表于 2016-7-4 12:23:36 | 显示全部楼层
看上去不错呀,支持一下
回复 支持 反对

使用道具 举报

0

主题

802

帖子

2652

积分

vip会员

Rank: 1

积分
2652
发表于 2016-7-5 05:16:01 | 显示全部楼层
支持一下,3q
回复 支持 反对

使用道具 举报

0

主题

837

帖子

2768

积分

vip会员

Rank: 1

积分
2768
发表于 2016-7-8 15:26:57 来自手机 | 显示全部楼层
不错的资源啊,可以研究研究
回复 支持 反对

使用道具 举报

0

主题

1222

帖子

3875

积分

vip会员

Rank: 1

积分
3875
发表于 2016-7-18 06:00:22 来自手机 | 显示全部楼层
好资源,谢谢
回复 支持 反对

使用道具 举报

0

主题

886

帖子

2975

积分

vip会员

Rank: 1

积分
2975
发表于 2016-7-20 04:50:28 来自手机 | 显示全部楼层
感谢楼主的大爱无私
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部