はじめに
この講座ではUnityの「Netcode for GameObjects」と「Steamworks」の機能を使ったマルチプレイゲームの作り方を解説していきます。
この講座は以下の方が対象です。
- Unityの基本的な使い方を理解している方
- Unityでマルチプレイゲームを作りたい方
講座を通して基本的なマルチプレイゲームの作り方を学べるようになっています。
今回作るマルチプレイゲームの内容
今回の講座で作るのは、ボールを動かしてコインを取るゲームです。
出来るだけ分かりやすく説明するために、ゲーム部分はかなりシンプルなものにしています。
動画のボールは複数のパソコンで操作していており、画面は同期されています。
上部に書いてあるLobbyIDがSteamの機能で立てたロビーのIDです。
この番号を使って接続しています。
サンプルプロジェクト
完成済みのサンプルはGithubに公開されています。
必要な方は下記ページからダウンロードしてください。
Netcode for GameObjectsとは
「Netcode for GameObjects」(以降Netcode)とはUnityでマルチプレイゲームの開発を行うための公式パッケージです。
2022年6月に正式番が出た新しめのパッケージとなっています。
Netcodeを使うとGameObjectの同期を簡単に行うことができます。
マルチプレイの話になるとよく「同期」という言葉が出てきます。
同期とはサーバーにある情報がクライアントに共有されている状態のことです。
例えばNetcodeにあるNetworkObjectというコンポーネントをつけると、同期オブジェクトが作成できます。
サーバーで作成された同期オブジェクトは接続されているすべてのクライアントで生成されます。
ネットワーク周りの話
Netcodeはサーバークライアント型でマルチプレイゲームを作ることができます。
専用サーバーを作って動作させることもできますが、今回はクライアントの一人がホストとなり他のクライアントがホストに接続する形で作っていきます。
誰かが部屋を立て、そこに他の人が入るゲームがありますが、まさにその方式です。
この方法で実装する場合、ホストに接続する方法がないため、ホストとクライアントの通信を中継するための仕組みが必要です。
(同一のネットワークで通信を行う場合は必要ありません)
UnityRelayというUnity公式のサービスで対応できますが、接続数ごとに料金がかかります。
通信料が課金制というのは、個人で作る場合かなり不安材料ですよね。
しかし、Steamでゲームを出す場合は通信料が発生しない方法があります!
Steamで販売する場合「Steamworks」というゲーム開発に役立つ機能を提供してくれているSDKが使えます。
マッチング機能もあるのでSteamworksを使えばNetcodeでインターネットを返した通信ができます。
しかもゲーム販売時に1万円程度かかるのみで、接続数が増えてもお金はかかりません。
というわけで本講座ではリレーサーバーとして「Steamworks」を使っていきたいと思います。
講座内で「ホスト」「サーバー」「クライアント」という言葉がよく出てくると思います。
前述のとおり今回はクライアントの1人がホストとなり、他の人がホストに接続する形です。
この場合「ホスト」は「サーバー」と「クライアント」を兼任します。
「サーバーで行う処理」という言葉が出てきた場合は「ホスト」が処理を行っています。
最初は結構紛らわしく、混乱してしまうことがあると思いますので注意してください。
(こちらもなるべく紛らわしくならないように気を付けますが…)
まとめ
今回は次回から始まる講座の内容や事前知識の説明をしました。
ソロプレイとは作り方がだいぶ違うので最初は難しいかもしれませんが、ゆっくり学習していきましょう!
👇あなたにお勧めの書籍
次回↓
コメント