GameplayAbilitiesの使い方(セットアップ編)
UnrealEngine4.20のリリースに伴いActionRPGのサンプルが公開されたので、早速調査を開始したのですが・・・これがまぁいかんせん範囲が広くてどこから手を付ければって感じでして。
まずはプレイヤー周りかなーと思って見始めたところ、どうもActionRPGサンプルではGameplayAbilitiesプラグインというものを使ってるらしい。
機能の全体像を把握しておくためにも、ここを先に理解しておいた方が良さそうだ、ということで
GameplayAbilities and You - Epic Wiki
まずは、こちらを見つつ、ごにょごにょしてみた結果を書いてみたいと思います。
あ、もちろん英語が得意な方は上記記事を直接読んでいただいたほうがよいかと思います、オフィシャルなので。
あと、本記事はC++とBlueprintをミックスして使う予定です。なぜならGameplayAbilitiesプラグインがそういうものだからw
なので、本記事もUE4のC++にも多少触れたことがある人が対象となっております。
GameplayAbilitiesとは?
主にアクションゲーム向けだと思いますが、プレイヤーが剣で敵を攻撃したり、ファイヤーボールを発射し敵に当たり爆発してダメージを与えたり、範囲爆発を発生させたり、またそれに伴ってMPやスタミナを消費したりと、その辺の実装をシステム的にサポートしてくれる部分とうたわれています。
言葉だけ聞くとものすごく便利そうですが、本当にそうなのだろうか・・・甘い言葉に過去の自分の経験が警告を発しますw
いずれにしても、使ってみないとわからないのでとりあえず触ってみましょう。
1個ずつ順を追っていきます。
プロジェクト作成
UEの4.20を起動し、[新規プロジェクト]→[C++]→[ThirdPerson]でプロジェクトを作ります。
設定は、デスクトップ、ハイエンド、スターターコンテンツ有りで、プロジェクト名はGPAとしました。
次にプラグインの追加します。
これでプラグインウィンドウを開いて、Gameplayのカテゴリの一番下にある・・・
このGameplay AbilitiesをEnableにします。
チェックボックスをクリックしたときに「こいつはまだベータ版だけどいっすか?」的な確認ダイアログが出たらYESを押してください。
さらに、このプラグインを有効かするにはUE4の再起動が必要だといわれるので
ここのRestart nowを押してください。これでプラグインが有効になります。
AbilitySystemComponentを追加
つぎにVisualStudioでC++側の設定を行います。VisualStudioを閉じてしまった場合はGPA.slnをダブルクリックして再起動しておいてください。
GPA.Build.csを編集して、ビルド時にGameplayAbilitiesのモジュールがビルドされるように変更します。
このファイルのPublicDependencyModuleNames.AddRangeの引数にある文字列リストの最後に"GameplayAbilities"を加えます。
こんな感じですね。
次にキャラクターのヘッダとC++ファイルにAbilitySystemComponentを追加します。
〇GPACharacter.h
- アビリティシステムを使うために#include "AbilitySystemInterface.h"を追加。
- AGPACharacterの継承もとにpublic IAbilitySystemInterfaceを追加
-
AbilitySystemComponentとアクセッサの追加
記述場所はAGPACharacterのクラス定義の一番後ろ、GetFollowCameraの定義の行の後に追加します。
これでヘッダの変更は終了。
〇GPACharacter.cpp
- AbilitySystemComponent.hをインクルード
- コンストラクタの記述追加
コンストラクタの最後、Noteのコメント行の後ろにAbilitySystemComponentを生成する記述を追記
- PossessedByの実装
PossessedByでコントローラに所有されたときにアビリティシステムをリフレッシュします。
この機能は一瞬不要に見えますが、ネットワーク対応ゲームでは先にキャラクタが生成されたあとでコントローラから所有処理が走ることがあるので、入れておいたほうがよいみたいです。
さて、ここまで来たらUE4エディタ側は「すべて保存」して閉じておきます。(起動していてもリロードでおかしくなるので)
VisualStudio側でビルドして通るか確認してください。
ブループリントちゃんのセットアップ
さて、次からは実際にキャラクターにアビリティを追加して・・・・行きたいのですが、このままUE4標準マネキンだとアクションさせるモーションがないので、今回は
株式会社 Indie-us Gamesさんのところで配布されているブループリントちゃんを使わせていただきたいと思います。
ブループリントちゃんをダウンロード&展開していただきUE4エディタを閉じた状態で
BLUEPRINTchan\BPchan\Contentの中にあるBluePrintChanフォルダを、GPA\Contentの中にコピーしてください。
完了したらGAP.uprojectをダブルクリックして再びUE4エディタを起動しましょう。
で、このままプレイしてしまうとマネキンがプレイヤーとして動いてしまうので、アウトライナのThirdPersonCharacterを選択し
詳細のThirdPersonCharacterのPawnの中にあるAuto Possessed Playerを
このようにDisabledにしておいてください。
次にコンテンツブラウザでコンテンツ→BluePrintChan→BluePrintにあるBP_BPChanを
ドラッグ&ドロップでレベル上に配置してください。
そして先ほどのマネキンとは反対にアウトライナ上のBP_BPChanが選ばれている状態で
詳細のBP_BPChanのPawnの中にあるAuto Possessed PlayerをPlayer 0にしてください。
できましたら一旦すべてを保存してプレイしてみましょう。
このようにプレイヤーキャラクターとして動かせるようになっていれば成功です。
セットアップの最後に、ブループリントちゃんをAbilitySystemを保持しているGPACharacterを派生させたものに変更します。
BP_BPChanのブループリントをダブルクリックで開いて、コンポーネントにあるCameraBoomとFollowCameraを削除します。
これらはGPACharacter側ですでに保持しているためです。
次にBP_BPchanのクラス設定を押し
詳細パネルのクラスオプションで親クラスをCharacterからGPACharacterに変更します。
これでブループリントちゃんもアビリティを保持できるようになりました。
コンパイルして保存してください。
最後に、再度プレイを行ってみて正常にブループリントちゃんが動かせるか確認してみてください。
さてこの後は?
セットアップ編はこれで終わりです。お疲れさまでした。
次回は実際にアビリティを作ってブループリントちゃんに実行していただきます!