どうも
思ったより早かったですね。39モードの実装
ということで今回の39モードについて端末検証をしてる人目線で少し見てみました。
ブロック制となってる39人ライブ
見ていただけるとわかる通り、前列に5人編成が2つに3人の単独編成がいます。
この編成がメニュー画面のA/B/Cとそれぞれありますね。
端的に言えば13人ライブを3つ同時に動かしてるのが説明も含めてしやすいです。
今回の39人モードで力を入れてるのはカメラワークですね。
5人編成の場所は基本的に通常ライブでのモーションとほぼ同じものになります。
これは開発側のリソースを減らすのはもちろん、新規実装によるバグの発生を防ぐことも考えられます。
ただ配列しただけでは一体感もなにもないので、そこをカメラワークで魅せてるのです。
アイドル1人にフォーカスしたり、全体を写したり、ブロックごとにしたりとよりカメラワークが富んでいます。
これはFlyers!!!のMVで使われてきたものがよりブラッシュアップされているように感じます。
描写の中でも「39人全員を写しこんで動かす」ということはカメラワークでもあまりやってません。
これをやると、処理面やモデル関連の方面でとても大変なのは目に見えています。
初のドームマッピング背景
Flyers!!!はアリーナ(さいたまスーパーアリーナ)くらいのイメージでしたが、Thank Youではなんとドームです。
ドームのサイリウムパターンは恐らくバンナムフェスとかがあったので、この辺りから参考にしてるのかなと思います。
それにしても見事なオレンジ。まるで俺らだ。
実際の動作
メモリ使用量もかなり違いますね。簡易的な測定方法で通常動作から約400MBの差が出てます。
adbでリアルタイムで取得した値だと39モード実行時のミリシタ単体で1.5GBほど使用していました。
(メモリ6GBの端末にて)
つまり、プロセッサのパワーよりもメモリの読み出し速度と容量がより重視されてるものになります。
処理性能が最低ラインギリギリで足りてたのにサポート外になった端末は、このメモリ周りの規格が古いものだったりでこのような環境ではどうしても不利でした。
GPUとCPUクロックを監視してると特定のタイミングでガツンと上がることがわかりました。
なるほど。1番負荷がかかるのが観客側にカメラが向いた時だ。
— はやぽん! (@H8P0NP) 2019年12月14日
普段はGPUクロックが上がらないミリシタでここまで上がったのは初めてよ… pic.twitter.com/mnqT84j94x
それは観客側を向いたタイミングです。
後述のモデルアセット結合が切れてそのままの描写でレンダリングされる関係か、ガツンと負荷がかかっています。
それも踏まえると、モデルアセット結合とアンチエリアスカットはかなり効果があると思われます。
モデルアセットの結合は写真でいう前段ステージの子と、後ろのステージの子やカメラ外の子とでは描写方法が違うということ。
前段ステージの子はしっかり描写しないと粗が見えてしまうが、後ろのステージとなればある程度引き伸ばさない限り品質の低下を指摘されることは少ないです。カメラ外であれば特にそうですね。
極端な例では衣装のアセットが「袖、胴、スカート、足元」とあるものを遠くで描写するモデルでは「衣装」として一体化してしまうものです。
もちろん、不自然な描写になったりもしますが、そうすると負荷のかかる場面でも軽量化をすることができます。
ただ、一般のユーザーさんでカメラ外の描写を気にする方がどれだけいるか…ですよね。
アンチエイリアスは極端に言うとモデルの曲線を滑らかにするものです。
これも後ろのステージとなればさほど気にすることもなくなるので、カットしたり精度を落としたりしています。
これが、ミリシタで行われてる最適化を簡潔にまとめたものです。
これをやらなければ13人ライブの時点で、デレステのグランドモードとほぼ同等レベルの負荷がかかっていたことでしょう。
以前にミリシタは多段式のアセット結合とアンチエリアスカットをカメラワークに連動させた結果、品質を落とすことなく13人でも動かせる土台を作ったと言います。
最適化の最たるところはここです。この39人ライブも地理が積もれば山となった結果です。
もちろんそれに合わせてモデルも軽量化や演算処理の最適化。キャッシュの組み方など本当に我々の目に見えないところでしっかり生きています。
不要なアセットを削って軽量化し、さらに軽量独自シェダーを採用する。
積み重なった結果、今日では39人のアイドルが踊るようになったのです。
この1枚にミリシタが3Dモデルを39体動かす「39人ライブ」ができるまでに積み上げられてきたものが全て込められている。#ミリシタハーフアニバーサリー pic.twitter.com/yMlphK8tKD
— はやぽん! (@H8P0NP) 2019年12月14日
ミリシタの今年いちばんのスクショはきっとこれでしょうね。多段結合、グループ処理による最適化、軽量シェーダー…
開発チームが3年間積み上げてき最適化の軌跡がここに全て生きています。
とりあえず
これを見る限り、39人のライブをやるためにこのタイミングでUnityのバージョンを上げたのかと思います。
(64bit環境での動作安定と継続サポートのため)
そして動かしてみる通りかなり動作要件が高いです。
検証した限りだと
Android環境ではSnapdragon 845 (メモリ8GBクラス)で最低ライン
基本的に推奨はSnapdragon 855となります。
正直、デレステのグランドモードに匹敵する重さです。
逆を言えば現行のハイエンドスマホで動く程度の所まで最適化をしてくれたと言えるでしょう。
こんなの最適化無しではPCですら動かすの厳しいですよ。
そういえば21:9の端末を持ってて久しぶりに良かったと思いました。圧巻ですね。
てことで皆さん。この39人ライブを快適に遊ぶには是非端末課金をしてみてはいかがでしょうか。