UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 ネットワークで乱数を使う

UE4の乱数は各クライアントで処理が行われるため、

乱数が統一できません。

 

ランダムにMeshを切り替えるなどの処理を行いたい場合は、

乱数の結果が各クライアントで一致しなければ

見た目に不具合が出ます。

そういうときの対策を書いていきます。

 

サンプルとして、

ランダムにStaticMeshを切り替える処理を行います。

 

今回は4.19.2を使用しています。

f:id:MozPaca:20180731150524p:plain

 

右クリックからブループリントクラスを選択します。

f:id:MozPaca:20180903172322p:plain

 

親クラスはCharacterを選択します。

Actorや、Pawnであっても問題ありません。

f:id:MozPaca:20180903172352p:plain

 

作成したBPを開きStaticMeshコンポーネントを追加します。

f:id:MozPaca:20180903172438p:plain

 

変数を1つ作成します。

StaticMesh型の変数です。中身は空で構いません。

f:id:MozPaca:20180903172731p:plain

 

カスタムイベントを作成します。

StaticMeshを切り替える処理です。

切り替える候補もここで決めています。

先程作成した変数はここで今のMeshと違うかどうかを判別するために

使用しています。

f:id:MozPaca:20180903173031p:plain

 

今回のメインです。

再現性のある乱数を生成します。

いわゆるシード的なアレです。

f:id:MozPaca:20180903173325p:plain

 

公式にも解説がありますし、

他の方のブログでも見かけたので解説は端折ります。

api.unrealengine.com

 

サーバーとクライアントで処理を分け、

先程のカスタムイベントを呼び出します。

f:id:MozPaca:20180903173546p:plain

 

左クリックでMeshを切り替えるようにしました。

f:id:MozPaca:20180903173641p:plain

 

切り替わりました。

f:id:MozPaca:20180903173952p:plain