エンジニアもどきのよしなしごと

仕事や趣味の備忘録

Victory Pluginのご紹介

この記事はUnrealEngine 4 (UE4) 其の弐 Advent Calendar 2015の18日目の記事です。

qiita.com

気づいたら開発者っていうよりも、UE4関連の情報を共有・拡散する人になりつつあるUsuiと申します。

昨日は@tarotarokunさんの、「C++を使ったSocketを使った通信周りの書き方」という記事でした。ゲーム同士の通信だけではなく、昨今注目されているIoTデバイスにも応用が利くということで、そちら方面にも興味がある身としては、非常に為になる内容でした。ありがとうございます!

 

さて、今回はVictoryPluginの概要と導入手順、また用意されているブループリントノードを何点か紹介したいと思います。

プラグインを導入した上でのパッケージング等については触れておりませんので、その点ご了承ください。

また、間違いがありましたら、やんわり指摘いただけると助かります(苦笑)

 

VictoryPluginとは?

forums.unrealengine.com

C++コードからしか使用できない機能をブループリントで使えるようにしよう!」という意図の元で、現在も機能の追加が行われているプラグインです。

中身は凡そ200~300個のブループリントのノード群で構成されており、数学計算補助、各種ファイルの読み書き、物理、アニメーション、ネットワークなど、その種類も多岐に渡っています。

 

開発をメインで行っているのは、Rama Iyerさん。

VictoryPlugin以外にも、様々な知見をForumsやEpic Wiki、ご自身のサイトへ投稿されていらっしゃいます。最近Twitterも始められたようです。

RamaさんのTwitter:@ue4code

ご自身が更新したForumsの告知等を行っていらっしゃいますので、興味がわいた方はフォローしてみてはいかがでしょうか?

 

VictoryPluginの導入

  1. Rama's Vertex Snap Editor Plugin - Epic Wikiにアクセスします。

  2. Plugin Release Dates and UE4 Engine Versionsと記載された下に、UE4のエンジンバージョンに対応したVictory Pluginのバージョン(リリース日付)が記載されています。今回はUE4.9.2に対応している「October 14th, 2015」をダウンロードします。

  3. File:VictoryPlugin.zip - Epic Wikiにアクセスし、先ほど確認した日付のzipファイルをダウンロードします。Date/Time欄のリンクをクリックすれば、ダウンロードが始まります。

  4. zip形式のファイルとなっているので、それを解凍します。
  5. 導入したいUE4のプロジェクトフォルダの下(Config, Content等と同じ場所)に、「Plugins」フォルダがあるかを確認します。無ければ作成します。
  6. Pluginsフォルダの下に、先ほど解凍したフォルダをコピーします。
  7. UE4エディタを起動します。
  8. メニューから編集->Pluginsを選択します。
  9. 以下の画像のようにProject下に、Victory Pluginという項目が出来ていること、その中のVictory Editor & Blueprint Libraryの、Enabledのチェックが入っているかを確認し、入っていなければチェックを入れます。            f:id:usui3153m:20151213071911p:plain

  10. ブループリントのEventGraph(レベルブループリントでも、アクターに紐づくブループリントでも、どれでも構いません。)で右クリックをし、ブループリント上で使用可能なノードの一覧を表示させ、「Victory BP Library」という項目が追加されていることを確認します。  f:id:usui3153m:20151217003450p:plain

以上で導入は終了です。

 

ブループリントノードの紹介

膨大なブループリントノードの中から何個か紹介したいと思います。

あえてばらばらのジャンルから抜き出して記載していますので、見づらいかもしれませんが、その点ご了承ください。

キー入力周りに関しては、黒幕さんがまとめてくださっていますので、そちらを参考のほど。

qiita.com

 

JoyFileIO_GetFiles

f:id:usui3153m:20151215174106p:plain

引数

 Root Folder Full Path:ファイルを検索するフォルダパス(絶対パスを指定)

 Ext:ファイルの検索条件。指定が無い場合は全てのファイルを取得する。

        *.*のように指定。

戻値

 Files:取得したファイル名。

 Return Value:true=取得に成功。

フォルダまでの絶対パスと検索するキーワードを指定して、一致したファイル全ての名前を取得します。

ファイル読み込み関連では、サブフォルダまで検索を行うものや、全てのセーブデータファイル名を取得する。といったノードが用意されています。

GetAllWidgetsOfClass

f:id:usui3153m:20151215174104p:plain

引数

 Widget Class:取得したいWidgetClass

 Top Level Only:true = ビューポート上に設定されているものの中から取得する。

戻値

 Found Widgets:見つかったウィジェットオブジェクト

プロジェクト上に設定されている指定したWidget Classのオブジェクトを全て取得します。

UMG関連では、ビューポート上に存在する指定WidgetClassを全て削除するものや、指定WidgetClassが存在しているかどうかを調べるといったノードが用意されています。

RealWorldTime__GetDifferenceBetweenTimes

f:id:usui3153m:20151215174059p:plain

引数

 Previous Time 1:差分をとりたい時間1

 Previous Time 2:差分をとりたい時間2

 ※フォーマットはFDataTime.ToString()に則ったもの。

戻値

 Milliseconds:ミリ秒

 Seconds:秒

 Minutes:分

 Hours:時間

時間を指定して、それらの差分を取得します。

時間処理関連では、現在時刻(OSに設定されている時間)を取得するものや、現在時間と比較したい時間を設定し、その差分を取得するようなノードも用意されています。

Physics__EnterRagDoll

f:id:usui3153m:20151215174107p:plain

引数

 The Character:ラグドール状態にしたいキャラクターオブジェクト

戻値

 Return Value:true=ラグドール状態にすることに成功した。

指定したキャラクターをラグドール状態にします。

ラグドール関連では、指定キャラクターがラグドール状態か判定するものや、ラグドール状態になった場所の座標を取得するもの、ラグドール状態から復帰させるといったノードも用意されています。

Conversion__FloatToRoundedInteger

f:id:usui3153m:20151215174103p:plain

引数

 IN Float :変換したいfloat値

戻値

 Return Value:変換されたint値

float値の小数第一位を四捨五入して、int値を返します。

数学処理関連では、+=, -=の演算子を使用可能とするもの、int, float配列をソートするもの、最大値、最小値を取得するものなど、数多くノードが用意されています。

また、TKMathFunctionLibraryという、数学処理メインのBlueprintFunctionLibraryもVictoryPluginの中に付属しています。

HasSubstring

f:id:usui3153m:20151215174105p:plain

引数

 Search In :検索対象となる文字列

 Substring:検索したい文字列

 Search Case :大文字、小文字で分けて判定するか否か。

 Search Dir:文字列の先頭から検索するか、末尾から検索するか。

戻値

 Return Value:true=文字列が見つかった。

検索対象となる文字列の中に、指定した文字列があるかどうかを調べます。

文字列処理関連では、文字列を結合するもの、各文字列に接頭語をつけて結合するといったノードがあります。

 VictorySoundVolumeChange

f:id:usui3153m:20151215174102p:plain

引数

 SoundClassObject:音量を調整したいサウンドクラスオブジェクト

 NewVolume:設定したい音量

戻値

 ReturnValue:true=音量設定成功

指定したサウンドクラスオブジェクトの音量を変更します。

サウンド関連では、サウンドクラスオブジェクトから現在の音量を取得するノードもあります。

 VictoryGetCustomConfigVar_Bool

f:id:usui3153m:20151217003509p:plain

引数

 SectionName:指定変数が設定されているセクション名

 VariableName:取得したい変数名

戻値

 Return Value:VariableNameに設定されていた値

プロジェクトフォルダ/Saved/Config/WIndows/Game.iniファイルから指定のデータを取得します。

同様のものが以下の変数の型分用意されています。

 

 変数の型:int32,float,FVector,FRotator,FLinearColor,FString

 VictorySetCustomConfigVar_Bool
f:id:usui3153m:20151217004132p:plain

引数

 SectionName:指定変数を保存したいセクション名

 VariableName:保存したい値の変数名

 Value:VariableNameとして保存したい値

プロジェクトフォルダ/Saved/Config/WIndows/Game.iniファイルに指定のデータを設定します。

同様のものが以下の変数の型分用意されています。

 変数の型:int32,float,FVector,FRotator,FLinearColor,FString

 

まとめ

VictoryPluginの導入から機能の紹介までというテーマで今回ざっくりと書かせていただきましたが、いかがでしたでしょうか?

他にどんな機能があるのか気になる!という方は、冒頭で紹介したスレッドで1つ1つ機能が解説されていますので、そちらを見てみることをオススメします。

ソースコードを読むことに抵抗が無いのであれば、プラグインをダウンロードして、ソースを読んだほうが早いかもしれません。

普段ブループリントのみで開発をされている方々にとっても、またプラグイン開発、ブループリント関数ライブラリの開発に興味がある方にとっても、非常に有用なプラグインだと思いますので、興味がわいた方は、ぜひダウンロードして使ってみてください!

 

告知

ただ、正直英語ばっかり(APIリファレンスも英語しかないし)の中で、Google翻訳に頼ったり、辞書引いたりして調べるのは面倒だと、仰る貴方に朗報です。

VictoryPluginの各ブループリントノードの機能を日本語でまとめた上で公開します!

現在、絶賛中身の解析・コメントの翻訳等々を行っているところです。

…この記事を公開する時点では、7割くらい調べられていたらいいなーと考えています。(笑)

Googleスプレッドシートで公開するのか、エクセルファイルを配布するのか、ホームページやwikiページを作成するのか、そのあたりはまだ決めていませんので、欲しいという方がいらっしゃいましたら、ご意見いただけると助かります。

また、既に利用されている方がいらっしゃいましたら、このブループリントはこんな機能だったよ。とか教えていただけると幸いです。

 

 明日のUE4 Advent Calendar

 明日は@s_ssk13さんこと、我らが佐々木さんです!

「何かやります!」とのことですが、一体どんな内容になるのでしょうか…?

非常に楽しみです。佐々木さん、よろしくお願いします!

 

最後まで目を通してくださり、ありがとうございました!