GameDesign 板


LINE

网页版 https://yekdniwue.blogspot.com/2019/06/GameplayEffectAndCue.html [前言] 这篇文章主要是关於UE4 GameplayAbilitySystem中GameplayEffect的细项介绍 在我们专案大量使用GameplayEffect的各种用法来达成不同的Gameplay 而GameplayEffect有一大堆的参数, 让我们在使用上遇到不少问题 写这篇文章就是希望其他开发者不用走一次我们走过的冤枉路 [简介] 先列出GameplayEffect可设定参数中的分类, 每个分类内在本文会有更详细的介绍 GameplayEffect Tags - Tag的新增与移除 Modifiers - 修改AttributeSet内的Value Duration Policy - 不同的时间执行规则, 很多功能只有特定duration policy才会生效 Conditional Gameplay Effects - 额外apply的effect, 可以设定apply条件 Application - 这个效果能否套用的条件 Period - 周期执行 Display - 演出 Expiration - 结束後追加效果 Immunity - 这个效果套用时, 对其他效果免疫的设定 Stack - 同样Effect的堆叠处理 Overflow - 堆叠溢出时追加效果 Grant Ability - "Give" Ability, 不会自动Activate GameplayCue GameplayCue Tag - GameplayEffect跟GameplayCue是透过GameplayTag关联 [本文] ★Tags GameplayEffectAssetTag 这个effect的tag, 在做一些remove, immunity之类的检查栏位 GrantedTag 当Effect apply後, 会同时赋予角色的tags OngoingTag Requirements 这个tag的玩法很像是遥控炸弹的概念, 先把炸弹的effect装在某个对象上 满足OngoingTag的时候effect就会active tag有变动的时候就会来checkOngoing 不满足的时候就会remove, 但是不会清掉, 只要再次满足, 就又会active 这个可能是节省网路传输的绝招 根据实验结果, 可以把会使用到多次的duration effect都改成 infinite, 这样ActiveGameplayEffects的传输就只会有一次!! 然後透过tag的add/remove来达到effect的on/off Application Tag Requirements 能不能apply成功的tag检查 Remove Gameplay Effects with Tags 这个effect apply後可以同时remove其他effect ★Modifiers Attribute 先决定针对哪个Attribute 参考AttributeSet.h 定义专案的角色会有哪些属性 可参考UE4官方的ActionRPG教学专案 Modifier Op Enum共有五个 Add Multiply Divide三个都是数学基本运算 Override的使用通常会搭配Magnitude Calculation Type= Attribute Based 也就是用一个attribute的数值去设定另一个attribute, 例如回满血, hp = hpMax Invalid没有意义 Modifier Magnitude 先说明一下, 所有"常数"都可以是直接填在Effect上的数字, 或是从表格读值 Magnitude Calculation Type Scalable Float 常数 Attribute Based 整个数值的公式是value = A*(X+B)+C X是另一个Attribute的值 A B C都是常数 Custom Calculation Class 这个需要自己写class来做运算, 公式太复杂就要用上这个 Set by Caller runtime的数值, 参考SetSetByCallerMagnitude ★Duration Policy 三种policy, 分别介绍三种的规则及应用范例 Instant 单次效果 只会在Server上执行, 没有额外的网路传输 例如子弹击中伤害 Duration 持续一段时间的效果, 解除效果时会复原attribute Duration Mannitude : 持续时间, Policy选Duration才会显示 透过replicated property - ActiveGameplayEffect 同步给所有client 同步後可以得到效果还剩多久的资讯 例如马力欧赛车的吃蘑菇加速 Infinite 不确定会持续多久的可以用这个, 可以配合remove的规则来做设计 例如踩进Volume会得到持续效果, 离开volume就解除 ★Conditional Gameplay Effects Executions Calculation Class : 自订执行与否的条件 Conditional Gameplay Effects Requred Source Tags : 对象身上有这些tags, 就会执行额外的effect ★Application Chance to Apply to Target: 0.0-1.0 , 对应到百分比机率Application Requirement bool CanApplyGameplayEffect() BP写逻辑决定能否apply effect ★Period Period: 多久modify一次attribute Execute Periodic Effect on Application true: apply时就执行第一次效果 false: apply时不执行效果, 一个periodic time後才执行第一次效果 ★Display 最重要就是GameplayCue设定 Require Modifier Success to Trigger Cues 顾名思义就是有成功执行Modifier才会Trigger Cue Modifier为0的情况下, 这个boolean就没用了 预设true: 可以避免gameplay不合理的cue传输 Suppress Stacking Cues stack的第一个instance才会启动Cue 预设false: 改成true可以减少过多的cue传输, 堆叠时只启动一个Cue UIData 空的UObject 要另外设计需要的参数 [图表] 图文说明gameplay cue的各个范例 ★Expiration 只有duration跟infinite会有效 Premature Expiration Effect 过早结束时会额外追加的效果 甚麽叫过早? 外力介入 例如force remove / clear tags 参考RemoveActiveGameplayEffect Routine Expiration Effect 正常结束时会额外追加的效果 ★Stack 只有duration跟infinite会有效 Stacking Type(3 types) 无堆叠, 每一次的效果视为独立 由来源合计 由目标合计 Stack Limit Count : 堆叠数量, 我们专案比较常见的做法是把堆叠设成1, 来避免一些效果太强的buff在堆叠时造成的不公平 Stack Duration Refresh Policy : duration要不要重算 Stack Period Reset Policy : period要不要重算 Stack Expiration Policy : Stack内所有effect的时间是一起计算的, duration结束时提供3种处理方式: 整个stack移除, 效果就全部结束 扣一後再跑一次duration, 效果会弱化 自己写code处理, OnStackCountChange callback ★Overflow (of Stack) Overflow Effects : 堆叠满了时会额外追加的效果 Deny Overflow Application : 造成堆叠超过的那次apply会fail Clear Stack on Overflow : overflow後整个stack会清空 ★Immunity 用途 : 这个effect在运作时可以阻挡其他effect的apply Granted Application Immunity Tags Require Tags : 免疫tag effects GE的tag是由GameplayEfectAssetTag栏位决定 Ignore Tags : 忽略免疫(台词: 我免疫你的免疫) 虽然满足Require Tags, 但是如果这边又有满足其中一个 ignore, 就忽略免疫 这边的tag运算规则是FGameplayTagRequirements::RequirementsMet Granted Application Immunity Query : 进阶的条件判断, 把effect拆成更细的条件去做检查 [图表] Query说明 Custom Match Delegate BP 经过code trace的结果, 这个栏位应该不是给ImmunityQuery使用的 但是Delegate的Input是ActiveGameplayEffect, BP unread, 所以没改code的情况下, 这个delegate完全不能用 Owning Tag Query / Effect Tag Query / Source Tag Query : 三者就是比对effect内的不同tag container栏位, 比较需要知道的是Query如何设定 [图表] Tag Qery的详细说明与范例 Modifying Attribute(Match Any) GE内的Modifier只要任一个Attribute符合, 就免疫 是以整个Effect为单位, 所以其他Attribute的Modifier也会受影响 Effect Soure 检查EffectContext的SoureObject SourceObject的Type是UObject, 根据实作情形可以填不同的内容 例如Pawn, Controller, PlayerState 我们专案中是用Pawn 而GameplayEffect中的SourceObject就是AbilitySpec的SourceObject接来的值 Effect Definition 最简单的填法, 直接填入免疫的GameplayEffect Class ★Grant Ability input id 绑定input id来activate这个ability removal policy effect结束後要怎麽处理granted ability? CancelAbilityImmediately 妈妈: 马上过来吃饭! 马上中止ability, remove ability RemoveAbilityOnEnd 妈妈: 存档完过来吃饭 如果ability没有active, 就直接remove 如果ability正在active, 则结束後会remove DoNothing 妈妈: 饭好了要吃自己拿 ability不会remove [结尾] 虽然讲了很多, 但很多用法我们专案也没有实际使用过 但可以看出UE4想要建立一套可在不同专案通用的Gameplay架构, 来减少开发成本 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.22.26 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1562071341.A.489.html
1F:推 diac3000: 头推! 07/02 21:07
2F:推 coolrobin: 肩推 07/02 21:27
※ 编辑: yekdniw (59.120.146.90 台湾), 07/15/2020 11:04:59







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP