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/m.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燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP