Case studies

スリリングなマルチプレイで世界を融合 ヒステラ|Unity

Jul 3, 2024|11 分
ヒステラ by スティッキロック - キーアート
このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。

StickyLockがいかにしてDOTSのパフォーマンスを向上させ、プレイヤーを時空を超えたマルチプレイヤーFPSへと導いたかをご覧ください。

課題:
テンポの速いFPSのパフォーマンス上限を引き上げ、グリッチでゲームコンテンツを動的に入れ替える
プロジェクトのスタッフ:
40
プラットフォーム:
PC
所在地:
オランダ、北ホラント州

少人数の開発チームが、革新的なゲームメカニクスをテンポの速いファーストパーソン・シューティング・アクションにどのように持ち込んだのか?StickyLockのチームは、混雑したFPS市場で勝ち抜くためには斬新なアイデアが必要だと考えていた。異なる時代をつなぐポータルとして始まった「グリッチ」は、プレイヤーを異なる時代へ移動させ、新たなマップを出現させるゲームメカニクスへと進化した。しかし、この大胆なビジョンの構築には、驚異的なパフォーマンス、揺るぎないマルチプレイヤー・インフラ、革新的なグラフィック・コンポーネント、そしてすべてをまとめる強力なパートナーが必要だった。

FPSというジャンルを新たな次元へと押し上げる

テクニカル・アーティストであり、プログラマーからプロデューサーに転身したジャメル・ジアティは、スティッキーロック・チームとともに『ヒステラ』の制作を始めたとき、野心的なプロジェクトであることを自覚していた。このハイオクタンの8x8ファーストパーソン・シューティングゲームは、パフォーマンスを犠牲にすることなく、リアルタイムで重なり合うマップとタイムラインをプレイヤーに移動させます。

経験豊富なUnity開発者であるジャメルは、スケーラブルな処理と、マップやキャラクターのコンポーネントをその場で入れ替えられるバックエンド機能が必要であることを知っていた。そのためにチームは、UnityのDOTS(Data-Oriented Technology Stack)とECS(Entities Component System)を採用してパフォーマンスを向上させる一方、Unity Gaming Services(UGS)を利用してマルチプレイヤーバックエンドのインフラを処理しました。


成果:

- 何十万ものエンティティやコンポーネントを扱うことができる、効率的でパフォーマンスの高いバックエンドフレームワーク。

- UGSを使用して数百から数千の開発時間を節約

グリッチで交換される途中の地図の鳥瞰図。

グリッチで平行時代へ移動する

ヒステラの特徴はグリッチというゲームプレイ・メカニズムで、レベル内のあるセクションが、独自のプレイ・フィールド、行動、武器セットを持つまったく別の時代に移行する。この突然の設定変更は、ゲームの興奮を煽るが、スティッキーロック・チームにとっては課題でもあった。

グリッチは3つのフェーズで展開する。最初の段階である「予期」は、グリッチが間近に迫っていることをプレイヤーに視覚的に知らせると同時に、舞台裏ではアセットの移行を管理する準備をする。次に脱構築の段階に入り、現在の時代のビジュアルは次のグラフィックへの道を歩み始める。この切り替えの間に、元の時代の衝突は取り除かれ、新しい時代の地形が形作られ始める。

新時代に突入したゲームは、新しいビジュアルとコリジョンゾーンをプレイヤーに見せてくれる。ナビゲート可能なエリアと、危険なスポットからプレイヤーを遠ざけるコリジョンゾーンを区切るために、ユニークなテクスチャマップが採用されている。このような場所にプレイヤーがいると、ゲームはダメージを与えることで移動を促し、遷移後にプレイヤーがその場所に留まると致死ダメージにまでエスカレートする。これは、新時代のビジュアルと衝突を確固たるものにする劇的な衝撃波効果で最高潮に達し、グリッチ・シークエンスを完成させる。

グリッチの構築には、トランジション、プレーヤーの動き、コリジョン管理のための高度なシステムが必要だった。Unityの柔軟性により、チームはこれらを自動化するカスタムツールとスクリプトを開発し、プレイ中にマップ全体が移動してもスムーズなゲームプレイを実現した。「ユニークな戦場だ」とジャメルは説明する。

洞窟の中で起こる不具合。

サブシーンによるワークフローの合理化

グリッチは、技術的な実装と、視覚的な一貫性やゲームプレイの流れを乱すことなくレベルに溶け込ませなければならないという点で、大きな挑戦だった。チームはUnityのSubSceneコンポーネントを使用してこのバランスを取った。

サブシーンは、他のシーンを参照するGameObjectのMonoBehaviourです。これはEntitySceneと呼ばれるエンティティ表現に変換される。サブシーンは、オープン、クローズ、アンロードという異なる状態で存在することができ、この状態はメモリとビジビリティの負荷に影響する。オープン・サブシーンでは、GameObjectをリアルタイムで変更・変換することができ、クローズド・サブシーンでは、エンティティ表現をメモリにロードする。この設定は、複雑なシーンを管理し、エンティティデータを効率的に処理することでパフォーマンスを最適化するのに役立つ。

「一見小さなことが大きな違いを生むんだ」とジャメルは語る。「1つのシーンで複数の地図セクションを扱うことができる。このアプローチは、アーティストが重複することなく個々のサブシーンに集中できるようにすることで、ワークフローを簡素化するだけでなく、コンフリクトも最小限に抑えることができる。どの時間帯にどのサブシーンがアクティブなのかが一目瞭然です」。

グリッチ途中のヒステラ戦の風景。

ラグに対処し、ティックレートを高めるための最適化

「グローバルなマルチプレイ体験を提供することは、間違いなくUGSが私たちを助けてくれる最大の課題です」とジャメルは言う。"世界中のさまざまな地域に適切な品質のサービスを提供できるようにしながら、フリートの設定や管理の心配を解消してくれる"

StickyLockチームは、さまざまなpingレベルのプレーヤーが体験できるよう、バランスをとることに力を注いだ。高ピンプレイヤーはラグ補正の恩恵を受け、遅延を考慮することでより公平なヒット登録が可能になるからだ。しかし、これは低Pingのプレーヤーに悪影響を与える可能性がある。なぜなら、サーバーの "巻き戻し "によって、カバーの陰に隠れてヒットされる可能性があるからだ。Multiplay Hostingダッシュボードから得られる配置とパフォーマンスの洞察、そしてNetcode for Entitiesパッケージのすぐに使える予測、ロールバック、ラグ補正機能は、すべてのプレイヤーにとってよりスムーズで公平なマルチプレイ体験を保証する鍵となりました。

ジャメルは、コストを増やさずに高いティックレートで運用するために、サーバーのチューニングに多くの労力を費やしたと強調する。Unityチームの経験により、最適化の機会を特定することができ、サーバーは、チームが迅速にライブ調整を行えるように設定することができた。最後に、Unityのルールベースのマッチメイキングにより、StickyLockチームはゲームデザインと待ち時間や待ち時間のバランスを取ることができた。

「サーバーのRAMとCPUの使用状況を把握すること、さまざまな地域で高品質のサービスを維持すること、マッチメイキングルールの柔軟性とともにサーバーの機能を管理すること、これらはすべて私たちにとって不可欠なことです」とジャメルは言う。"我々は、ゲームプレイの向上とコスト管理との間の不利なトレードオフを回避できるよう、より高いパフォーマンスを実現する方法を常に模索している"

一人称視点とプレイヤーを取り囲む赤いグリッチ要素を持つヒステラのゲームプレイ。

DOTSでパフォーマンスの上限を引き上げる

時間を交差させるゲームプレイには、スムーズな移行をはるかに超える困難が伴う。マルチプレイヤーのフレームワークで重なり合うパラレルワールドを作ることは、信じられないほど高いパフォーマンスを達成することを意味する。そのためにStickyLockチームは、ECS(Entities Component System)パッケージ、Physics、C#ジョブシステム、Burstコンパイラで構成されるUnityのDOTS(Data-Oriented Technology Stack)を採用した。

2020年初頭にDOTSとECSを採用することは、いくつかのリスクを伴うものであった-彼らは技術の早期採用者であり、チームはスキルアップに投資し、その場で新しいワークフローに適応しなければならなかったが、サンプルに飛び込んだ後、ジャメルとチームは、報酬がリスクを上回ると判断し、飛び込んだ。

“​バーストとECSの高い性能の上限は、我々にとって極めて重要です」とジャメルは言う。これは、異なるスタイル間でメッシュやマテリアルを再利用できないため、より多くの壊れたバッチにつながる。ECSを使用することで、このような制約にもかかわらず、高品質なビジュアルを維持するために必要なパフォーマンスを得ることができます」。

C#ジョブシステムはタスクの効率的な並列処理を可能にし、BurstはC#コードを高度に最適化されたネイティブマシンコードにコンパイルし、従来の.NETランタイムのオーバーヘッドを回避した。このネイティブ・コードは、ターゲット・プラットフォーム用に特別に調整されており、その結果、パフォーマンスが向上している。DOTSがチームにもたらした恩恵について、ジャメルは次のように語っている。"もし性能予算の多くをシステムに費やしていたら、5つの異なる時代を今のようなクオリティでレンダリングすることはできなかったでしょう。

遠距離からライフルで狙いを定めるプレイヤーの一人称視点。

UGSで時間を買う

接続性だけでなく、ジャメルは開発時間を短縮する別の方法を見つけることで、チームのスキルアップのための時間を確保する必要があった。彼は、開発者をゲームプレイに集中させるためにUGSを利用したが、これは「数百から数千時間の開発時間の節約になる」と見積もっている。

チームはMultiplay Hosting、Matchmaker、Authentication、Cloud Content Delivery(CCD)を使用した。複数のファーストパーティ・サービスを利用するメリットは、スティッキーロックにとって当初から明らかだった。「UGSのサービスは、将来コンソールに移植するときのために、クロスプラットフォームになっている。

Multiplay Hostingは、一夜にして成功を収めた場合、素早くスケールアップできるように設計されています。「一夜にして人気が出るというのは、最近ではよくあることです。多くのタイトルを成功させてきた経験を持つサービスを利用することで、私たちは安心感を得ることができます」とジャメルは言う。さらに、Authenticationのクロスプラットフォーム機能により、Histeraは適切な時期にマルチプラットフォーム展開ができるようになります。また、CCDにより、チームはコンテンツとリリースパイプラインを簡単に管理できるようになり、ゲームの成長に合わせてプレイヤーを飽きさせない適切なコンテンツと機能を提供できるようになります。

堅牢でスケーラブルなマルチプレイヤーバックエンドインフラ、マルチプラットフォームに対応した認証とプレイヤーコミュニケーションにより、ジャメルはMultiplayとUGSのチームが彼をサポートしていることを確信し、自信を持ってローンチに向かいます。