unreal-gas について
unreal-gasは、Unreal EngineのGameplay Ability Systemを実装する開発者向けのC++ガイドです。プラグイン設定、構成、効果、アビリティのライフサイクル、ネットワーク処理、よくある問題を扱い、公式およびコミュニティの資料も案内します。
主な機能
- 01プラグイン設定と主要クラスの関係
- 02アビリティ、効果、属性、タグのパターン
- 03アビリティのライフサイクルと起動方法
- 04ネットワーク、レプリケーション、予測の解説
- 05実装上の注意点と参考資料
活用シーン
- 01プロジェクトでのGameplay Ability System設定
- 02C++によるアビリティとゲームプレイ効果の実装
- 03マルチプレイヤーのレプリケーションと予測の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ maystudios/ claude-skills --skill unreal-gasインストール後、Claude Code で/unreal-gasを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/core-classes.mdeffects-and-attributes.mdnetworking.mdpatterns-and-pitfalls.md詳細
Unreal Engine Gameplay Ability System (GAS) -- C++ ガイド
公式ドキュメント(最新情報は必ず確認してください)
以下は信頼できる情報源です。GAS はエンジンのバージョンによって進化するため、API の最新情報は以下を参照してください。
tranek によるコミュニティドキュメントは、GAS に関する単一のリソースとしては最も包括的です。Epic の公式ドキュメントでは扱われていない高度なトピック(予測の内部動作、最適化、レプリケーションモード、落とし穴)を網羅しています。エッジケースや本番環境での実践例については、必ず確認してください。
Lyra Sample Project は、Epic が推奨する GAS の実装リファレンスです。
プラグインのセットアップ
- エディターで Gameplay Abilities プラグインを有効にします
Build.csに追加します。PublicDependencyModuleNames.AddRange(new string[] { "GameplayAbilities", "GameplayTags", "GameplayTasks" });- UE 5.2 以前では、AssetManager または GameInstance で
UAbilitySystemGlobals::Get().InitGlobalData()を呼び出します。UE 5.3 以降では自動的に実行されます。
コアアーキテクチャ
クラスの全リファレンス、セットアップパターン、C++ コードスニペットについては、references/core-classes.md を参照してください。
システムの概要:
Actor
+-- UAbilitySystemComponent (ASC) --- manages everything below
+-- UGameplayAbility instances (granted abilities)
| +-- UAbilityTask instances (async execution)
+-- UAttributeSet instances (numeric data)
+-- Active UGameplayEffect specs (modifiers)
+-- FGameplayTag container (status/state)
+-- GameplayCue triggers (cosmetic FX)
主な関係:
- ASC は中心的なハブです。Actor ごとに 1 つ配置します(Pawn または PlayerState に配置してください)
- Ability は Effect を作成・適用し、対象の Attribute と Tag を変更します
- Effect のタグが
GameplayCue.*タグと一致すると、Cue が自動的にトリガーされます - Tag は、システム全体で Ability の有効化、ブロック、キャンセルを制御します
- AbilityTask は Ability 内での非同期処理(モンタージュ、遅延、ターゲティング)を処理します
Gameplay Effect クイックリファレンス
詳細な GE パターン、モディファイアの計算、スタック、クールダウン、Attribute の処理については、references/effects-and-attributes.md を参照してください。
持続時間の種類:
- Instant -- BaseValue を永続的に変更し、アクティブ状態として追跡されることはありません
- Duration -- CurrentValue を変更し、期限が切れると自動的に元に戻ります
- Infinite -- 明示的に削除されるまで持続します
モディファイアの集計: ((Base + Additive) * Multiplicative) / Division
- 乗算/除算では
1 + Sum(Mods - 1)を使用します。+50% の乗算が 2 つある場合、+125% ではなく +100% になります
Ability のライフサイクル
GiveAbility() -> TryActivateAbility() -> CanActivateAbility()
-> ActivateAbility() [override this] -> CommitAbility() [apply cost/cooldown]
-> ... do work (AbilityTasks) ... -> EndAbility()
4 つの有効化方法: 明示的なハンドル、GameplayEvent、GameplayEffect タグ、入力コード。
インスタンス化ポリシー:
InstancedPerActor-- 推奨されるデフォルト設定です。Actor ごとに 1 つのインスタンスを再利用しますInstancedPerExecution-- 有効化のたびに新しいインスタンスを作成します。最もシンプルですが、最も負荷が高くなりますNonInstanced-- CDO を使用します。パフォーマンスは最良ですが、C++ 専用で、状態/デリゲート/RPC は使用できません
ネットワークと予測
複製モード、予測の詳細、マルチプレイヤーのパターンについては、references/networking.mdを参照してください。
ネット実行ポリシー: LocalPredicted、LocalOnly、ServerOnly、ServerInitiated。
主なルール:
- ASC は Attributes と Tags をすべてのクライアントに複製しますが、帯域幅を最適化するため、アビリティやエフェクトは複製しません。
- 即時ではない GE は予測ロールバックをサポートしますが、即時の GE(ダメージ)はサポートしません。
- Cues は信頼性のない複製を使用するため、コスメティック用途に限られます。ゲームプレイロジックには使用しないでください。
- リモートアクティベーションを機能させるには、ASC の所有 Actor がローカルで制御されている必要があります。
- PlayerState ベースの ASC では、プレイヤーには Mixed 複製を、AI には Minimal 複製を使用してください。
よくあるパターンと落とし穴
実装例と既知の問題については、references/patterns-and-pitfalls.mdを参照してください。
重大な落とし穴:
PreAttributeChangeでクランプしても、モディファイアは恒久的には変更されません。代わりに、PostGameplayEffectExecuteで BaseValue をクランプしてください。Server Respects Remote Ability Cancellationは、得られる利点以上に問題を引き起こします。無効にしてください。- GameplayAbility の
Replication Policyは名前が誤解を招きやすいため、使用しないでください。 - PlayerState の
NetUpdateFrequencyはデフォルト値が低すぎます。値を上げるか、Adaptive Network Update Frequency を有効にしてください。 - 実行時に AttributeSets を削除すると、クライアントがクラッシュすることがあります。
- アニメーションモンタージュの複製には、
PlayMontageを直接使わず、PlayMontageAndWaitAbilityTask を使用してください。