【CEDEC 2019】『禍つヴァールハイト』がプレイヤー最大100体同時表示を可能にした方法とは…グラフィック、メモリ、ローディングなど様々な角度から解説


コンピュータエンターテインメント協会(CESA)は、9月4日~6日の期間、パシフィコ横浜(神奈川県横浜市)にて、国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2019」(CEDEC 2019)を開催した。

本稿では、9月5日に実施された講演「『禍つヴァールハイト』モバイルにおけるプレイヤー最大100体同時表示可能なグラフィックス最適化について」のレポートをお届けしていく。

セッションには、KLabGames事業本部エンジニアの田中康夫氏が登壇。『禍つヴァールハイト』開発時の大きな課題であった負荷対策について、FPS、メモリ、ローディングそれぞれにおいて独自に行なった設計・改善箇所と最適化手法について解説が行われた。

【登壇者】

●田中康夫
KLabGames事業本部エンジニア。コンシューマーゲーム会社を経て、2013年にKLabへ入社。『禍つヴァールハイト』ではインゲームのリードプログラマーを担当している。
 

■アバターモデルや敵モデルなど『禍つヴァールハイト』の仕様を公開


本格マルチオンラインRPG『禍つヴァールハイト』。小山力也さん、森川智之さん、沢城みゆきさんといった豪華声優陣の起用や、リアルタイムで進行するクエストバトルが本作の魅力となっている。



まず田中氏は、本作の仕様について「アバターモデル」「敵モデル」「背景モデル」「ポストエフェクト」の4つに分けて紹介。ゲーム内ポリゴンの最低保証は20万Poly描画で、オプションやアップデートで上限を増やしていく計画を立てたそうだ。



●アバターモデル




▲Boneは80としているが、骨格が30で、残りの50は揺れもの系に割り振られている。LOD(Level of Detail)はアバターに使用予定だったが、スキニング更新に掛かる負荷によってFPSが下がってしまうため、使用を見送ったという。

●敵モデル


▲普通の敵のPolyは3000だが、ボス級の敵のPolyは20000で約7倍となっている。

●背景モデル

▲背景モデルはステージによって異なるが、「Diffuse Texture」「LightMap」等を使用している。

●ポストエフェクト

▲ポストエフェクトには明るい光があふれ出ているような効果を出す「Bloom」や、霧やもやをシミュレートする「Fog」、画像の明るさや彩度を減少させる「Vignette」等が使用されている。
 

■プレイヤー最大100体同時表示を可能にしたチューニング法とは


続いて、田中氏は本作について最適化の経緯を述べる。初期はコア機能とルックを中心に開発を進めたが、中期の仕様変更・追加によりアセットが溢れてしまう結果に。後期にチューニングを始めるも、初期のリソース資産を超過しており、負荷とメモリの両方を限界まで圧迫してしまう。

プログラマーとデザイナーが連携して作業を行ったが、プログラムとアセットの多岐にわたり、チューニング時間に半年を要する結果となったそうだ。

そんなチューニングの内容について、田中氏は「ゲームロジック」「グラフィック」「メモリ」「ローディング」の4つの項目に分けて説明する。

●ゲームロジック
常時接続で各ユーザーが頻繁にルームに出入りするゲーム性から、キャラクター構築のアロケーション(割り当て)が常時発生するため、GC(garbage collection)は常に注視をしていたそうだ。フレーム更新処理でアロケーションを控えたり、文字列操作自体を減らすといった対応を行い、5fpsの改善に成功している。





●グラフィック
Set Pass Call(ドローコール)が500を超えていたため、背景に関してはメッシュを可能な限り結合、エフェクトはアトラス化や半透明パーティクルの発生数を制限。他にも、アバターのパーツのテクスチャを1つのマテリアルにバインドするなどして、300に留めるように対策。その結果、10fpsの改善につながった。






また、シェーダーはfragで不要な計算をvertやuniformに逃がすことでGPUを軽量化、深度情報はレンダリングカメラのクリップに合わせて配置するなどして最適化を行っている。




●メモリ
アプリの最大使用RAM容量は、基本的には搭載RAM容量の半分に設定。iPhoneを使ってプロファイラ調査した結果、アバターのテクスチャがテクスチャメモリ使用の大きな割合を占めていたことが判明。テクスチャフォーマットを変更したり、解像度を下げることでメモリを700MBから500MBに修正した。





●ローディング
ローディングの高速化を目指した理由について、田中氏は「ユーザー離脱を抑制するためだった」と説明。競合他社のゲームでローディング時間が長いタイトルがあったという背景も語る。

ローカルデータベースは事前にクエリ結果をキャッシュをする、アセットバンドルには参照カウントなどの機構を用意してアンロードを減らすなどして対応。他にも、フィールド移動には非同期を前提とした構築処理を行うなどした結果、ローディング時間を10秒から2秒にまで短縮させることに成功したと話した。





こうした取り組みによって、『禍つヴァールハイト』はプレイヤー最大100体同時表示を可能としているそうだ。最後に、田中氏が講演の内容について簡単におさらいを行い、セミナーは終了となった。

 
(取材・文 ライター:島中一郎)



■『禍つヴァールハイト』
 

App Store

GooglePlay

公式サイト

公式Twitter

公式LINE@


©KLabGames
KLab株式会社
http://www.klab.com/jp/

会社情報

会社名
KLab株式会社
設立
2000年8月
代表者
代表取締役社長CEO 森田 英克/代表取締役副会長 五十嵐 洋介
決算期
12月
直近業績
売上高107億1700万円、営業損益11億2700万円の赤字、経常損益7億6100万円の赤字、最終損益17億2800万円の赤字(2023年12月期)
上場区分
東証プライム
証券コード
3656
企業データを見る