Matchplay:Matchmaker と Multiplay のサンプル
重要: ほとんどのユーザーに対しては、この Matchplay サンプルを 専用ゲームサーバーサンプル に置き換えます。Unity 6 以降、Multiplayer Services パッケージ のみを使用してゲームにマルチプレイヤー要素を追加できるようになります。
ノート: このサンプルは、Unity 2021.2 を使用して、PC および OSX クライアント、および Linux ヘッドレスサーバーでテストされました。
Matchplay サンプル は、Matchmake (マッチメイク) ボタンを作成する方法を示したものです。これは、Unity Engine と Cloud Services SDK を使用してエンドツーエンドのマッチメイキング機能を提供する、基本的なネットワーククライアントサーバーゲームです。
ノート: これは "ドラッグアンドドロップ" 型のソリューションではありません。Matchplay サンプルは、フルスケールのプロジェクトにコピーすることを意図した最小限のコードサンプルではありません。いくつかの基本的なゲームロジックとインフラストラクチャを使用して、バーティカルスライスで複数のサービスを使用する方法をわかりやすく示したものです。Matchmaker と Multiplay Hosting が共通のエンドユーザー機能を提供するためにどのように連携するかを学ぶための参考として使用してください。
機能
- マッチメイキングチケット設定: プレイヤーは、希望するマップとゲームモードを設定します。
- マッチメイキング: プレイヤーは、Matchmake ボタンをクリックしてマッチの検索を開始します。
- Matchmaker 割り当てペイロード: サーバーはマッチに関する情報を取得し、サーバーを適切に設定します。
- Multiplay サーバー割り当て: 専用のクラウドサーバーを立ち上げ、その情報をプレイヤーに渡します。
- クライアントサーバー NetCode: Multiplay Hosting 上でホストできる軽量なサーバー。
プロジェクトの概要
このプロジェクトは、クライアントまたはサーバーモード、およびローカルサービスモードで実行されます。サーバーはサービスの検索を 5 秒間試行し、見つからない場合はローカルテスト用のいくつかのデフォルト設定でサーバーを起動します。クライアントは、ローカルホスト IP アドレスを使用してこのサーバーに直接接続できます。
シーン
- bootStrap: サンプルが動作するためには、このシーンから再生する必要があります。
- mainMenu: Matchmake ボタンと local connection (ローカル接続) ボタンをユーザーに表示します。
- game_lab: テーブルを使用したゲームシーンです。
- game_space: スフィアを特徴とするゲームシーンです。
クライアントとして実行する
このプロジェクトは、以下のシナリオではクライアントとして実行されます。
- bootStrap シーンからエディター内で Matchplay プロジェクトを再生する場合。
- 選択したプラットフォームで非サーバービルドを実行する場合。
- bootStrap シーンから、引数フィールドに "client" を指定して ParrelSync クローンプロジェクトを再生する場合。
クライアントは、Matchmaker を使用して接続するか、UI を使用してローカル接続で接続することができます。
サービスが設定されていない場合、Matchmaker は動作しません。Sample Setup Guide に従って設定を行ってください。
サーバーとして実行する
このプロジェクトは、以下のシナリオではサーバーとして実行されます。
- 選択したプラットフォームでサーバービルドを実行する場合。
- bootStrap シーンから、引数フィールドに "server" を指定して ParrelSync クローンプロジェクトを実行する場合。
- Matchmaker でマッチが見つかり、Multiplay Hosting がサーバーを自動的に実行する場合。
Matchmaker から設定を取得するか、初期値で起動するかは、サーバーが実行されているコンテキストによって決まります。
ParrelSync を使用して Netcode をローカルでテストする
ParrelSync を使用して Netcode をローカルでテストする手順は以下の通りです。
- 上部のバーに移動し、ParrelSync > Clones Manager > Add new Clone を選択します。これによりプロジェクトフォルダーが複製され、コンテンツが同期されてイテレーションが可能になります。
- 引数フィールドに "server" と入力して、クローンがローカルサーバーモードで再生されるようにします。
- サーバーが起動したら、ベースプロジェクトに戻り、Play を選択します。
- mainMenu シーンがロードされたら、local と Play を選択してローカルサーバーに接続します。
ノート: ローカルサーバーのデフォルトの IP は (127.0.0.1:7777) です。
クラウドプロジェクトと組織
Unity の Multiplayer サービスを使用するには、プロジェクト用のクラウド組織 ID が必要です。新しく組織を作るにはどうすればいいですか? に従って、組織を設定してください。
プロジェクトとサービスを接続する方法については、Unity Services のためのプロジェクトの設定 ガイドに従ってください。
サービス
認証
Matchmaker と Multiplay では、認証情報に Unity Authentication 2.0 が使用されます。このサンプルでは、Unity Authentication の匿名ログイン機能を使用して、各プレイヤーごとに一意の半永久的な認証情報を作成しますが、それらのために開発者が永続的なアカウントを保持する必要はありません。
Matchmaker
Matchmaker サービス では、プレイヤーが同じ嗜好を持つ他のプレイヤーを検索できるようにして、それらのプレイヤーを一緒のマッチに配置することができます。
Matchmaker のドキュメントには、コードサンプルや、サービスに関する追加情報が含まれています。このドキュメントには、Matchmaker の使用方法に関する包括的な詳細や追加のコードサンプルが含まれています。また、このドキュメントは Matchplay サンプルを理解するのにも役立つかもしれません。
Matchmaker サービスは Unity Cloud Dashboard で管理できます。
Multiplay Hosting
Multiplay Hosting サービス では、ゲームサーバーをクラウド内でホストし、世界中のプレイヤーを最適な ping パフォーマンスで簡単に接続できます。
Multiplay Hosting のドキュメントには、コードサンプルや、サービスに関する追加情報が含まれています。Multiplay Hosting の使用方法に関する包括的な詳細や追加のコードサンプルが含まれており、Matchplay サンプルを理解するのに役立ちます。
Multiplay Hosting サービスは Unity Cloud Dashboard で管理できます。
サンプルの設定ガイド
Cloud Project and Organization の説明に従って、エディターのプロジェクトをクラウドプロジェクトにリンクします。
サーバーをビルドするために、Matchplay プロジェクトに移動し、BuildTools > Linux Server を選択します。
プロジェクトがサーバービルドとして自動的にビルドされ、以下のフォルダーに出力されます。
<project root>/Builds/Matchplay-<platformBuildType>_<dateTime>
サーバーを Multiplay にアップロードしてサーバーホスティングを設定します。Unity Cloud Dashboard > Multiplay Setup Guide (Multiplay 設定ガイド) > Create a build (ビルドの作成) に移動します。
Details (詳細) フィールドに情報を入力し、Upload Files (ファイルをアップロード) に移動します。Linux Headless Build をドロップボックスにドラッグし、Upload Files (ファイルをアップロード) を選択します。
続いてビルド設定を行います。フィールドに情報を入力し、game server executable (ゲームサーバー実行ファイル) フィールドに Matchplay.x86_64 と入力します。
クエリタイプとして SQP を選択し、カスタム起動パラメーターとして以下を入力します。
-ip 0.0.0.0 -port $$port$$ -queryPort $$query_port$$ -logFile $$server_log_dir$$/matchplaylog.log
Fleet (フリート) を作成するために、フリート名を入力し、先に作成したビルド設定を選択します。Scaling settings (スケーリング設定) では、可能な最小数として 1 を、最大数として 5 を選択します。これで、Multiplay Hosting フリートが準備できました。
Unity Matchmaker
サーバーフリートが準備できたら、Matchmaker Setup Guide (Matchmaker 設定ガイド) を選択して Matchmaker を設定できます。サンプルはすでにプロジェクトに統合されているので、このガイドでは Integrate Matchmaker (Matchmaker を統合) をクリックして次に進むことができます。
Create Queue (キューを作成) を選択し、キューの名前を入力します。キューの名前は 1 - 36 文字とし、英数字またはハイフン文字のみを使用する必要があります。
キューの名前を "casual-queue" とし、1 つのチケットでの最大プレイヤー数を 10 に設定します。
UDash で定義されている文字列キュー名は、以下の SDK サンプルの入力文字列と厳密に一致する必要があります。
プールを作成するには、先ほど作成した Multiplay Hosting フリートとビルド設定を選択します。タイムアウトは 15 秒に設定します。
ノート: サーバーフリートのスケーリング設定で最低サーバー数が 0 の場合は、サーバーの初期起動時間を考慮して、タイムアウト期間を 180 秒に増やさなければならない場合があります。
マッチルール
Match rules (マッチルール) は、このサンプルでプレイヤーを好みに基づいてマッチングするために使用されるフィルターです。Pool (プール) と Queue (キュー) 内で、すべてのプレイヤーの設定が他のすべてのプレイヤーに対して評価されます。
マッチ定義ルールを設定するには、以下を行います。
- プレイ元の地域を設定します。これはサーバーフリート地域と同じである必要があります。
- 基本的なチーム定義を設定し、詳細なルールはスキップします。
- Finish (終了) を選択して Matchmaker の設定を終了します。
これで、Unity エディターでプロジェクトを再生し、Matchmake ボタンを使用してマッチを検索し、Multiplay Hosting サーバーに接続して、他のプレイヤーの到来を待機できるようになります。
ParrelSync または複数のビルドを使用して、Matchmake ボタンで同じサーバーに複数の人を接続することもできます。