Search Unity

『Boss Room』のご紹介 ― マルチプレイヤーゲームの新しいサンプル

, 4月 8, 2021

小規模な協力型 RPG『Boss Room』を通じて、Unity の新しい実験的なネットコードライブラリと、マルチプレイヤーゲームの基本的なパターンを学びましょう。

マルチプレイヤーゲームの開発は簡単ではありません。SDK ドキュメントが提供されていても、マルチプレイヤーゲームの開発について考えてみると、検討事項の多さに圧倒されてしまうのが普通です。提供されている SDK を使って何をすればいいのか、自分のゲームの構成要素として使えるパターンにはどんなものがあるかなどのアドバイスが必要なのです。私たち Unity Multiplayer Networking チームの目標は、開発者の皆さんに、素晴らしいマルチプレイヤーゲーム体験をプレイヤーに届けるためのツールを提供し、サポートすることです。そのためには、基礎となるネットワーキング技術だけでなく、その応用を理解するために必要なドキュメントや教育用テンプレートを提供することが必要です。この目的のために、今回マルチプレイヤーゲームのサンプルを提供することにしました。『Boss Room』は、このような目的で作られた、初めての教育用コンテンツとなります。

Boss Room』の開発と並行して、サンプルをネットワークで動作させるために必要なさまざまな要素について解説した開発者向けチュートリアルが新しいドキュメントサイトに掲載される予定です。これらのチュートリアルでは、RPC と NetworkVariables のどちらを選択するか、遅れ補償のテクニックを使用して応答性の高いゲームをどのように設計するかなど、小規模な協力型ゲームをネットワークで動作させるための重要な要素が数多く取り上げられます。

それでは、現在アーリーアクセスである新公開の協力型ゲームサンプル『Boss Room』の内容をご一緒に見ていきましょう。

『Boss Room』の内容

Boss Room』へようこそ!これは Unity 2020 LTS で開発された公式のサンプルプロジェクトで、Unity のネイティブツール群、グラフィックス、および実験的なネットワーキング技術を紹介するサンプルです。現在、Github でアーリーアクセス版が公開されています。『Boss Room』では、新しい実験的なネットコードパッケージを活用して、最大 8 人のプレイヤーが一緒になって小悪魔とボスを倒す協力型 RPG ダンジョンのバーティカルスライスを示します。もっと『Boss Room』を楽しみたい?慌てなくても大丈夫です。私たちのマルチプレイヤーソリューションが進化するのに合わせて、このゲームもコミュニティとともに進化し続けます。

まずはこちらのドキュメントをお読みください。また、本記事のこの後の内容は『Boss Room』で現在何ができるかのクイックツアーとしてお楽しみください。

準備

プレイヤーは、いずれかのプレイヤーの端末でゲームサーバーをホストするか、あるいはすでにホストされているゲームサーバーに参加することで『Boss Room』のプレイを開始します。

接続が確立されたら、プレイヤーは用意された 8 人のキャラクターから 1 人を選び、ロビーに参加してパーティメンバー全員のプレイ準備が整うのを待ちます。すべてのプレイヤーの準備が整うと、タイマーが表示され、少し待った後にすべてのプレイヤーのキャラクターが「Boss Room(ボスのいる部屋)」環境に移動します。

Boss Room に入ったら、敵の集団をかわしてボスを倒すことを目標に、プレイヤー同士で協力してゲームを進めます。

ネットワーキング

Boss Room』の主な目的は、マルチプレイヤーゲームの基本的なコンセプトとパターンを開発者に教えることです。特に、サンプルのネットワーキングに関する要素は非常に重要です。

『Boss Room』のデザインにおいて特に価値のある部分の 1 つは、それがマルチプレイヤーゲームのパターンを示しているということです。アクションのアニメーションの先読み、ロビー、ステートと RPC のどちらを選ぶか、などの内容です。このようなパターンの実装を見せるだけでなく、それを理解するためのドキュメントもユーザーに提供することを目標としています。今後数か月にわたって公開される関連記事の最新情報は、ドキュメントサイトでご確認ください。

Boss Room』で採用されているネットワーキングモデルは、クライアント-ホスト型のサーバーであり、プレイヤーは統合された Photon Relay および IP 指定による直接接続によって、相互に接続することができます。

キャラクターとクラス

プレイヤーキャラクターについては、4 種類のクラス(メイジ、ウォリアー、ローグ、アーチャー)、3 つの種族(エルフ、ヒューマン、ドワーフ)、男女の性別によって作り分けられた 3D キャラクターが用意されています。これらのキャラクターにはそれぞれ、2 つのメイン技能と、2、3 種類の表情アニメーションが用意されています。AI で動く敵としては小悪魔とダンジョンのボスが用意されており、それぞれ固有の能力を持っています。

Boss Room』のキャラクターはすべて、私たちが愛情を込めて「U」と呼んでいる共通のキャラクターモデルをベースにしています。すべてのキャラクターは共通の構造を持っており、再利用できるようにデザインされています。また、『Boss Room』は UCL ライセンスを採用しています。つまり、私たちのすべてのアセットを再利用して、皆さんの Unity プロジェクトに活用していただけます。改造をお楽しみください!

前述したように、『Boss Room』では、協力型 RPG によく見られる様々なアクションゲームのテクニックと、そのアクションを実装する際に役立つコーディングのパターンやテクニックを紹介しています。これには、サーバー駆動の経路探索とクライアントサイドでの補間を用いた移動、およびネットワークを介してキャラクターが「何かをする」ことを実現するための一般的なメカニズムを持ったアクションシステムが含まれます。

アクションには、キャラクターの基本攻撃から、アーチャーのボレーショットのような派手な範囲攻撃スキルまで、あらゆるものが含まれます。以下は、このシステムを使って実装されたアクションのひな型のリストです。

  • 物理演算に基づいたヒットボックスを持つ近接攻撃
  • 範囲攻撃。この攻撃は、クライアントが提供したポイントを中心に行われ、クライアント側のエリア選択をサーバー駆動のエフェクトを使って表示します
  • サーバーで飛び道具を生成する範囲指定の飛び道具攻撃。また、このアクションのバリエーションとして、アクションボタンを押し続けることでショットを「チャージ」する機能も含まれています
  • AI 駆動のエージェントの気絶アクション。このアクションを実行するとエージェントは何もしなくなります
  • ローグが身を隠している状態をオン、オフするステルスアクション
  • アクションボタンを長押しすることでチャージする機能がついたバフアクション。チャージレベルが最大になると追加効果が得られるようになっています
  • おどけたキャラクターアニメーションを再生することでプレイヤー同士のやり取りを示す表情アクション
  • 選択したターゲットを追いかける追跡アクション
  • ターゲットを狙うアクションを使ってターゲットを選択している時に使用されるターゲット選択
  • 油断したキャラクターを吹き飛ばす踏みつけアクション。これはネットワークでの物理演算のパターンを示します
  • キャラクターを生き返らせる復活アクション

ダンジョンとゲームプレイ

Boss Room』の環境は、プレイヤーがボスに立ち向かう前に、自分のキャラクターのスキルを試すための時間を持てるように設計されています。

ダンジョンには、控えの間とボスのいる部屋があり、ボスのいる領域に入るには、シンプルなパズルを協力して解く必要があります。達成するべき目標もシンプルで、小悪魔を倒し、パズルを解き、ボスを倒して、最後にお宝を手に入れる。これだけです。

Unity チームからの言葉

Boss Room』の目的は、単に API の使い方を教えるというだけではありません。マルチプレイヤーは、ゲーム制作において、実装だけでなくゲームデザインにも影響を与える分野の 1 つです。例えば、「ボスのような物理的な影響を与える NPC をサーバーで動かす場合、クライアント駆動とサーバー駆動のどちらが良いか」とか、「遅延を感じさせないアニメーションの活用方法」など、優れたプラクティスを知ることで、より良いマルチプレイヤーゲームを作ることができます。『Boss Room』のすべての機能セットは、これらのプラクティスとパターンのサンプルとなっています。

私たちのチームの目標は、マルチプレイヤーゲームの開発におけるエンジニアリングプロセス全体の参考資料を提供し、皆さんに、特定のタイプのゲームについては、マルチプレイヤーゲームを 1 から構築できるようになっていただくことです。これには、設計、実装、テスト、そしてライブ環境の扱い方が含まれます。まずは『Boss Room』を参考にして、これらの要素を学んでください。ドキュメントもどんどん追加されていきます。

『Boss Room』の第 2 の目標は、新しい実験的な GameObject ベースのネットコードパッケージ(MLAPI の進化形)のドッグフーディングです。サンプルチームと SDK チームが協力して、MLAPI の改善や UX のフィードバック、問題提起などを行っています。MLAPI に新機能が追加されたり、SDK が更新されたりすると、私たちはそれらの機能を使い、プロジェクト開発の文脈で意味があるかどうかを確認します。

今後の予定

私たちのネットワーキングソリューションが成長し、改善されていくにつれ、このサンプルも成長していきます。以下の情報源をウォッチして、ぜひ最新情報を入手してください。

  • Github で本プロジェクトをフォローし、こちらのガイドを読んで提供されている機能を把握してください。
  • GitHub でコアのネットコードの開発状況を確認し、私たちの公開ロードマップに対して、アップデートや機能のリクエストを出してください。
  • DiscordUnity Multiplayer フォーラムでやり取りして、経験を共有したり、ヘルプを求めることも可能です。

10 replies on “『Boss Room』のご紹介 ― マルチプレイヤーゲームの新しいサンプル”

Greetings, Unity Developers!

Unity wants the input of multiplayer creators to better understand how profiling network activity is working them and what are uncovered needs. If you are a multiplayer creator, please share your input via this short, ten-minute survey. This learning will help Unity understand how to better support the needs of multiplayer game creators.

Full survey link:
https://unitysoftware.co1.qualtrics.com/jfe/form/SV_a5jS6WtpgNCoY4u?source=UnityBRBlog

Very cool! Client-hosted is good for a tutorial, but can we expect docs, or maybe a live demo session, going over best practices for (remote) server-hosted approaches?

Dedicated server setups are definitely something which we will cover at some point in future samples. Boss Room to some extend also has been designed in a way which would allow you to run it as a dedicated server.
We plan to have a variety of learning articles about networking and how to do server hosting could be one of them. If you want you can create a feature request for our documentation, that way we can keep better track: https://github.com/Unity-Technologies/com.unity.multiplayer.docs/issues/new/choose

Is MLAPI designed by Unity? I thought Unity was going toward DOTS Netcode and the new Multiplayer socket library.

This seems to use neither? How confusing.

Yes MLAPI is designed by Unity. It is our new experimental netcode package and will cover networking for GameObject/Monobehaviour while DOTS Netcode can be used with the ECS system.

When does new network engine be release? We need the stable multi threaded engine that can be running on Linux and so on.. many requirements

With ‘the new network engine’ do you mean MLAPI or DOTS Netcode? MLAPI is currently available as an experimental package and we don’t know yet when it will be released.
Also if you could go into a bit more details on your requirements of a the network engine that would be very useful for us.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です