1. 程式人生 > 遊戲資訊 >1. GAS基礎知識

1. GAS基礎知識

官方視訊

https://www.bilibili.com/video/BV1X5411V7jh?from=search&seid=11610542962902282701&spm_id_from=333.337.0.0

一、GAS簡介

GAS提供了哪些功能?

1. 實現了帶有消耗和冷卻功能的角色技能;

2. 處理數值屬性(生命、魔法、攻擊力、防禦力...);

3. 應用狀態效果(擊飛、著火、眩暈...);

4. 應用遊戲標籤(GamePlayTages);

5. 生成特效和音效;

6. 完整的網路複製、預測功能;

適合使用GAS的專案

1. C++專案,開發人員有充足的C++開發經驗;

2. 使用Dedicated Server的聯機遊戲,UE提供的DS伺服器框架;

3. 專案有大量且複雜的技能邏輯設計需求;

除了GAS之外的其它技能系統外掛,Able Ability System、Ascent Combat Framework。


二、GAS功能概述

                                                    Ability System Component

Ability System Component(ASC)是整個GAS的基礎元件。

ASC本質上是一個UActorComponent,用於處理整個框架下的互動邏輯,包括使用技能(GameplayAbility)、包含屬性(AttributeSet)、處理各種效果(GameplayEffect)。

所有需要應用GAS的物件(Actor)(可以被技能作用的物件),都必須擁有GAS元件。

擁有ASC的Actor被稱為ASC的OwerActor,ASC實際作用的Actor叫做AvatarActor。

ASC可以被賦予某個角色ASC,也可以被賦予PlayerState(可以儲存死亡角色的一些資料)。


                                            Gameplay Tags

FGameplayTags是一種層級標籤,如Parent、Child、GrandChile。

通過GameplayTagManager進行註冊。

替代原來的Bool,或者Enum的結構,可以在玩法設計中更高效的標記物件的行為或者狀態。

更多詳情可以去看知乎大佬的帖子:https://zhuanlan.zhihu.com/p/79477182


                                            Gameplay Ability

Gameplay Ability(GA)標識了遊戲中一個物件(Actor)可以做的行為或技能。

能力(Ability)可以是普通攻擊或吟唱技能,可以是角色被擊飛倒地,還可以是使用某種道具,互動某個物件,甚至跳躍、飛行等角色行為也可以是Ability.

Ability可以被賦予物件或者從物件的ASC中移除,物件同時可以啟用多個GameplayAbility。

*基本的移動輸入、UI互動行為則不能也不建議通過GA來實現。

Gameplay Ability流程圖更多詳情可以去看知乎大佬的帖子:https://zhuanlan.zhihu.com/p/76395757


                                            Gameplay Effect

Gameplay Effect(GE)是Ability對自己或者他人產生影響的途徑。

GE通常可以被理解為我們遊戲中的buff。比如增益/減益效果(修改屬性)。

但是GAS中的GE也更加廣義,釋放技能時候的傷害結算,施加特殊效果的控制、霸體效果(修改GameplayTag)都是通過GE來實現的。

GE相當於一個可配置的資料表,不可以新增邏輯。開發者建立一個UGameplayEffect的派生藍圖,就可以根據需求製作想要的效果。

更多詳情可以去看知乎大佬的帖子:https://zhuanlan.zhihu.com/p/78395843

                                            Attribute Set

Attribute Set付則定義和持有屬性,並且管理屬性的變化,包括網路同步。

需要在Actor中被新增為成員變數,並註冊到ASC(C++)。

一個ASC可以擁有一個或者多個(不同的)Attribute Set,因此可以角色共享一個很大的Attribute Set,也可以每個角色按需新增Attribute Set。

可以在屬性變化前(PreAttributeChange)後(PostGameplayEffectExecute)處理相關邏輯,可以通過委託的方式繫結屬性變化。

更多詳情可以去看知乎大佬的帖子:https://zhuanlan.zhihu.com/p/75987858