先日Nintendo Switch用ソフト『ゼルダの伝説 ブレスオブザワイルド』と『マリオ オデッセイ』にVR対応アップデートが行われましたが、実はそのアップデートの中にはVR対応 ”以外” のアップデート ”も” 密かに行われていたことが判明しています。
コッソリとサイレントアップデートされたというのは「ゲームのロード短縮」で、例えばゼルダのファストトラベルにそれまで30秒くらいかかっていたのが17秒ほどに短縮される等劇的読み込みスピードが改善されています。
約半分近いロード時間に短縮できたのは素晴らしいですが、なぜこういうことができるのか不思議ですよね。
そこで今回は「なぜゼルダBotWのロードを短縮できたのか」そのからくりについてお話していきたいと思います。
実は本気を出していない⁈Nintendo Switchの秘密
まず、最初に今回のお話においてキーとなるNintendo Switchのパーツについて簡単に説明させていただきます。
Switchの中を開けるとSoCという板状のものが入っています。
↑ これがそのSoCといわれるもので、NVIDIA製のSoC「Tegra X1」をカスタムしたものがSwitchに搭載されています。
このSoCとは何ぞやと言うと、GPUとCPU※などチップがひとまとめになっていて…ここで映像の処理をしたり計算をしたりしているわけですね。
※ザックリ言うとGPUは映像の処理する役割のチップでCPUは計算をする役割のチップ。
SoCはPCや据置ゲーム機の様に大きくGPU/CPUのスペースを確保できないモバイル機に主に使われていますね。
さすがに大きなパーツを積める現行据置機のPS4やXboX One劣るものの、WiiUやPS3よりも高い性能を出せるSwitchのTagra X1などのように侮れない性能を最近では持っているものがあります。
しかし、実はこのSwitch用のTegra X1ですが…
性能をフルパワーで出さないように敢えて力を抑えられていたりします。
「は?性能を抑えるって勿体ないじゃん!」
「もっと本気出せば映像を奇麗にしたり、ローディング速くできるんでしょ?」
そんな風に思う方もいらっしゃると思いますが、そうもいかなかったりするのが歯がゆい所だったりするんですよね。
その理由は大きく二つあります。
- 本体の熱
- バッテリーの持続時間
より高度な映像処理や計算をすればするほどパーツは発熱してSwitchがエラー落ちするリスクが高まりますし、よりパワフルに稼働させる分だけバッテリーの減りも激しくなります。
考えてみると…今よりほんのちょっと画質が上がったりローディングが早くなるけれど、
エラーで頻繁に落ちやすくなったりバッテリーが半分しか持たないSwitchが果たして今のSwitchより魅力的なものになるのでしょうか?
正直それは微妙だよねっていう方が多いと思います。
任天堂もNVIDIAもそういった使い勝手とのバランスを考えた上でどうするべきかを検討した上で、
TegraX1の性能をフルパワーよりも下の力で安定して動くようにカスタムしているという事なのです。
パワーの配分をコントロール
ローディングを短くする方法として、一番分かりやすいのがCPUの性能を上げるという事です。
CPUの性能の良さ=頭の回転の良さみたいなものなのですから…
例えばデスクトップ型PCのCPUを良いもの乗せ換えるとPCの起動が早くなりますし、ゲームのローディングも改善します。
では今回の本題であります、SoCにCPUがくっ付いていてPCの様に交換できないSwitchで「どうやってアップデートさせるだけでゼルダのローディングを短縮させたのか」という話なんですが…
簡単に言うと「抑えていたCPUの力を解放してあげた」という事なんです。
前述した通りSwitchのTegraX1はCPUの性能を抑えているので、本来の力を解放すればその分だけ計算が速くなります。
「CPUの力を解放する」=「計算が早くなる」=「ローディングが早くなる」というわけですね。
しかし、そもそも性能を抑えていた理由である熱やバッテリーの問題はどうなんだ?という疑問がここで出て来るわけですが…
その解決策がなかなか興味深い所だったりします。
BotWのアップデートでローディング短縮されたポイントを見ると分かりやすいので、以下の画像を見て頂きましょう。
こちらはリンクを別の位置にワープさせるときなどで読み込みの際に現れる画面ですが、シンプルな一枚絵の読み込み中の専用画面になっています。
実はこの時に映像を処理するGPUってゲームの操作画面と違ってあんまり仕事をしてないんですよね。
いつも3Dの映像を映し出すためにGPUはしゃかりきに働いてどんどんバッテリーから電力を貰っているいるわけですが、
こういったローディング時は一枚の絵をペラッと映しているだけなのでGPU自体はバッテリーを大して消費していません。
一方CPUはこれから表示するための情報をシャカリキに計算していてアップアップです。
「じゃあ、CPUに本来の力を出してもらって、電力もそっちに送りましょう」というのが今回のゼルダBotWのアップデートに施されたものなんですね。
このようにGPUが頑張っていないときのあくまで限定的にCPUの制限を解放するものなので、
ゲームを遊んでいる間に裏でデータを読み込むような場合はこのような処理ができないようですが、ローディング画面表示されるロードの改善だけでも劇的な進歩と言えます。
こういったそれぞれのパーツに対してフレキシブルなリソースの振り分けをしていかに効率的にゲームを動かすかというを開発者の方達は日々研究してゲームに実装していくわけですね。
最後に
Switchのゲームは同じゲームでも据置機のものと比べると、ローディングに時間が大幅にかかるという傾向がありましたが、
今後ゼルダBotWやマリオオデッセイの様に限定的なCPU性能の解放を行うことで大きく改善されることが実証されました。
Switchはスリープ復帰の速さや利便性の高い機能を持つ快適なハードという長所があるわけですが、是非今後はこの手法を駆使してより快適なゲーム体験を楽しませていって欲しいですね。