mcpField
U
unreal-gas

unreal-gas

github.com/maystudios開発26130 回インストール11 週間前に更新
リポジトリ

unreal-gas について

unreal-gasは、Unreal EngineのGameplay Ability Systemを実装する開発者向けのC++ガイドです。プラグイン設定、構成、効果、アビリティのライフサイクル、ネットワーク処理、よくある問題を扱い、公式およびコミュニティの資料も案内します。

主な機能

  1. 01プラグイン設定と主要クラスの関係
  2. 02アビリティ、効果、属性、タグのパターン
  3. 03アビリティのライフサイクルと起動方法
  4. 04ネットワーク、レプリケーション、予測の解説
  5. 05実装上の注意点と参考資料

活用シーン

  1. 01プロジェクトでのGameplay Ability System設定
  2. 02C++によるアビリティとゲームプレイ効果の実装
  3. 03マルチプレイヤーのレプリケーションと予測の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/maystudios/claude-skills --skill unreal-gas

インストール後、Claude Code で/unreal-gasを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
core-classes.md
effects-and-attributes.md
networking.md
patterns-and-pitfalls.md

詳細

Unreal Engine Gameplay Ability System (GAS) -- C++ ガイド

公式ドキュメント(最新情報は必ず確認してください)

以下は信頼できる情報源です。GAS はエンジンのバージョンによって進化するため、API の最新情報は以下を参照してください。

ソースURL
Epic GAS ランディングページhttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-ability-system-for-unreal-engine
GAS を理解する(概要)https://dev.epicgames.com/documentation/en-us/unreal-engine/understanding-the-unreal-engine-gameplay-ability-system
ASC と属性https://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-ability-system-component-and-gameplay-attributes-in-unreal-engine
Gameplay Abilityhttps://dev.epicgames.com/documentation/en-us/unreal-engine/using-gameplay-abilities-in-unreal-engine
属性と Attribute Sethttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-attributes-and-attribute-sets-for-the-gameplay-ability-system-in-unreal-engine
Gameplay Effecthttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-effects-for-the-gameplay-ability-system-in-unreal-engine
Ability Taskhttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-ability-tasks-in-unreal-engine
コミュニティ GAS ドキュメント(tranek)https://github.com/tranek/GASDocumentation

tranek によるコミュニティドキュメントは、GAS に関する単一のリソースとしては最も包括的です。Epic の公式ドキュメントでは扱われていない高度なトピック(予測の内部動作、最適化、レプリケーションモード、落とし穴)を網羅しています。エッジケースや本番環境での実践例については、必ず確認してください。

Lyra Sample Project は、Epic が推奨する GAS の実装リファレンスです。

プラグインのセットアップ

  1. エディターで Gameplay Abilities プラグインを有効にします
  2. Build.cs に追加します。
    PublicDependencyModuleNames.AddRange(new string[] {
        "GameplayAbilities", "GameplayTags", "GameplayTasks"
    });
    
  3. 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を直接使わず、PlayMontageAndWait AbilityTask を使用してください。

コメント