🌥もこも制作日記🌥

創作に関することを書いていきます。だいたいゲーム系

UE4でネットワークPONG作成備忘録② バーの作成

はじめに

前回の続き。 今回はバーの作成を行います。ここにきてネットワークゲームで大切な概念である同期処理が出てくるので混乱しがちですか手元で試して色々いじってみてください。基本的にブログにはざっくりとした解説を書いて詳細は動画でお見せするスタイルでいきますのでご容赦ください 完成リポジトリは下に置いておきます。

github.com

作り方

動画

詳細は動画を見てください。

まだ作成してないです

全体の流れ

  1. Game画面のセットアップ。
  2. ポーン生成後、各プレイヤーを指定の位置に合わせる。
  3. バーの移動制御ノードを書く。

1. Game画面のセットアップ

f:id:sim-mokomo:20180924224520p:plain

StarterContentのFloorを使ってステージを作りました、PlayerStartの位置はのちのホスト、クライアントのバーの位置になります。

2. ポーン生成後、各プレイヤーを指定の位置に合わせる。

f:id:sim-mokomo:20180924222352p:plain

基底クラスが「GameMode」のBPを作成します。以下の処理はこのBPに書き込みます。

どのPlayerStartから生成されるのかわからないので同じ個所からアクタが生成される可能性もあります(指定できる方法があったら教えてください)、なのでプレイヤーが生成された直後に指定の位置を設定してあげます。 クライアントかホストなのかを判別するために is local player controller を使用することで求まります。 Get Player Start Trans は自作のノードです。中身はタグを見て特定のPlayerStartのTransformを取得するだけです。

3.バー移動制御のノードを書く

f:id:sim-mokomo:20180924222232p:plain

バーBPを作成します。基底クラスは「Actor」です。以下の処理はこのBPに書き込みます。ここから同期処理が出てきます。

レプリケート(複製)が出てきます、その前に図で同期をざっくり説明します。 f:id:sim-mokomo:20180925001849p:plain f:id:sim-mokomo:20180925001950p:plain f:id:sim-mokomo:20180925002010p:plain それではノードの解説に入ります。

移動方向を格納する Velocity変数 をレプリケートする設定で作る。これでサーバ側で変数の値を変えることで全クライアントにその変更が適用されることができる。

f:id:sim-mokomo:20180924232325p:plain

クライアント側で操作をバーを動かす操作をしたときにその変更をサーバ側に伝えたいので OnServer の設定でイベントを実行させる。この設定をすることでイベントをサーバに送信/実行することができる、なので変数のレプリケートを全クライアントに行うことができる。

Movement イベントは レプリケートされた変数を利用して実際に移動を行う。これはサーバに送信する必要はなく各自で実行させればいいのでレプリケートしない。

おわりに

これでMenuレベルから実行させれば動作すると思います。画像は完成品ですが以下のようにバーが二つ生成されます。

f:id:sim-mokomo:20180924235039p:plain

次回: ボールを作成する。

Unreal Engine 4で極めるゲーム開発:サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト

Unreal Engine 4で極めるゲーム開発:サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト