UE4 ネットワークで乱数を使う
UE4の乱数は各クライアントで処理が行われるため、
乱数が統一できません。
ランダムにMeshを切り替えるなどの処理を行いたい場合は、
乱数の結果が各クライアントで一致しなければ
見た目に不具合が出ます。
そういうときの対策を書いていきます。
サンプルとして、
ランダムにStaticMeshを切り替える処理を行います。
今回は4.19.2を使用しています。
右クリックからブループリントクラスを選択します。
親クラスはCharacterを選択します。
Actorや、Pawnであっても問題ありません。
作成したBPを開きStaticMeshコンポーネントを追加します。
変数を1つ作成します。
StaticMesh型の変数です。中身は空で構いません。
カスタムイベントを作成します。
StaticMeshを切り替える処理です。
切り替える候補もここで決めています。
先程作成した変数はここで今のMeshと違うかどうかを判別するために
使用しています。
今回のメインです。
再現性のある乱数を生成します。
いわゆるシード的なアレです。
公式にも解説がありますし、
他の方のブログでも見かけたので解説は端折ります。
サーバーとクライアントで処理を分け、
先程のカスタムイベントを呼び出します。
左クリックでMeshを切り替えるようにしました。
切り替わりました。
UE4 Wwise始めました(導入編)
何となくWwiseを始めました。
導入だけで長くなりそうなので、
初期設定などは別記事にまとめたいと思います。
まずはWwise Launcherをインストールします。
Wwise Launcherのインストールを行います。
私はWindows環境で作業を行うため
Windowsを選択しています。
ダウンロードしたファイルを開きます。
するとWwise Launcherが立ち上がるので、
ログインを行います。
アカウントを持っていないのであれば、Sign up nowのボタンから
アカウントを作成しましょう。
ログインを行うとこのような画面が出ます。
Install Wwise バージョンのボタンをクリックして、
Wwiseをインストールしましょう。
基本的に必要になるのは、AuthoringとSDK(C++)です。
WwiseのチュートリアルにCube(Demo)を使用しているものがあったので、
一応これも一緒にインストールしました。
環境や、配布するものに合わせて、チェックを入れましょう。
後はインストールするパスを入力して、
Nextのボタンをクリックします。
次にインストールするプラグインを選択します。
特に目的がなければ、デフォルトのままで大丈夫です。
Installのボタンを押すとライセンス同意の確認画面に遷移します。
Acceptのボタンをクリックします。
インストールが完了しました。
次にUE4プロジェクトを作成します。
今回は4.19.2を使用しています。
C++の基本コード、スターターコンテンツ無しで作成します。
プロジェクトが作成できたら一度閉じておきましょう。
Wwise Launcherに戻ります。
Wwise LauncherのUNREAL ENGINEタブに
プロジェクトが追加されていると思います。
プロジェクトが追加されていなければ、
ハンバーガーアイコンからBrowse for project...をクリックします。
するとブラウザが立ち上がるので、
追加したいプロジェクトの.uprojectファイルを開きます。
これでプロジェクトが追加されました。
次にインテグレーションを行います。
Integrate Wwise into Project...ボタンをクリックします。
必要な情報を書き込みます。
画像はインテグレーションしたものを開き直したものなので、
多少見た目や文字が違いますが大凡同じです。
書き込み終わったら下の青いボタンをクリックします。
インテグレーションが完了しました。
UE4側からもWwiseの存在を感じることが出来るようになっています。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その3
前回の記事からの続きです。
合わせてお読みください。
BlutilityとEditor Scriptingの触りの部分を
前回と前々回の記事で書きました。
今回はエディタからStatic MeshにCollisionをつける
処理を書きたいと思います。
今回はテーブルのStatic MeshにCollisionを付けたいと思いますが、
デフォルトでCollisionがついているので、Collisionを削除しておきます
コリジョンからコリジョンを取り除くを選択してSimple Collisionを削除します。
これで下準備は終わりました。
前回同様にBPU_ActorActionに処理を追加していきます。
まずは、関数のオーバーライドからGet Supported Classを選択します。
この関数は右クリックからScript Actionsのタブを出すフィルター的なものです。
デフォルトでは全てのクラスがリターンノードに渡されています。
今回はStatic MeshにCollisionを付けさせるのが目的なので、
Static Mesh以外でScript Actionsのタブが出ると困ります。
なので、このようにStatic Mesh Actorに対してだけ、
Script Actionsのタブが出るようにしました。
確認してみました。
Atmospheric Fogで右クリック→出ない。
Chair→出た。
大丈夫っぽいです。
次にイベントグラフでこのように処理を書きました。
Get Selected Level Actorsで選択したActorを取得し、
それがStatic Mesh ActorであればSimple Collisionを追加するという処理です。
引数をもたせてCollisionの形も指定できるようにしました。
では確認してみます。
レベルに配置されているテーブルを右クリック
Script ActionsからCE_Add Simple Collisionsを選択します。
すると引数に渡していたShape Typeを選択する、
ダイアログが出てきました。
わかりやすくするため、Boxを選択します。
OKボタンを押すと画面が切り替わり、
指定したBoxコリジョンがついたのが確認できました。
今回のような処理だと実用性が低いですが、
Editor Scriptingで追加されたノードはかなり多いうえに、
c++ではなくノードでこのようなことができる機能は、
非常に面白いと思います。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その2
前回の記事からの続きです。
合わせてお読みください。
前回の記事でBlutilityの使用と、
2つのアセットを作成しました。
今回はそれらの中にEditor Scriptingを
混ぜ込んでいきたいと思います。
Editor Scriptingを有効にする
まずはEditor Scriptingを有効にします。
エディタの左上のPluginsを開きます。
Editor Scripting Utilitiesを有効にしてエディタを再起動しましょう。
Editor Scriptingを有効にすると
ブループリントユーティリティのノード一覧に
このようなものが追加されます。
処理を追加する
前回の記事で作成したBPU_ActorActionに処理を追加します。
まずはこのように処理を組んでみました。
次にレベルに配置してある適当なアセットを右クリック、
先程作成したCustom Eventを呼び出します。
上手く動いていますね。
アウトライナから複数選択した場合も
動きました。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その1
今回は「Unreal Stream Japan | UE4.20で入る新機能の一部をご紹介」
で紹介されていたEditor Scriptingについて
何回かに分けて書いていきます。
その2
その3
基本的なやり方は動画の方でも解説されていますが、
試した際にスクショを撮ったので、
こちらの方でもやっていきたいと思います。
準備
今回はUE4 4.20 Preview5を使用します。
空のプロジェクトを使用してプロジェクトを作成します。
作成しました。
まずは、Editor Scriptingに必要になるBlutilityを有効にします。
左上の編集からエディタの環境設定を開きます。
実験段階→Editor Utility Blueprints(Bluetility)にチェックを入れます。
アセットを作成する
コンテンツブラウザからブループリント→
ブループリントユーティリティを選択します。
ブループリントユーティリティを選択すると、
親クラスの選択画面が出てきます。
全てのクラスからAssetActionUtilityを選択します。
このようなアセットが作成されました。
アセットに処理を追加したいところですが、
まだこのアセットに何も処理を記述していないのでこのような画面が出てきます。
アセットを開くには、右クリックからブループリントの編集を選択します。
いつもの画面が開きました。
処理を追加する
簡単なCustom Eventを使用した処理を記述します。
処理はこれだけです。
Custom Eventを選択し、右側の詳細タブで
エディタで呼び出すにチェックを入れます。
コンパイルするとCustom Eventのマークが変わったと思います。
エディタから処理を呼び出す
何かしらのアセットを右クリックすると
Scripting Actionsというタブが追加されています。
この中に先程作成したCE_TestLogがあるので、クリックしてみす。
CE_TestLogに記述したPrintStringが呼び出されました。
また、BPU_AssetActionを一度閉じて、
ダブルクリックで開き直すとこのような画面が出てきます。
ここにあるボタンをクリックすると、先程右クリックから選択したものと
同じ効果を得られます。
また、クラスのデフォルトからAuto Run Default Actionにチェックを入れ、
関数のオーバーライドで呼び出したOn Default Action Checkedに
このような処理を記述することで、
アセットのダブルクリックからこの関数を呼び出すこともできます。
別のアセットを作成する
先程とは変わってActorActionUtilityを親にした、
ブループリントユーティリティを作成します。
こんな感じ。
こちらのアセットにはこのように処理を記述しました。
先程とほぼ同じです。
確認するには、
レベルに配置したアセットを右クリックするか、
アウトライナにあるアセットを右クリックしてください。
複数選択した際にも実行されました。
まとめ
Asset Action Utilityを親にした場合
・コンテンツブラウザのアセットを右クリックすることで、
CustomEventなどをエディタから呼び出せる
Actor Action Utilityを親にした場合
。レベルに配置したアセット、アウトライナにあるアセットを
右クリックすることで、Custom Eventなどをエディタから呼び出せる。
UE4 4.20 ゲーム内の音声を録音する
大体検証が終わったので、少しずつ記事にしたいと思います。
Unreal Engine 4.20 Preview
今回はUE4のレコード機能について書いていきます。
割と注目を集めている機能のようです。
追記
先に取り上げている方がいました。
検証にはUE4 4.20 Preview3を使用します。
注意
まず注意としてレコード機能を使用するには
Unreal Audioの機能を有効にする必要があります。
プロジェクトを作成後、
-audiomixerの引数を渡してエディタを起動するか、
このような.batファイルを作成し、エディタを開いてください。
必要なプラグインを有効にする
次に編集→Pluginsから
Sound Utilitiesプラグインを有効にして、エディタを再起動します。
必要なノードの解説
Start Recording Output
録音を開始するためのノードです。
パラメータ
・Expected Duration (float)
録音する秒数を指定するパラメータです。
0.0の場合は後述するFinish Recording Outputノードを使用する、
もしくはゲームを終了するまで録音を続けます。
・Submix to Record
指定したSound Submixの音声を録音します。
指定しない場合はエンジン出力の音が録音されるようです。
Sound Submixについてはこちら
[UE4] Sound Submix を使って音にエフェクトをかける|株式会社ヒストリア
Finish Recording Output
録音を終了するためのノードです。
パラメータ
・Export Type
録音したデータの保存形式を決定します。
Sound WaveファイルとWavファイルから選択できます。
・Name
保存するファイル名を決定するパラメータです。
「入力した文字列」.wavのように保存されます。
・Path
保存するパスを相対パスで指定するパラメータです。
録音したファイルがSound Waveファイルの場合は、
指定を行うとクラッシュすることがあるので指定しないことをおすすめします。
指定をしなかった場合は、コンテンツブラウザ直下に保存されます。
録音したファイルがWavファイルであった場合、
プロジェクトフォルダ/Saved/BouncedWavFiles/からの相対パスになります。
指定しなかった場合はBouncedWavFilesに保存されます。
・Submix to Record
機能的にはStart Recording Outputと同じようです。
使い分け方がよくわからないので、詳しい人教えてください。
・Existing Sound Wave to Overwrite
指定したSound Waveを上書きするパラメータ...だと思うんですが、
何も起こりません。
追記
ソースを確認すると外側だけの実装のようです。今後扱えるようになると思います。
実際に録音してみる
レベルブループリントにこのように記述しました。
Rキーを押して録音開始。
Rキーを離すか10秒経過すると録音終了になります。
ゲームを実行し、Rキーを押すと押すと録音できるかと思います。
例
このように処理を組んだ場合は
コンテンツブラウザ直下に書き出されます。
このように処理を組んだ場合は、
このように書き出されます。
なかなか面白い機能だと思います。
皆さんもUE4で録音しまくってください。