🌥もこも制作日記🌥

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

UE4でネットワークPONG作成備忘録① Session作成/参加編

注意書き

勉強しながらメモしているので間違いもあると思います。 間違いがあった場合は容赦なくコメントしてくれると嬉しいです。

はじめに

通信をして遊ぶゲームが当たり前のようにある世の中で自分もそのようなゲームが作りたい、 作ることができれば制作の幅が広がるなと思ったので作ってみる

動画を見る。

初めから着手して右往左往するよりもネットワークゲームについて俯瞰的に基本的な部分を知ってから作業 をした方が良いと思ったのでUnrealEngine公式が出しているチュートリアル動画をまず見たよ。 日本語字幕がついているので安心だった。

www.youtube.com

プロジェクト開始

テーマ決定

「ポン」を作ることを目指した。

ポンは下記URLを見ればわかるけどゲームセンターのエアホッケーのようなゲームです。 お互いに球を相手の陣地に入れることが目的のゲームだよ

ポン (ゲーム) - Wikipedia

ネットワークゲーム学習用としてのプロジェクトなので、面白さは考えずにできるだけシンプルな物を題材にしたよ。

動画で学んだ大事なこと

  • クライアントを兼任するサーバと専任のサーバが存在ある。(listenサーバ)
  • データはレプリケート(複製)をしてサーバとクライアント間の整合性を取る。
  • 通信を担保しなくてもよい命令に関してはRealiveにチェックを入れずにおくことでちょっとした最適化になる。
  • 見えないアクタの通信まで行う必要はない。見えているアクタに関する通信だけを行うとクールなネットワークゲームが作れる。

実際に作成してみる。

Session作成/参加編動画投稿

動画にしてYoutubeに投稿した。具体的なノードの組み方はこちらを見る。

www.youtube.com

録画時にうまくまとまっていなくて上手に喋ることができなかった。尋常ではないくらい声が聞き取りづらいのでなんとかしたい、多分ノイズ抑制ゲートが悪い。 以下、動画内で重要そうな部分を抜き出して書き留める。

重要メモ

エラーハンドリング

Game Instance クラスを使用する。なぜなら Game Instance では Network エラーを引き起こした際に呼び出されるイベントが以下のような設定されているから。

  • NetworkError
  • Trable Error

サーバの種類

UE4では Listen server と dedicated server の二種類が存在する。 違いは以下の通りだ。

  • Listen Server

    サーバーとクライアントの両方の役目を担う。通信においてサーバーとクライアントを兼任していることから多少他のクライアントよりも通信の遅延が少ない

  • dedicated server

    サーバーとしての役割だけを果たす。描画を行わずサーバとしての役割として最適化されている。

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

エラー解決(割とハマりがち)

テストプレイ時、listenサーバ側で新しいレベルへ移行する際にオプションにlistenを渡した場合に 以下のようなエラーが出る

Client1 : Connection Lost
Client1 : Received Failure

これは Listenサーバ側で新しくListenサーバとして立ち上げようとした際に、元々接続しているクライアントとの接続が切れてしまい出現するエラーである。 なのでテストプレイの際はClient側でホストを指定する、もしくは dedicated server を指定することでどちらのウィンドウもクライアントの状態で始める方法がある。

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

(サーバ側では listen オプションを渡さないように場合分けをする手段もありそう。)

次回予告 : Bar作成の記事を書く。

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

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