😺

[UE5] GASやGameplay Tagについてのメモ

2023/01/22に公開

(学習の傍らにとっているノートです)

Gameplay関連システムを用いた全体的な流れ

C++/ブループリント

  • UE5.1(2023年1月22日)の時点ではGameplay Tag、Ability、Cue、Taskの主要機能がブループリントノードのみで扱える(C++を書かなくても機能の恩恵を受けられる)ようです。
  • AttributesとEffectsについてはC++などで一部定義を書く必要があるようです。
  • また、Abilityなどのブループリントノードに対応しているものであってもC++側でしか実装されていないメソッドなどがあるようです。
  • 4系など昔のUEバージョンではAbility System Componentが持っているGameplay Tags Containerを使わない(当時実装されていなかった?)解説動画や記事などが多く存在しているようです。
  • 5系はGameplay Tags Containerおよびそれを取り扱うノードの起点はAbiitySystemから引っ張ってこれるのでそれを組み合わせた解説が多い。

Get Actor Info

=> Gameplay Ability Actor Info構造体

Gameplay Cue

デバッグ用

Tags Containerの中身を見る

「Master.Child,Master.Child2」のような文字列に一発変換してくれる

ノード

Get Owned Gameplay Tags

特定のGameplay Tag Assets Interfaceを引数にGameplay Tags Containerを得ることができる。
Gameplay Tag Assets InterfaceAbilitySystemが持っている。
AbilitySystemを引数にするため「Owned」というのはActorにセットされたAbilitySystemの中にあるTags Containerのことを指しているようです。

Add/Remove Gameplay Tag

特定のGameplay Tags Containerに対して、指定したタグを追加/削除する。
タグの親子関係によっては上書きされたようになる。

Add/Remove Loose Gameplay Tags

特定のアクターに対してゲームタグを紐づける。
AbilitySystemComponentを付与されたActorに対して実行するようです。

Wait Gameplay Tag

Ability

TryActivateAbility

アビリティを実行する際に使用

ActivatableAbilities

ここから「GameplayAbilitySpec」を取り出して現状を把握する

Give Ability

アビリティを授ける

OnlyAbilitiesThatSatisfyTagRequirements

今すぐ実行できるアビリティのみを引き出す

Gameplay Event

SendGameplayEventToActor

データのペイロードを含むイベントでGameplayAbilityをアクティベートする。イベントのペイロードは、ローカルで予測されるGameplayAbilityのために、クライアントからサーバーへ複製されます。既存のどの変数にも当てはまらない任意のデータには、2つのOptional ObjectまたはTargetData変数を使用します。

Gameplay Task

PlayMontageAndWaitForEvent

PlayMontageAndWaitと WaitGameplayEventの AbilityTasksを組み合わせたものです。これにより、アニメーション・モンタージュは、AnimNotifiesからゲームプレイ・イベントを、それを開始したGameplayAbilityに送り返すことができます。これを使用して、アニメーション モンタージュ中の特定の時間にアクションをトリガーします。

WaitGameplayEvent

Gameplay Tag

Get Owned Gameplay Tags

AbilitySystemから生やす

Add/Remove Loose Gameplay Tags

特定のアクターに対してゲームタグを紐づける

Wait Gameplay Tag

クールダウン

期限切れまでゲームプレイアビリティの再アクティブ化を防ぐタイマー

コスト

インスタント・ゲームプレイ・エフェクト(コストGE)で実装されたゲームプレイ・アビリティを起動するためにASCが持つべき、あらかじめ定義された属性の量のこと

Abilityのメンバー変数

(機械翻訳)

Ability Tags

能力タグ
GameplayAbilityが所有するGameplayTags。これらは、GameplayAbilityを説明するためのGameplayTagsに過ぎません。

Cancel Abilities with Tag

タグでアビリティをキャンセルする
このゲームプレイアビリティが発動すると、アビリティタグにこれらのゲームプレイタグが設定されている他のゲームプレイアビリティはキャンセルされます。

Block Abilities with Tag

タグでアビリティをブロック
このゲームプレイアビリティが有効な間は、アビリティタグにこれらのゲームプレイタグを持つ他のゲームプレイアビリティの発動がブロックされます。

Activation Owned Tags

アクティベーション 所有タグ
これらのGameplayTagsは、GameplayAbilityが有効な間、GameplayAbilityの所有者に付与されます。これらは複製されません。
アクティベーションが必要なタグ このゲームプレイアビリティは、所有者がこれらのゲームプレイタグを 全て持っている場合にのみ、発動することができます。

Activation Required Tags

アクティベーション・ブロックのタグ
このゲームプレイアビリティは、所有者がこれらのゲームプレイタグの いずれかを持っている場合、発動できません。

Source Required Tags

ソース必須タグ
このGameplayAbilityは、SourceがこれらのGameplayTagsを 全て持っている場合にのみ、有効にすることができます。Source GameplayTagsは、GameplayAbilityがイベントによってトリガーされた場合のみ、設定されます。

Activation Blocked Tags

ソースブロックのタグ
このGameplayAbilityは、SourceがこれらのGameplayTagsの いずれかを持っている場合、有効にすることができません。Source GameplayTagsは、GameplayAbilityがイベントによってトリガーされた場合のみ、設定されます。

Target Required Tags

対象必須タグ
このGameplayAbilityは、TargetがこれらのGameplayTagsを 全て持っている場合のみ、発動することができます。Target GameplayTagsは、GameplayAbilityがイベントによってトリガーされた場合のみ、設定されます。

Target Blocked Tags

ブロックされているタグを対象とする
このGameplayAbilityは、TargetがこれらのGameplayTagsを持って いる場合、発動することができません。Target GameplayTagsは、GameplayAbilityがイベントによってトリガーされた場合のみ、設定されます。

Discussion