愛をもってゲームをつくるゴリラのブログ

UE5勉強中のゴリラがいろいろ頑張ります。

GameplayEffect - その5 Display 編

こんばんは、ごりです。

 

goolee.hatenablog.com

 

こちらの記事の続きを書いていきます。

今回でGameplayEffect の説明ラストになります。

f:id:m-goolee-y:20181128223826p:plain

最後に説明する項目は Display です。

このEffectが適用された時の見た目の設定部分になります。

 

  • Require Modifier Success to Trigger Cues
    このフラグが true だとこのEffectの適用が成功した時にCue が実行されます。
    デフォルトでは true です。
  • Suppress Stacking Cues
    このフラグが true だとスタックされるEffectは
    1つ目だけCueが実行されます。
    デフォルトでは false です。
  • Gameplay Cues
    このEffectで実行されるCue をここに設定します。

    Magnitude Attribute : ここで指定したAttributeSet の値をもとにCueの大きさを設定します。未指定の場合は、下記のレベルを参照します。

    Min Level : Cueの最小レベル

    Max Level : Cueの最大レベル

    Gameplay Cue Tags :  ここで設定したタグと一致する
                                         GameplayCueを実行します。
  • UIData
    このエフェクトをUIで表現するためのデータを設定できます。
    サンプルとして、UGameplayEffectUIData  クラスを継承した
    Gameplay Effect UI Data Text Only クラスが用意されています。

 

以上が Display の説明となります。

間違っている点や質問等ありましたら、連絡していただけると幸いです。

 

さて、5回にわたって GameplayEffect の説明をしてきましたが、AttributeSet や GameplayCue といった説明していない機能もあります。

今後そちらの記事も書いていきたいと思います。

 

ではでは。

 

 

GameplayEffect - その4 Immunity と Granted Abilities 編

こんばんは、ごりです。
 

goolee.hatenablog.com

 

今日はこちらの記事の続きから書いていきます。

ImmunityとGranted Abilities についてです。

まずはImmunity から。

f:id:m-goolee-y:20181127212449p:plain

  • GrantedApplicationImmunityTags
    GrantedTagsのAddedにタグが設定されているGameplayEffect に対して

    Requires Tags : ここで指定したタグが含まれている場合適用されない。

    Ignore Tags : ここで指定したタグが含まれていない場合適用されない。

  • Granted Application immunity Query

    Owning Tag Query : このGameplayEffect が与えるタグに対して適用できるかどうかの計算式を設定できる。 

    Effect Tag Query : このGameplayEffect が持つタグに対して適用できるかどうかの計算式を設定できる。

    Source Tag Query : このGameplayEffect の発生源が持つタグに対して適用可能かどうかの計算式を設定できる。

    Modifying Attribute : ここで指定されたAttributeSetの値を変更しようとするGameplayEffectは適用されない

    Effect Source : ここで指定したオブジェクトがGameplayEffectの発生源のGameplayEffectは適用されない。

    Effect Deefinition : このEffectが適用中はここで指定したGameplayEffect は適用されない。

 

つづいて Granted Abilitiesについて。

f:id:m-goolee-y:20181127212537p:plain

  • Ability
    このEffectを摘要した際に追加するAbility

  • Level
    ここで指定したAbility を追加するためのレベル

  • Input ID 
    追加するAbilityを認識するためのID
    -1の場合、自動で設定される

  • Removal Policy
    追加したAbilityが取り外される際の処理を設定できます。

    Cancel Ability Immediately : 実行中のAbilityはキャンセルされ、取り外される。

    Remove Ability on End : Abilityが終了した際に、取り外される。

    Do Nothing :  このGameplayEffectが取り外されても、Abilityは取り外されない。

 

以上が Immunity と Granted Abilities についての説明になります。

次回が GameplayEffect の説明ラストになります。

 

間違っている点や、質問等ありましたら、連絡していただけると幸いです。

ではでは。

 

 

GameplayEffect - その3 Expiration と Tags 編

こんばんは、ごりです。 

goolee.hatenablog.com

 今日はこちらの記事の続きから書いていきます。

GameplayEffectの Expiration と Tags のカテゴリの説明です。

まず Expiration からです。

 

f:id:m-goolee-y:20181125143825p:plain

 

  • Premature Expritation Effect Classes
    Effectの強制終了や、タグが消されたなどの時に                適用される Effect です。
    Duration Policy が Has Duration の時限定。

  • Routin Expiration Effect Classes
    持続時間が経ってEffectが終了する時に適用されるEffectです。
    Duration Policy が Has Duration の時限定。

 

続いて Tags の説明です。

f:id:m-goolee-y:20181126193832p:plain

  • GameplayEffectAssetTag
    エフェクト自身のタグです。

  • GrantedTag
    このEffectを適用しているアクタに設定するタグです。

  • Ongoing Tag Requirements
    パラメータ変更のオンオフを設定できます。
    ただし、オフになっても対象から取り外されるわけではありません。

  • Application Tag Requirements
    対象に適用できるかをこのTagで設定できます。

  • Remove Gameplay Effects with Tags 
    エフェクト適用時にここで指定したタグを持つEffectは外されます。

このTagsについてはまた別の日に使い方を書いていきたいと思います。

 

以上が、Expiration と Tags の説明になります。

間違っている点など、質問ございましたら連絡いただけると幸いです。

ではでは。

 

GameplayEffect - その2 Stacking と Overflow 編

こんにちは、ごりです。

goolee.hatenablog.com

今日はこちらの記事の続きを書きたいと思います。
GameplayEffectのカテゴリの Stacking と Overflow についての説明です。

まず Stacking についてです。

f:id:m-goolee-y:20181125130355p:plain

  • Stacking Type
    同じEffectが適用方法を設定します。
    None :  積まれず、別々のインスタンスとして、扱われます。
    Aggregate by Source : Effectの発生源のスタックに積まれていきます。
    Aggregate by Target : Effect の対象のスタックに積まれていきます。

  • Stack Limit Count
    スタックに積まれる最大数

  • Stack Duration Refresh Policy
    持続時間が設定されている場合、持続時間のリセット方法を設定可能。
    Reflesh on Successful Application : スタックに新たに積まれた際に
                    持続時間をリセット
    Never Reflesh : スタックに積まれても持続時間はリセットされません。

  • Stack Period Reset Policy
    適用間隔が設定されている場合、適用間隔のリセット方法を設定可能。
    Reset on Successful Application : スタックに新たに積まれてからの
                                                           適用間隔にリセットされます。
    Never Reset : スタックに積まれても適用間隔は、
                           最初にEffectを適用してからの間隔になります。

  • Stack Expiration Policy
    持続時間が設定されていて、持続時間経過で、Effectが終了するときの
    スタックの処理方法を設定します。
  • Clear Entire Stack : Effectが終了すると、スタック全体がクリアされます。
    Remove Single Stack and Refresh Duration : スタックから一つ取り外され、
                         持続時間がリセットされます。
                         パラメータの変更はされない。
    Reflesh Duration : 持続時間だけがリセットされるため、
                                  実質無限にEffectが適用されるということになります。
                                  手動でStackから取り出す処理を作成する必要があります。

 

つづいて Overflow についてです。

f:id:m-goolee-y:20181125133926p:plain

Overflow は Stacking の設定と関わってきます。

  • Overflow Effects : スタックの上限(StackingのStack Limit Count)を
                                 超えた場合に適用されるEffect

  • Deny Overflow Application : trueの場合、上限を超えた際のEffectは適用されず、                                                 持続時間のリセットもされません。

  • Clear Stack on Overflow : trueの場合、スタックの上限を超えた際に、
                                              スタックすべてをクリア。デフォルトは false
                                              DenyOverflow Application をtrueで変更可能。

以上が、Stacking と Overflow についての説明となります。
間違っている点や質問などありましたらご連絡いただけると幸いです。

ではでは。

GameplayEffect - その1 GameplayEffect と Application 編

こんにちは、ごりです。

今日はGameplayEffectに関しての説明です。

Effectと聞くと火を出したりといった見た目の影響を想像する人が多いですが、

今回は内部のパラメータに影響を与えるといった意味で用いられる機能です。

 

f:id:m-goolee-y:20181124070701p:plain

カテゴリだけで9個あります。

設定項目が多いので複数回に分けて書いていきたいと思います。

 

その中から、今回はGameplayEffect,Application について

説明していきたいと思います。

f:id:m-goolee-y:20181124071431p:plain

まず、GameplayEffectについて

 

  • DurationPolicy 

パラメータに影響を与える時間を設定できます。

Instant : Effectが適用された瞬間に一度だけパラメータに影響を与えます。

Infinite : Effectが適用されてから取り消されるまでの間、

永続的に影響を当てます。

HasDuraion : Effectが適用されてから一定時間パラメータに影響を与えます。

 

Infinite,HasDuration にすると Period というカテゴリが追加されます。

f:id:m-goolee-y:20181124081415p:plain

Period : ここで指定した数値秒ごとに、パラメータの値が変更されます。

Execute Periodic Effect on Application : ここの値がfalseだと値が変更されるのは

指定秒経ってからになります。true の場合は 適用されてすぐに値が変更され、

指定秒経ったらまた値の変更がされるようになります。

デフォルトでは true になっています。

  • Modifiers

f:id:m-goolee-y:20181124072911p:plain

Modifiersはパラメータに与える数値の変化量を設定できます。

 

Attribute : 影響を与えるパラメータです。

        AttributeSet(そのうち記事にします) にある値を指定できます。

ModifierOp : 影響を与える際の値の計算方法です。

Modifier Magnitude : パラメータの変化量

SourceTags : パラメータに影響を与える発生源となったもののタグ

       Required Tags : ここで指定されたタグが全てあれば、対象に影響を与える。

       Ignore Tags :    ここで指定されたタグが全てあれば、対象に影響を与えない。

TargetTags :  パラメータに影響を与える対象となったもののタグ

       Required Tags : ここで指定されたタグが全てあれば、対象に影響を与える。

       Ignore Tags :   ここで指定されたタグが全てあれば、対象に影響を与えない。

 

  • Executions

f:id:m-goolee-y:20181124074149p:plain

Executionsは独自の計算方法を設定できます。

 

Calculation Class : 

GameplayEffectExecutionCalculation クラスを継承した、独自の計算クラスです。

Conditional GameplayEffects :  

       Effect Class : ここで指定した計算式でパラメータへの影響に成功した際に

           対象に適用するGameplayEffect

       Required Source Tags : 発生源にここに指定されたタグがあれば対象に適用する

 

  • ConditionalGameplayEffects

     Effect Class : このGameplayEffectが適用された際に

            対象に適用する別のGameplayEffect

        Required Source Tags : 発生源にここに指定されたタグがあれば対象に適用する

 

続いて、Apllication についてです。

f:id:m-goolee-y:20181124075702p:plain

  • Chance to Apply to Target 

このGameplayEffectを適用させる確率、1の場合は必ず適用

  • Execute Periodic Effect on Application

GameplayEffectCustomApplicationRequirement クラスを継承して、

適用可能かどうかの判定方法を設定できます。

 

以上が、設定項目 GameplayEffect、Applicationの説明になります。

また、間違っている点ありましたら、ご連絡いただけると幸いです。

ではでは。 

GameplayAbility - タグ編

お久しぶりです、ごりです。

 

3連休ですが家に引き込まって記事書き続けます。

今日は GameplayAbility についてです。
こちらは4.20から追加されたUE4のSampleプロジェクトのActionRPGで

使用されている機能ですね。

今日は使い方というよりも、設定項目の説明になります。
使い方を知りたい方は


おかわりはくまいさんがすごくわかりやすく解説していますので、
以下の記事を参考にしてください。

okawari-hakumai.hatenablog.com


アビリティを作成した際の、Default設定のこちらのTagsの項目についての説明です。

f:id:m-goolee-y:20181123114154p:plain

 

  • Ability Tags 

f:id:m-goolee-y:20181123115005p:plain

こちらのノードで、アビリティを実行するためのタグになります。

  • Cancel Ability with Tag

ここに設定されているタグと一致していて、実行中のアビリティはすべて、

中断されます。

  • Block Abilities with Tag

ここに設定されたタグと一致しているアビリティは、このアビリティを実行中には、

実行されません。

  • Activation Owned Tags

このアビリティが実行されると、ここに設定されたタグを持ちます。

  • Activation Required Tags

このアビリティを実行するためには、ここで設定されたタグを持っている

必要があります。

  • Activation Blocked Tags

ここで、設定されたタグを持っていると、このアビリティは実行されない。

 

ここから下の設定項目は [ TryActivateAbilityWithTag ]ではなく、

別の呼び出し方法にかかわってきます。

 

f:id:m-goolee-y:20181123120429p:plain

こちらのノードを使う際 Payload というピンがあります。

こちらはGameplayEventDataという構造体になっています。
この構造体を作成する中に、

f:id:m-goolee-y:20181123120726p:plain

Instigator Tags, Target Tags がありますので、ここに設定したタグが

かかわってきます。

  • Source Required Tags

Instigator Tags に設定されたタグが、ここに設定したタグに含まれていたら、

このアビリティが実行されます。

  • Source Blocked Tags

Instigator Tags に設定されたタグが、ここに設定したタグに含まれていたら、

このアビリティが実行されません。

  • Target Required Tags

Target Tags に設定されたタグが、ここに設定したタグに含まれていたら、

このアビリティが実行されます。

  • Target Block Tags

Target Tags に設定されたタグが、ここに設定したタグに含まれていたら、

このアビリティが実行されません。

 

以上が、GameplayAbility のTagsの説明になります。


まだDefaultの設定の中には、別の設定項目もあるのですが、

GameplayEffect というのが関わってきますので、今日はここまでにします。
GameplayEffectについては明日書かせていただきます。

 

一通りの説明が終わったら、GameplayAbilityを使って作った簡単な機能の

プロジェクトを公開したいですね。

 

また、今回の説明で間違っている点などありましたら、連絡していただけると

ありがたいです。 ではでは。

 

空中を歩くAIをつくってみる

こんばんは、ごりです。

2か月ぶりの更新です。

今回は飛行AIを作ってみたいと思います。

ナビメッシュだと地上のAIには使えるのに空中にいるAIには使えないんですよね...

 

www.unrealengine.com

 

上記のようなプラグインも出ているみたいですが、

今回はこのプラグインを使わずに作っていきたいと思います。

そしてナビメッシュも使いません。

 

UE4をやっている人なら一度は見たことのあるこのノードを使います。

  

f:id:m-goolee-y:20180903194747p:plain

 

これをつかってビヘイビアツリーのMoveToタスクを作ると、空中のキャラクターも動いてくれるようになります。

 

作り方は、まずビヘイビアツリーの

f:id:m-goolee-y:20180903193338p:plain

[新規タスク]のBTTask_BlueprintBase をクリックして、新しくブループリントクラスを作ります。

クリックするとビヘイビアツリーと同じフォルダに

f:id:m-goolee-y:20180903193533p:plain

こいつが作られるので、名前を BTTask_CustomMoveTo

に変更しておきましょう。

変更したらダブルクリックして開きます。

 

次に関数のオーバライド一覧から

RecieveExecuteAIをクリックします。

f:id:m-goolee-y:20180903201658p:plain

 

タスク開始時の処理を作っていきます。

ブラックボードに移動先の座標が書かれているとして、

[BlackBoard Key Selector]型の変数を追加します。

名前は NextLocation とします。

f:id:m-goolee-y:20180903195323p:plain

また移動先までの距離(Length)の変数も追加しておきます。

変数を追加したら下記の画像の通りに、ノードをつないでいきます。

f:id:m-goolee-y:20180903202739p:plain

 

開始時の処理はこれで完了です。

続いて移動処理を書いていきます。

関数のオーバーライド一覧から[Recieve Tick AIをクリックします。

f:id:m-goolee-y:20180903201535p:plain

 

ここで作る処理は、移動後の移動先までの残り距離の割合を計算し、閾値以下ならこのタスクは成功として返す処理となっています。

f:id:m-goolee-y:20180903203129p:plain

 

はい、これで自作のMoveToタスクが出来上がりました。

 

過去記事のEQSを使って動かしてみました

この時のAIのCharacter Movement はFlyingの状態にしてください。

 

www.youtube.com

 

ちゃんと空中を歩いていますね。

アニメーションを飛行アニメーションに変えたらそれっぽくなるかもしれないですね。

ちなみにこのカスタムMoveToはパス検索などしていないので、現状障害物をよけて進んだりはできません。

障害物をよける処理については、また後日に書きたいと思います。

 

ではまた。 

 

追記

CEDEC2018で空中のパス探索についての講演がありましたね。

それについても、そのうち実装出来たらと思います。