Unity を検索

Multiplayer を詳しく見てみよう

2022年3月24日 カテゴリ: ゲーム | 13 分 で読めます
Magnifying glass zooming in over a building
Magnifying glass zooming in over a building
シェア

Is this article helpful for you?

Thank you for your feedback!

Unity ゲーミングサービスを紹介するシリーズ、第 3 回は Multiplayer スイートに焦点を合わせます。 

Unity の Multiplayer ツールは、開発者にマルチプレイヤーゲームの制作について考え、プレイヤーのために最適なオンライン体験を作り上げる力を与えます。

Table showing different Unity Gaming Services pillars (Multiplayer highlighted)

私たちの提供するサービスは大きく 3 つの柱からなります。

  • マルチプレイヤーゲームの制作
  • プレイヤー間のつながり
  • プレイヤー間のコミュニケーション
Multiplayer services breakdown between creation, connection, and communication

制作

Netcode for GameObjects

これは何か: Netcode for GameObjects は、Unity 開発者が低レベルのプロトコルを気にかけることなく、マルチプレイヤーゲームにネットワーク機能を追加できるようにする高レベルのネットワークライブラリです。これはマルチプラットフォームに対応したソリューションで、トランスポートに依存しないレイヤーを持ち、DTLS でエンドツーエンドの暗号化をしつつ、パフォーマンスの高いパケット配信を提供する Unity Transport と連動しています。Netcode for GameObjects は現在プレリリース版です。 

これが解決する問題:

  • 低レベルのプロトコルやネットワークフレームワークより、ゲーム作りを優先させられる
  • Unity Relay サービスとの通信を容易にするアダプターを提供する
  • 小規模な協力型ゲームのためのネットワーク基盤の手早い構築を可能にする

仕組み: 

Netcode for GameObjects により、Unity 開発者は、マルチプレイヤーゲームの制作において、同じネットワークセッションに接続された複数のアプリケーションインスタンス間でシーンとゲームオブジェクトのデータを同期させることができます。

Netcode for GameObjects は今のところ、Unity が提供しているでもゲームサンプル『Boss Room』や『Galactic Kittens』のような、小規模なゲームに最も適したソリューションだと言えます。クライアントの 1 つをクライアントホストとして構成するか、専用サーバーシナリオをサポートするかを選択することができます。 

意欲のある開発者の方は、MIT ライセンスのもと自由に利用できるソースコードを利用して、提供されているコンポーネントを自身のマルチプレイヤー固有のニーズに合わせて拡張、変更することもできます。 

使用を開始するには: パッケージをインストールしていただくか、Discord に参加していただくか、またはドキュメンテーションを参照してください。

Netcode for Entities

これは何か:これは何か:Netcode for Entities は、Unity 開発者がマルチプレイヤーゲームにネットワーク機能を追加できるようにする高レベルのネットワークライブラリです。Netcode for Entities は、ネットワークオブジェクトが実験的な DOTS ECS フレームワークをベースにしている場合に必要となります。このような製品であるため、Netcode for Entities も実験的なものであり、現時点では本制作での使用は推奨されません。

これが解決する問題:

  • DOTS ECS フレームワークをベースにしたネットワークオブジェクトを使っているときに、中規模から大規模のマルチプレイヤーアクションゲームのネットワーク基盤を提供する
  • 多数のネットワークオブジェクトやクライアントを同期させる
  • 入力レイテンシを最小化するロールバックデータのスケーラブルな基盤を提供し、クライアントとサーバーを同じプロセスで実行およびデバッグする機能を提供する

仕組み:Netcode for Entities は、クライアント予測によるサーバー権威ネットワークモデルを採用しています。つまり、Netcode for Entities を使用すると、シミュレーションが 2 つの別々のシミュレーションユニットに分割されることになります。サーバー側とクライアント側です。サーバー側のシミュレーションは、接続されているすべてのクライアントのシミュレーションを実行し、その結果が真のシミュレーション状態と見なされます。クライアント側のシミュレーションは、サーバーからシミュレーションの状態のスナップショットを受け取ります。

スナップショットがクライアントに届くまでに時間がかかるため、クライアントはサーバーと同じシミュレーションを行い、サーバー側のシミュレーション内容を予測することでそれを補います。

この設定では、エンティティと入力をどのように同期させるか、何が最も重要かを決めるために、データに注釈を付ける必要があります。これらの注釈を元に、Netcode for Entities がクライアントとサーバーの同期をとります。Netcode for Entities は、限られた帯域幅で多数のオブジェクトとクライアントを処理できるようにするため、まず最も重要なオブジェクトの同期に焦点を当てます。

使用を開始するには:Netcode for Entities は実験的なものです。そのため、評価するためにはプロジェクトのマニフェストに手動で追加する必要があります。詳細はドキュメンテーションをご覧ください。

つながり

Multiplay

これは何か: Multiplay は、ベアメタルサーバーとクラウドサーバーを組み合わせた、エンジン非依存のゲームサーバーホスティングサービスです。 

これが解決する問題:

  • インフラを自分で構築・運用することなく、マルチプレイヤーゲームを運用することを可能にする 
  • 自動スケーリングにより、常に変動するプレイヤーベースに対応する

仕組み:Multiplay は、ベアメタルサーバーとクラウドのバーストキャパシティを併用する、ハイブリッドで自動スケーリング可能なホスティングプラットフォームです。

サーバーの割り当ては常に起動可能な状態にあるマシンに優先的に行われるため、待ち時間が非常に少なくなります。Multiplay はプレイヤーからの需要を予測し、計画したキャパシティを超えることが予想される場合、Multiplay はクラウドを利用して可用性を高め、プレイヤーがゲームへの参加を拒否されたり、長い間待たされたりすることがないようにします。

スケールアップすることは簡単です。それに加え、オーケストレーションにより、プレイヤーの同時接続量に応じて、動的にスケールダウンすることも可能になっています。クラウドマシンはオンデマンドで作成・破棄できるので、クラウドでホストされているゲームセッションが終了すると、システムは速やかにマシンをシャットダウンします。これにより、コストを抑えることができます。さらに知りたい方は、こちらのブログをチェックしてみてください。

使用を開始するには:ご連絡をいただくか、ドキュメンテーションサイトをご覧ください。

Matchmaker

これは何か: Matchmaker は迅速かつ自動的に適切なプレイヤー同士をマッチングさせ、最高のマルチプレイヤーゲーム体験を提供しようというものです。Matchmaker は現在ベータ版です。 

これが解決する問題:

  • 内製のマッチングシステムを構築するよりも、実績のあるマッチングシステムを利用することで、時間とリソースを節約することができる
  • 地域やスキルレベルに合わせてプレイヤー同士をマッチングすることで、プレイヤー体験を向上させることができる

仕組み: 

Matchmaker は、開発者が設定したマッチロジック、カスタマイズ可能な評価器、およびマッチ関数をスケジュール実行するマッチメイキングループを使用して、ゲーム内のプレイヤーを適切なセッションにマッチングさせます。開発者は、標準的なロジックとルールベースのロジックのいずれかを使用して、ゲームに適したマッチメイキングロジックをカスタマイズすることができます。このロジックは、JSON 形式の設定ファイルを作成し、Unity Matchmaker CLI を使ってアップロードすることで設定することができます。

理想的な条件で運用されるマッチングシステムは、質の高いマッチングを素早く生み出すことができます。しかし、現実の環境では、マッチング時間やマッチング品質に影響を与える要因が多く存在します。 

Unity の Matchmakerを使えば、マッチング品質とマッチング時間のバランスを戦略的に決定することが簡単にできます。Matchmaker は、適切なプレイヤーをできるだけ簡単に集めるために、以下の機能を提供します。

  • 設定可能なデータをもとに、質の高いマッチングを行うための情報をマッチメーカーに提供する
  • Multiplay ゲームサーバーのホスティング統合により、顧客のゲームのスケールアップと全世界にわたっての成功を支援する
  • 柔軟なバックフィルで、進行中の試合にプレイヤーをつなぐ
  • 試合が始まるまでの時間を短くし、プレイヤーの待ち時間を少なくする

Matchmaker の仕組みの詳細については、こちらのドキュメンテーションをご覧ください。

使用を開始するには: 私たちまでお問い合わせください

Relay

Relay は、専用のゲームサーバーを必要とせず、プレイヤー同士がつながり、臨場感あふれるマルチプレイヤーゲームを楽しむことを可能にするサービスです。Relay は現在ベータ版です。 

これが解決する問題:

  • サーバーホスティングに費用をかけるよりも費用対効果の高い方法でマルチプレイヤーゲームのプレイヤー同士を接続する
  • DTLS 暗号化によりセキュアな通信を実現

仕組み:Relay サービスでは Unity Transport が活用されており、プレイヤー同士のリスンサーバー型 UDP 通信を安全に行うことができます。Relay は、Relay サーバーとの間のすべての UDP 通信の DTLS(datagram transport layer security)暗号化をサポートしており、ユーザーは安全に暗号化および認証されたデータを配信することができます。

Relay は、ジョインコード形式のワークフローとリスンサーバーを使用して、プレイヤー同士で接続できる環境を提供します。Relay サービスは、専用のゲームサーバー(DGS)を使用する代わりに、プロキシとして機能するユニバーサルなリレーサーバーを介して接続を提供します。

Relay サービスには、Relay サーバーと Relay アロケーションサービスという 2 つの重要なコンポーネントがあります。

使用を開始するには: ベータ版に参加するか、ドキュメンテーションサイトをご覧ください。

Lobby

これは何か: Lobby は、カスタムプライベートルームまたはパブリックルームでプレイヤーを接続し、素晴らしいマルチプレイヤーゲーム体験を提供する柔軟なソリューションです。Lobby は現在ベータ版です。 

これが解決する問題:

  • Lobby を使うと、プレイヤーが誰とどのように遊ぶかを決めることができるようになる
  • 数時間のうちにプレイヤーをオンラインにして、新しいゲームセッションに参加させることができる
  • Lobby がプレイヤーをゲームセッションに接続する簡単でコスト効率の良い方法となる

仕組み:プレイヤーは簡単なゲーム属性を使って、他のプレイヤーが検索して見つけ、参加することができる公開のロビーを作ります。また、招待制のロビーを作って、特定の参加者だけが参加できるプライベートな空間を作ることもできます。

  • 公開のロビーを使うことで、プレイヤーは検索条件に合う公開のロビーを作成、閲覧、参加することができる
  • プライベートの試合では、プレイヤーは非公開のロビーを作成し、ロビーコードを送信することで他のプレイヤーを招待することができる

クイックジョインとは、プレイヤーがゲームセッションに最速で参加できる機能です。プレイヤーは自分の条件を指定し、マッチするロビーがあればそこに参加します。また、この方法を利用して、簡単なマッチメイキングを実装したり、進行中の試合に参加させたりすることも可能です。

使用を開始するには: ベータ版に参加するか、ドキュメンテーションサイトをご覧ください。

コミュニケーション

Vivox

これは何か:Vivox は、ゲーム内のボイスチャットやテキストチャットを通じて、プレイヤーのコミュニケーションを可能にする、エンジン非依存のサービスです。 

これが解決する問題:

  • 自前でソリューションを構築することなく、ゲームにプレイヤー間のコミュニケーション機能を簡単に追加することができる
  • エンジンに依存しないため、マルチプレイヤーゲームを構築するために使用しているあらゆるエンジンにプラグインできる
  • Vivox のテクノロジーはゲーム内に完全に統合されるため、プレイヤーがゲーム体験を中断してサードパーティの通信アプリに切り替える必要がない。コミュニティ構築を促進し、さらに戦略的に、さらに快適に遊び、そして友達を作ってもらえる
  • Vivox は、開発者が規制要件を満たし、誰もが気軽にプレイできるゲームを制作するのをサポートするために、音声認識やテキスト認識などのテクノロジーに投資している

仕組み:Vivox は数日で使いこなすことができ、また、2D ボイスチャットをしたい、トランシーバーで話すようにチームメイトとのコミュニケーションをとりたい、非常に没入感の強い世界で 3D 位置チャンネルを使いたいなど、プレイヤーからのさまざまな要求にこたえることができます。プレイヤーは自分の音量やミュート状態を完全にコントロールでき、また、他の人を簡単にミュートすることもできます。

Vivox は、エンジンに依存せず、すべての主要なプラットフォームで利用可能です。ただし、Unity と Unreal のラッパーを提供し、これらのエンジンへの実装をより迅速に行えるようにしています。

主要なプラットフォームに対応しているため、クロスプレイを実現するのは非常に簡単です。異なるプラットフォームのプレイヤーに同じチャンネルに参加してもらうだけでいいのです。

チャンネルには、2D と 3D 位置の 2 種類があります。

ゲームでのボイスチャットといえば、2D チャンネルを思い浮かべる人が多いでしょう。マップ上のどこにいてもチームメイト全員の声を聞いて会話することができるという、チャットの典型的な機能です。

3D 位置チャンネルは、プレイヤーの位置と向きを考慮し、3D 空間でオーディオを表現します。これにより、周りのプレイヤーの声が自然に聞こえてきて、より没入感のある体験ができるようになります。

プレイヤーが一度に複数のチャンネルを利用することも簡単にできます。これにより、プレイヤーはゲーム空間内で周囲を走るプレイヤーの声が聞こえる 3D 位置チャンネルに入っていながら、同時にスクワッドの 2D チャンネルにも入っていることができます。このとき、複数の 2D チャンネルに入っていることもできるのです。

コンプライアンスに対応したアクセシビリティ機能を提供し、これらのサービスに依存しているプレイヤーに素晴らしい体験を提供します。

さらに、Vivox は、ミュートやプレイヤーのキックができる管理者向けサーバー間 API などのモデレーション機能により、ゲームから有害な要素を排除することも支援してくれます。また、サーバーサイドでの記録を有効にすることで、有害な内容を含む可能性があるチャットをレビューし、攻撃的なプレイヤーを罰することができます。

使用を開始するには:アカウントをご登録いただくか、私たちにご連絡をいただくか、あるいはドキュメンテーションサイトをご覧ください。

理想の技術スタックを構築しよう

Unity Dashboard を見て必要なものを選ぶか、または価格情報をチェックして、Unity ゲーミングサービスの利用を開始しましょう。 

このシリーズの他の記事にご興味のある方は、過去の記事もチェックしてみましょう。

今後も情報をキャッチしたい方は、Twitter および Facebook に新しく立ち上がった Unity ゲーミングサービスチャンネルをフォローするか、新しい Unity ゲーミングサービスフォーラムをご覧ください。

2022年3月24日 カテゴリ: ゲーム | 13 分 で読めます

Is this article helpful for you?

Thank you for your feedback!