110.7K Views
July 09, 22
スライド概要
第5回Unreal Engine もくもく会 in 富山にてLTした際に使用した資料になります。
ListenServerとDedicatedServerについて少し紹介しました。
https://ue-toyama.connpass.com/event/251160/
一応ブログもやっているので良ければどうぞ。
https://argonauts.hatenablog.jp/
よしかたといいます。 UnrealEngineの技術ブログを趣味でやってます!
UE4/5における、 オンラインマルチプレイ 導入編
自己紹介らしきもの? ・名前:よしかた(Twitter:@yoshikata_game) ・UE使用歴:1年から3年程度 ・アルゴンブログやってます
今回紹介すること UneralEngineでオンラインマルチプレイを実装する際に主に使用される、 「ListenServer」 または 「DedicatedSever」についてざっくり紹介します。
ListenSeverとは? ホスト 専用のサーバーを持たず、 オンライン上のプレイヤーがホストとなり、 他プレイヤーがホストに接続して遊びます。 専用サーバー用のビルドが必要ないため、 準備も容易となっています。 クライアント
サーバー DedicatedSeverとは? ListenServerとは違い、 専用のサーバーに接続して動作します。 ゲーム上のデータなどをサーバー側で 行うための負荷を分散することができます。 クライアント
ListenServerの良い点と気になる点 良い点 気になる点 ・サーバー用のビルドが必要ない ・ホスト側の負荷が高い ・作成が容易でテストプレイしやすい ・多人数の接続には向かない ・サーバー維持費がかからない ・ホストがいなくなると終了する
DedicatedServerの良い点と気になる点 良い点 気になる点 ・大規模のネットワークが作成できる ・エンジンビルドが必要 ・別サーバーでの処理のため、 効率的に処理をすることができる ・別にサーバーが必要 ・障害が無い限り通信が安定する ・運用コストがかかる。
まとめ ・簡単な協力プレイのゲームや大規模なネットワークゲームでない限りは、 ListenServerで十分に運用できる。 ・逆に細部までこだわったりクオリティのゲームやMMOなどの場合は、 DedicatedServerの使用をおすすめします。 ・簡単とはいえどネットワーク用の処理などの知識・理解は必要なので、 注意が必要(おまけで少し説明します。)
実際に作ってみる 必要な処理を紹介していきます。
ListenServer用の処理 ①ホスト用のレベルを開く ※「マップ名?Listen」です。 ②他のユーザーは接続先を開く ※ローカルの場合はポート7777を使用します。 これだけ!!
ListenServer用のテスト 実際にテストをする際の準備 ①スタンドアローンゲームモードに指定 ②プレイヤー数を2以上 ③プレイで実行
DedicatedServerビルド用準備 GitHubからEngineビルド必須! GitHubとの連携方法 https://www.unrealengine.com/ja/ue-on-github ソースコードのダウンロードとビルド https://docs.unrealengine.com/5.0/ja/downloa ding-unreal-engine-source-code/
DedicatedServer用パッケージ作成① ①任意のC++またはBPのプロジェクトを作成 ※BPプロジェクトの場合はC++クラスを作成する必要 ②サーバー用ビルドターゲットのファイルの作成 ※コピーして一部プログラムを変更
DedicatedServer用パッケージ作成② ③パッケージングする際の サーバー用のマップとリストを指定 ④サーバー用ビルドターゲットでパッケージング
DedicatedServer用接続処理 DedicatedServer用の接続も同様に、 OpenLevelで接続します。 接続する際はIPなどを指定します。
DedicatedServerの起動方法 Windowsで起動する場合は、 コマンドでの起動します。 起動方法はサーバー用のexeの後ろに-logを入れるだけ ※ショートカットでも可能です。
それぞれのサーバーを実際に動かそう!
おまけ
オンラインゲームを作る上での留意点 処理で注意しなければならない点や実装しなければならないことなど数多くあります。 ・レプリケーション(Replication) → ホスト・クライアント間で共有する処理の指定やフラグなど https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/Networking/Actors/ ・通信優先度(net priority) → オンライン上におけるロードの優先度 https://docs.unrealengine.com/4.26/ja/InteractiveExperiences/Networking/Actors/Relevancy/ ・フレンド機能やNat・P2Pなどの処理 → EOSのプラグインを利用した連携 https://dev.epicgames.com/docs/services/ja/GameServices/index.html
その他ネットワーク関連おすすめスライド C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて https://www.docswell.com/s/alwei/KRW71Z-2022-05-12-152255 UE4でマルチプレイヤーゲームを作ろう 【CEDEC 2019】 https://www.docswell.com/s/EpicGamesJapan/ZWX64K-UE4_CEDEC19_MultiPlayerGame オンラインで同期した100体の巨大生物から地球を衛る方法 【UNREAL FEST EXTREME 2021 SUMMER】 https://www.docswell.com/s/EpicGamesJapan/Z7G97K-UE4_UFE21S_YUKES_Network#p36
ありがとうございました!