開発状況 - 2018年8月

2018.8.24
フォートナイトチーム
フォートナイトファンの皆さん

8月の開発状況をお伝えします。素晴らしい内容が盛り沢山ですので、早速見ていきましょう!

操作関連(ゲームパッド、モバイル、Nintendo Switch)

現在フォートナイトは、ソファーに座ってコントローラーでプレイすることも、外に出てモバイルでプレイすることも可能です。そして、コントローラー(ジャイロコントロールを含む)でのエイムに関して、様々な改善や不具合の修正に取り組んでいます。これには、より精密なエイムを可能にするためのデッドゾーンおよび加速度の調整などが含まれます。

入力デバイスに基づいたマッチメイキング
お好きな入力デバイスで公平な対戦をお楽しみいただけるよう、マッチメイキングのロジックを改善しました。今後のアップデートで、入力デバイスに基づいたマッチメイキングシステムを実装予定です。これにより、同一の入力デバイスを使用しているプレイヤーとマッチが組まれるようになります(コントローラー同士、あるいはキーボード+マウス同士など)。

詳しく見ていきましょう:
  • コンソールでのプレイ時、パーティー内の誰かがマウスおよびキーボードを使用している場合、PCプレイヤーとキーボード+マウスを使用する他のプレイヤーがいるパーティーとマッチメイクされます(PCプレイヤーとパーティーを組んだ時と同様)。

なお、現行のクロスプレイルールはそのまま適用され、例えばPCプレイヤーとパーティーを組んだ場合は、ご利用の入力デバイスに関係なく常にPCプレイヤーとマッチが組まれます。

操作設定のカスタマイズ
年内の実装を目指している本機能では、ゲームパッドのボタン割り当てを自由に再配置することが可能です。また、全てのプラットフォームにおけるコントローラーの最適化についても引き続き取り組んでいます。


武器のバランス

最近行った各種変更のロジックを記した記事を先週公開しました。記事はこちらからご覧いただけます。ここ数ヶ月の間に、「ダブルポンプ」戦術の席巻からサブマシンガンの台頭など、武器のトレンドに様々な変化がありました。武器に関しては今後も調査および調整を続け、それぞれの性能に偏りがなく、目的に応じて使い分けられる環境を作っていきます。

BR05_Yellow_Social_Heavy-Sniper.jpg

今後の変更点:
  • ショットガンの装備時間を見直します。元々、本機能は高速の武器切り替えを防ぐために追加されたものですが、ショットガンの切り替え時に一定時間の遅延が導入されたことで、あまり意味をなさなくなっていました。
    • ポンプショットガンの装備時間を短縮するとともに、その他のショットガンについても見直しを行う予定です。

建築の有効性

建築に関しては、v5.0のアップデートで初めて建築素材の耐久力調整を行いました。そして先週に建築素材タイプごとの差をより明確にするための再調整を行い(金属は石材より強く、石材は木材より強い)、さらに戦術的な建築ができるようになりした。

上記の調整後も、建築に関しては見直しを続けていきます。シーズン5におけるストームの挙動変更を受け、サークルの仕様についても調整手段を探っています(最終サークル内でプレイヤーによって作られた建築物に対してストームがどのような影響を与えるかなど)。

パフォーマンス

アップデートによるゲームクオリティの向上を目指すなか、現在は「50対50」モードの改善を中心に進めており、遅延の緩和や低解像度の建築物などのストリーミングの削減に取り組んでいます。

高水準のパフォーマンスを維持するには、絶え間ない取り組みが必要です。新しい機能(ゴルフカートなど)を実装する際には一定のパフォーマンスコストが伴い、新たに追加する機能の有効性を確実なものにしなければなりません。新機能の実装時には、ある分野において代償が発生することがよくあります。そのため、各アップデートリリースの間(およびリリース前)にはパフォーマンスを確認し、迅速に問題を検知および修正できる態勢を整えています。

50対50
大勢のプレイヤーが一堂に会する50対50において、クオリティ向上を目指して調整を行っています。下記のグラフは Xbox One およびPlayStation®4における損失フレーム(実際にレンダリングされているフレーム数と60fpsでのレンダリングにおける理想フレーム数の比較)であり、低いほど良好となります。ご覧の通り、5.0(乗り物の実装により不具合が発生したバージョン)を除きアップデート毎に50対50のパフォーマンスが向上しています。

MVP60-Console-State-of-Dev-Dashboard.png

こちらのグラフは、その他のプラットフォームにおける30fpsでの損失フレームを示したものです。

MVP30-PCMobile-State-of-Dev-Dashboard.png

iOSおよびNintendo Switchにおいて、ローンチ以降の50対50のパフォーマンス悪化が顕著に見てとれます。こちらは現在調査中です。

全てのプラットフォームにおいて、50対50のフレームレート問題にはまだまだ改善の余地があり、現在全力で取り組んでいます。さらなる改善まで、今しばらくお待ちください。

遅延(画面のフリーズ)
プレイヤーの間で話題にもなっていた、フォートナイトのプレイ中に発生する遅延の対応をここ数ヶ月で進めています。特に、ゲームプレイに支障をきたす0.5秒以上の大幅な遅延が発生する問題を中心に取り組んでいます。

次回のv5.30のアップデートでは、大幅な遅延(数秒間)の原因の特定と修正を行いました。0.5秒以上の遅延が発生する問題の60%が、本件に起因するものでした。長時間のマッチ、特にプレイグラウンドにおいて最も酷くなっていました。これは Xbox One がとりわけ酷い状態で、その他PlayStation®4、PCおよびMacでのプレイにも大きな影響を及ぼしていました。

下記のグラフは、1分間あたりに発生する大幅な遅延(0.5秒以上)の件数を、各コンソールにおけるリリースバージョン毎に示したものです。

Hitching-Console-State-of-Dev-Dashboard.png

こちらは非コンソール型プラットフォームにおけるグラフです:

Hitching-PCMobile-State-of-Dev-Dashboard.png

Macのv5.0ではシェーダーオブジェクトのキャッシングの改善によって、遅延発生数が大幅に減少しています。

iOSでは、シェーダーオブジェクトのランタイム生成が大幅な遅延の主な発生原因となっており、現在対処を行っています。

建築LOD(詳細度)ストリーミングの遅延
ティルテッド・タワーに降りた際に建築物の読み込みが完了していないというのは、非常にストレスが溜まります。以前のバージョンで、この問題の究明と不具合の検知を目的としてアナリティクスを追加しました。このデータ(および皆様の報告)により、Xbox One とNintendo Switchでは特にこの問題が顕著であることを確認しました。v5.30のリリースでは本件の対処にフォーカスしており、上記のプラットフォームで改善が見られるはずです。

Nintendo Switch - 画面解像度
本タイトルのNintendo Switch版リリース時、様々なシーンで画面がぼやけているという不満の声が挙がりました。Nintendo Switch版では他のコンソールやPCと同じ遅延レンダリングを使用しており、設定の多くは Xbox One やPlayStation®4と同一です。ダイナミックレゾリューションと呼ばれる機能によって、フレームレートに影響を及ぼすレンダリングの遅延を防いでいます。つまり、画面上のアクションが重くなると、フレームレートに影響が出ないように解像度を落とすということです。そのため画面のぼやけを防ぐうえで、GPUの性能は重要となります。

Nintendo Switch版ではv5.20で新たな高性能フォワードレンダリングへ移行し、GPUの時間が3ミリ秒増加しました(約10%の改善)。これにはエンジン上でいくつかの変更を要したものの、映像の忠実性における損失はありません。結果として、画面解像度は向上し(ぼやけなどの不鮮明さが減少)、GPUの動作も軽減されるためバッテリーも長持ちするようになりました。
PlayStation®4
PlayStation®4 Proでフォートナイトをプレイされている皆さんに向けて、近い将来4K TVへの接続時に1080p以上の解像度へ対応予定です。詳細については追ってお知らせします!

 

ネットワーク
フォートナイトでは、多くの地域で複数のデータセンターが存在します。例えば、北アメリカ東部地域のデータセンターはバージニア州とオハイオ州に置かれています。現在、各地域内のデータセンターで稼働中のサーバーにランダムでマッチが割り当てられる仕組みになっているため、マッチ毎にping値のバラつきが発生することがあります。この問題に対処するため、サブ地域のマッチメイキングによってプレイヤーの地域内にある最適なping値のデータセンターへマッチを割り当てられるように調整を進めています。この調整が実装されれば、ping値がより安定した状態でのプレイが可能になります。


アジア地域においても、東南アジア圏では本来のパフォーマンスでプレイできない問題が発生しています。対策として、新たにシンガポールへデータセンターを設置し、サブ地域のマッチメイキングを導入します。これによって待機時間が増加しない限り、ping値が改善されます。待機時間が余りに長い場合、プレイヤーはさらに大きなサブ地域に割り当てられます(上記のケースでは東京)。この手段であればほとんどのケースにおいて、他のプレイヤーのping値を低下させることなく当該プレイヤーのping値を改善することができるでしょう。

私たちの目標は世界各地のプレイヤーへ最高のサービスをお届けすることです。上記以外の地域に関しても引き続き見直しを行い、パフォーマンス改善に向けたデータセンターもしくは新たな地域の追加を検討します。現在、調査を行っている地域(東南アジアを除く)は中東/北アフリカ、およびロシアです。詳細については追ってお知らせします。

オンラインプレイ時の挙動/「ラバーバンディング」
v5.30では、回線の接続状況が不安定な場合に顕著なネットワーク関連の問題(ラバーバンディングなど)に対処しました。

パケット損失を引き起こす要因はいくつかあり、例えばWi-Fiの電波干渉(回避方法として有線接続を推奨)、最適化されていないルーターの使用(最新版へのアップグレードを推奨)、ISPまたはデータセンター水準の問題、サーバーの過負荷(サーバーパフォーマンスの最適化を行ったため、現在ではあまり見られません)などがあります。ネットワーク接続が不安定な場合(特にパケット損失の発生時など*)、プレイヤー自身および他のプレイヤーに影響を及ぼします。

*ゲーム内の設定メニューより、ネットワーグデバッグの有効化が可能です

クライアントでパケット損失が発生した際、ローカル側ではキャラクターのワープ、いわゆる「ラバーバンディング」が見られます。これはクライアントとサーバーのシミュレーションの相違(入力や速度など)に起因します。シミュレーションに基づいてサーバーがクライアントの位置を最終的に決定しますが、許容範囲を超える誤差が発生した場合、サーバーはクライアントの位置を「修正」します。これは通常のネットワーク要素を原因として小さな規模(数センチ程度)で頻発します。例えば、移動中のオブジェクトとのコリジョン時に僅かな相違が発生することがあります(待機時間に起因)。プログラム実行時の不具合および実行を円滑化するための仕様としてこの修正が起こることもあります。例えば、乗り物に乗った際にサーバー側でプレイヤーがワープすると、クライアント側では正しい位置に修正されます。

Unreal Engineにはこうした位置修正をスムーズにするための組み込みシステムがあります。これは極めて複雑で、サーバーに検知されていないクライアントの挙動(クライアントはサーバーよりも先に動作するため、その待機時間に起因)のバッファリングを伴います。修正が適用されると、クライアントはタイムスタンプ修正後にローカル入力を反映し、元の位置に引き戻されます(例えば、修正時間から0.1秒後に移動した場合、元の場所へ引き戻されます)。これにより、ローカル側で予期された挙動とサーバー上での修正に発生する相違をカバーすることができます。例えば、フォートナイトの初期バージョンでは、エイム、近接武器のスイング、ジャンプなどの動作を行う際、タイミングに影響するロジックの不具合が発生し、クライアント側で小規模な位置修正が行われることがありました。これらは全体的に小さなものであるため、組み込みシステムで相違をカバーしてシームレスにすることが可能です。しかし、位置修正には付帯的コストが伴うため、依然として修正時の挙動が顕著に表示される可能性があります。こうした問題については、今後のアップデートで対応予定です。

パケット損失などにより、長時間(0.25秒以上)サーバーへクライアントから応答がない場合、最後に検知した状態(速度など)を基にサーバー側でシミュレートしたクライアントの挙動を実行し、クライアントの応答があるまで続行されます。主な目的は、他のオブザーバー(他の遠隔クライアント)から見たクライアントの状態を適切なものにし、シミュレーションにおけるサーバーとの大幅な相違を防ぐことです。

しかし、長時間にわたるパケット損失時に発生する事象を調査した結果、上記のシステムにいくつか問題が発生していることが判明しました。その1つは、強制的に実行されたサーバー更新によりクライアントのタイムスタンプが不正に進行し、それによって期限切れとなったクライアントパケットが一時的にサーバー上で認証されてしまう問題です。その結果、プレイヤーの現在の速度に伴って予期された動作と合致しない、一連のサーバー修正を受けるという状況が発生していました。さらに、長時間のネットワーク損失後、サーバーが強制的に位置の移動を行うことで、プレイヤーの位置に大幅なズレが生じてしまいます(身を隠している遮蔽物の外に出たり、崖から落ちるなど)。これは、接続切れの間も、サーバーではプレイヤーの入力操作がないままシミュレーションが続行しているためです。

対策として、上記の問題の検知および対処を行うUnreal Engineのサーバーコードを改善し、クライアントのタイプスタンプを正常に更新すると共に、強制的なサーバー調整の際に設定可能な時間制限を設けました。また、こうした状況のテストに向け、様々なレベルでパケット損失をシミュレートできるコマンドも実装しました。これらは次のUE 4.21やそれ以降にリリースされるエンジンでご確認いただけます。

一連の修正により、パケット損失後のクライアントの位置において、回線が切れる前の速度に基づき予期された位置との整合性が大幅に上がりました。回線が切れている状態でクライアントが前方へ走っていた場合、位置修正の程度はごく僅かです。ただし、クライアントが進行方向や速度を大幅に変えた場合、ワープが発生する可能性があります。とはいえ、そういった現象も大幅に改善されています。また、軌道の整合性が上がったことで、他のプレイヤーにネットワークエラーが発生してもワープが起こりにくくなっています。そして時間制限を追加したことにより、パケット損失で操作が無効となった場合、キャラクターが一定の距離を超えて移動しないようになりました。これにより、意図せず見通しのいい場所に出てしまう、あるいは崖から落ちてしまうといったことが起こりにくくなりました。

プロキシシミュレーションの改善
上記のオンラインプレイ時の挙動/ラバーバンディングの改善に関し、パフォーマンスおよびクオリティのプロキシシミュレーションも改善しました。ここでの「プロキシ」とは、画面上にいる自分以外のプレイヤーを指します。

フォートナイ