Unity を検索

Unity でマルチプレイヤーを開発するための新しいツール群を発表

2022年9月20日 カテゴリ: Engine & platform | 10 分 で読めます
placeholder
placeholder
シェア

Is this article helpful for you?

Thank you for your feedback!

Netcode SDK からツール構築サポートまで、Unity エコシステム内で利用可能できる最新技術をご紹介します。

マルチプレイヤーゲーム開発はここ数年盛り上がりを見せており、Unity の開発者もその流れに乗っています。Unity の「マルチプレイヤーレポート 2022」によると、 2021 年 1 月以降、Unity で作られた PC 向けのマルチプレイヤータイトルが 150%、モバイル向けのマルチプレイヤータイトルが 40% 成長しています。

しかし、Unity でマルチプレイヤーゲームを開発する場合、特定のゲームタイプに対応するためにサードパーティ製のツールが必要になることが多くありました。

本日より、開発者は Netcode for GameObjects(NGO)1.0 を利用できるようになり、これを Unity ゲーミングサービスの新しいマルチプレイソリューションであるゲームサーバーホスティング(Multiplay)や Matchmaker と連動して利用できるようになりました。これらのツールとサンプルやガイドを組み合わせることで、Unity を使ったマルチプレイヤーゲーム開発を加速させることができます。

Unity ではオンラインゲームの発展に貢献するため、すぐに使えるソリューションを提供しています。しかし、他のマルチプレイヤー向けフレームワークと同様、これらのソリューションは万能ではありません。

そのため、サードパーティツールと組み合わせて、チームのニーズに合った技術スタックを構築できるようなソリューションを設計しました。その一例として、Photon を使用したバトルロイヤルのサンプルをご用意しています。

Netcode SDK、ツール構築サポート、低レベルネットワーキング、およびサーバーのランタイム機能など、Unity のマルチプレイヤーゲーム開発ソリューションについて詳しく見てみましょう。

ファーストパーティ製 Netcode SDK でマルチプレイヤーの基盤を構築する

GameObjects を使っている開発者の方でも、Entities のアーリーアダプターであっても、次のマルチプレイヤープロジェクトのためにすぐに使えるネットコードソリューションが用意されています。

Netcode for GameObjects 1.0

Netcode for GameObjects は、Unity ゲームエンジン用に構築されたネットワーキングライブラリです。今回のリリースでは、主に小規模な協力型ゲームの開発に焦点を当てています。このカテゴリの P2P ゲームについては、Netcode for GameObjects と Unity Relay および Unity Lobby ソリューションとの組み合わせが非常に良く作用します。

これは、シーン管理、アニメーション、物理演算などをサポートし、同期を維持した状態でシミュレーションを行う上で非常に頼りになる、基本的なリリースと言えます。

新しいシナリオに取り組む際に、皆さんのプロジェクトに必要なものをぜひお聞かせください。ロードマップの項目を閲覧し、投票することで、Netcode for GameObjectsの開発ジャーニーに参加することができます。

Netcode for GameObjects を使い始めるには、インストールガイドをご覧ください。

「ソースコードをオープンにし、Discord で積極的に活動することで、経験やサポートを共有する強力なコミュニティを構築し、それが実際のビデオゲームプロジェクトのニーズに基づいて NGO の開発を推進することにつながりました。私の意見では、NGO はオープンソース開発における真のサクセスストーリーだと思います。」 - Marc-Antoine Fortier 氏(Fika Productions 社 CTO)

Netcode for Entities

マルチプレイヤー開発のためのさまざまなツールのもう一方の端に属するのが、Netcode for Entities です。DOTS ECS(Entity-Component-System)機能の一部として提供され、プレイヤーに対してスケーラブルなマルチプレイヤーワールドを提供することができます。

ECS for Unity は、Unity でより野心的で大規模なゲームを構築するための新しいフレームワークで、Unity 2022.2 TECH ストリームで利用可能になる予定です。最新の進捗状況は、DOTS Beta フォーラムでご確認ください。ここではロードマップや、最新リリースである DOTS 0.51 に関する情報を得ることができます。

マルチプレイヤーツールを使った監視と問題点の特定

マルチプレイヤーゲームの開発者は、ネットワーク設計と信頼性の問題を解決しなければなりません。そのため、潜在的な問題をできるだけ早く追跡、特定、診断するためのシンプルな方法を持つことが重要です。

現在、Unity の提供しているツールについて、以下のアップデートをご利用いただけます。

  • Runtime Network Stats Monitor:(Netcode for GameObjects)ゲームテスト中やスタンドアロンビルドで、サーバーと接続されたクライアント間のネットワーク変数と RPC 呼び出しを追跡します。
  • Network Profiler: (Netcode for GameObjects)接続されているすべてのプレイヤーに送信されたネットワークオブジェクトとメッセージの詳細な内訳を確認し、パッケージドロップや遅延の問題の特定に役立てることができます。
  • Debug Simulator:(Unity Transport) UTP Transport コンポーネントの一部として同梱されており、開発者はネットワーク変数を操作し、テスト目的で高度なネットワークシナリオのシミュレーションを行うことができます。
  • Bounding Box Drawer:(Netcode for Entities)サーバー上のゴーストの位置を色付きのバウンディングボックスで表示し、子との比較を可能にします(色分けはクライアントとサーバーとの関係に基づきます)。
Runtime Network Stats Monitor の動作

GameObjects と Entities をまたいで活用する開発体験の一貫性の向上、ネットワーキング初心者のためのネットワーク遅延シミュレーターの強化、そしてマルチプレイヤー開発体験を向上させる機能を提供していきますので、どうぞご期待ください。

低レベルネットワークでより深く掘り下げる

ネットワークの運用をきめ細かくコントロールしたい開発者は、Unity Transport(UTP)パッケージの力を借りることができます。Netcode for GameObjects と Netcode for Entities はどちらも UTP を利用していますが、UTP はネットコード非依存であり、それを直接使うことも、他のネットコードソリューションと組み合わせて使うこともできます。

UTP Diagram Netcode, updated

UTP は、従来の UDP(User Datagram Protocol)を拡張し、Unity Relay、DTLS(Datagram Transport Layer Security)、パイプラインなどの高度な機能をサポートしたものです。

また、標準で対応しているプラットフォームも豊富です。

  • デスクトップ:Windows、Mac、Linux
  • モバイル:iOS、Android
  • コンソール:主要なコンソール機で使用可能

また、UTP はネットワーク上で安全なデータ伝送を提供するように設定することが容易です。

マルチプレイヤーでのネットワーキングのサンプルを使ってみよう

飛び込む準備はできていますか。私たちが提供している機能がどのように連携しているか、また、マルチプレイヤーのサンプルを使い、私たちのネットワーキングツールが本番環境でどのように活用されているか、探ってみてください。

『Boss Room』:小規模な協力型 3D ゲームのサンプル

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

Boss Room』は、Netcode for GameObjects、Relay、Lobby を使用して制作された小規模な協力型 3D ゲームのサンプルプロジェクトで、マルチプレイヤーゲーム制作のワークフローを支える概念やパターンを学ぶのに役立つよう設計されています。UGS のこれらのツールを組み合わせることで、協力型ゲーム開発のための強固な基盤が提供されます。開発者はオープンソースとして提供されている『Boss Room』のコードを調べて、これらのツールがどのように組み合わされているのかを確認することができます。

Boss Room』のコードを読み込み、キャラクターのアビリティの実装方法、遅延が目に見えないようにするための発射時アニメーションの使用、オブジェクトの複製、RPC の活用などについて詳しく学びましょう。

『Galactic Kittens』:小規模な協力型 2D ゲームのサンプル

Galactic Kittens, a 2D small scale cooperative sample

Galactic Kittens』で宇宙へ飛び出し、2D 固定シューティングゲームを題材にネットワーキングのパターンを学びましょう。『Galactic Kittens』は、基本的なネットワークマネージャーの設定を使用しており、スプライトアニメーション、パーティクルエフェクト、基本的な 2D の動きを適用して同期させる方法を学ぶことができるよう設計されています。

手ごろな規模のサンプル

開発者の皆様には、Netcode for GameObjects のさまざまな側面を切り分けて見せる手ごろな規模のサンプルで、より詳細な情報を得ることができます。

Unity の『 Invaders Sample』は、プレイヤーが協力してエイリアンからの侵略を跳ね返す、シンプルなネットワーク型・協力型ゲームです。このサンプルを通じて Netcode for GameObjects(NGO)を使ったゲームフローとモードを理解することができます。サンプルでは、シーン管理、自在でネットワーク接続された敵の動き、およびサーバーサイドでシード値を設定し、クライアントサイドで更新を行う、クライアント間で共有されたタイマーが使われています。

これらのテクニックにより、例えば、ゲーム開始前にプレイヤーが参加できるゲームロビーを簡単に実装することができます。

また、NGO をベースにした 2D Space Shooter Sample は、物理演算、プレイヤーのライフ、ステータス効果の実装例を提供しています。このサンプルの技術的な特徴としては、NetworkVariable と ObjectPooling が挙げられます。この NetworkVariable を使うことで、プレイヤーのライフなどの状態を、簡単にサーバーとクライアント間で同期させることができます。ObjectPooling は、オブジェクトの頻繁な再利用を可能にし、ネットワーク接続された環境でのパフォーマンス上の利点を生み出します。

Unity でより良いマルチプレイヤーを実現するために力を貸してください

マルチプレイヤーの開発は複雑なものです。そして私たちはマルチプレイヤーのためのツールやソリューションを開発し、皆さんのチームが作りたいと願うあらゆるタイプのゲームをサポートすることを目指しています。

次に投資する機能やツールについてご意見やご提案がありましたら、遠慮することなくロードマップで投票したり、アイデアを共有したりしてください。さらに、Unity ゲーミングサービスで提供されている、プレイヤーをオンラインにしたり、互いにつないだりコミュニケーションを取ってもらったりする際に役立つマルチプレイヤーのためのツールもチェックしてください。

2022年9月20日 カテゴリ: Engine & platform | 10 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

関連する投稿