GameplayAbilities System介紹 (二)
本篇要說明個人最近研究有關Gameplay abilities system的各個系統介紹以及負責的項目。 AbilitySystemComponent AbilitySystemComponent(ASC),處理一個角色整個GAS的相關事務。每一個可以發動ability或是受到ability效果的單位都必須掛上ASC。ASC身為中心負責了ability的發動與接收,角色屬性值的變更與網路傳輸。由於ASC通常是程式在C++端就掛上去,所以這個系統原則上跟企劃比較沒有關係。 AttributeSets 一個角色的屬性值,通常技能最後的結果就是影響角色的值。例如血量,能量,氣條,攻擊力。 AtrributeSets內儲存的值都是浮點數,要使用其他類型可能就不適合(或是根本沒辦法?)。通常這部份的值都是企劃決定。UE4在這部份也提供了curve table讓值可以從表格決定,並且可以定義根據不同等級該有的值。 例如玩家角色的防禦值可能會被定義為 PlayerDefense 1,2,5,10 代表等級1的時候防禦是1,到了等級4的時候防禦值是10。 GameplayAbility 一個Ability可以視為一個技能,技能可以決定從client先發動,或是從server發動,以及技能要不要同步。 Tag組合 技能上面可以定義許多不同的tag組合,用來處理各種可能的情況: 1. 技能在角色擁有哪些tag才可以發動 2. 角色有哪些tag的話不能發動此技能 3. 這個技能啟動後會取消有哪些tag的其他技能 4. 這個技能發動期間哪些tag的其他技能不能被發動成功 以下是範例: 1. 要有已知用火的tag,火技能才能發動 2. 角色被上了凍結的tag,技能不能發動 3. 施放大絕會取消所有普通技能 4. 施放技能中所有戰鬥技能都不能被發動。 Costs and Cooldowns 技能也支援costs以及cooldowns的概念,costs處理發動一個技能要有的消耗,例如發動技能要耗10點魔力,如果角色魔力不足就會發動失敗。cooldowns處理發動一個技能後的冷卻時間,要冷卻時間結束之後才能夠再次發動。 Triggers 技能的發動除了可以手動呼叫之外,也可以利用技能的Trigger機制,設定角色