Netcode for GameObjectsを使ったマルチプレイゲームの作り方【Unity】

Unityのパッケージ機能の「Netcode for GameObjects」を使って、簡単にオンラインのマルチプレイ可能なゲームの作り方を解説します。

作るまでの手順など

マルチプレイのゲームを作るには以下の手順で行いたいと思います。いきなりオンライン化はしないのでそこの所よろしく!

全体の流れについて

実際にオンラインマルチプレイを作る手順として、いくつかのステップに分けます。といってもオフライン的な作業は最初のみ。Netcode for GameObjectsを使った動機処理を実装し、それをオンライン化する流れになります。ローカルでテストできるから安心!それがほとんどコードを変更せずにオンライン化させることができるのが優秀ポイント!

機能内容・補足
ローカルでのNetcode for GameObjects同ローカルネットワーク内で接続できるようにする
この実装が基本で、後のRelay版に変更することでマルチプレイ化が可能に!
Relayを使ったオンラインマルチプレイUnityService機能を利用して、オンラインでのマルチプレイ
事前に作成したローカルでのNetcode for Gameobjectsを利用します。
NetworkVariableを使うゲーム内で利用する各プレイヤーのパラメータなどを同期させる
Lobbyの実装Relayでも軽く触れるロビーをもう少しちゃんと作る
LobbyとRelayを連携仕上げ

Unityのバージョンについて

Netcode for GameObjectsを使うため、Unityは2021以上のものを推奨します。一部パッケージが表示されない場合はGit経由で入手する必要があります。よくわかんない場合は新しめのUnityを使うようにしてください。

Unityのダッシュボード的なもの

直ちに必要ではないですが、オンライン化を行う場合Unity Gaming Serviceを利用する必要があります。下記リンクからログイン&ページが確認できるか見ておくと良いかも。Organization(組織)やProject(各ゲーム)の設定などはのちほど。

https://dashboard.unity3d.com/gaming

下図はデビダンアプリのページ。左側の「Multiplayer」タブからマルチプレイヤー関連の機能を有効にすることが出来ます。今回取り扱うのはRelayとLobbyかな。Matchmakerは時が来たらやろう。