「Stellaris」開発日記6月27日――新たなスカイボックス

stellaris-dd20160627

パラド社発の宇宙4Xゲーム「Stellaris」の開発日記6月27日分(ナンバリングはなくなったようです)が更新されていましたので、その内容をご紹介。

前回:開発日記#37――アシモフパッチ パート2

2016/08/02 #39へのリンクを追加。

スポンサーリンク

概要

開発日記6月27日分は、「アシモフ」パッチで改良されたグラフィックについて。今週予定されていた「Stellaris」の将来は次回以降に変更になりました。今回の開発日記はアートディレクターのAerie氏によるものです。

  • 今回の開発日記は技術的で詳細な内容だ。
  • アシモフパッチでプレイヤーが気づくであろう大きな変更点のひとつは、スカイボックスと呼んでいる背景の変更だ。
  • 発売時には、星系の見た目にバラエティがないことが問題だった。すべて同じスカイボックスを使っていたために、どれも同じように見えてしまっていたのだ。星系に存在する惑星の数は、設定によってさまざまだし、支配者などもさまざまだが、ある時点で画面の95%のピクセルを構成するのはスカイボックスだ。つまりこれは見た目の最重要の要素ということになる。
  • ではスカイボックスをよくするにはどうするか? スカイボックスの問題は、メモリをドカ食いするという点にある。ひとつでビデオメモリを約12.5MBも「食って」しまうのだ。比較対象としてゲーム全体のUIを見てみると、こちらは約90MBだ。
  • このメモリ消費量は、12280×2048ピクセルというテクスチャの大きさからきている。これはプレイヤーの周囲360度をすべてカバーできる大きさだし、さらに150%まで拡大することもできる。これらのファイルの大きさにもかかわらず、これらのファイルは大きく圧縮されてスカイボックスに使われている。スカイボックスのサイズのために、他のものを追加する余裕ができた。
  • 私たちがやったもうひとつのことは、再着色だ。私たちはLUT(ルックアップテーブル)というものを、参照するテクスチャのすべてを再着色するのに使った。これは私たちがPhotoshopでやるような、色のバランス、色調、彩度、レベル補正、トーンカーブなどの調整を、ゲーム中でテクスチャに対してやってくれる。LUTはゲームの雰囲気を変えるとても強力なツールだ。だが、LUTには大きな欠点もある。ファイルをさらに圧縮することに問題があるのだ。
  • 上で述べたように、我々のスカイボックスは最初はいいものではなかった。美しくはあったが、質としては最初期はそれがキズになっていた。これを作るときには、4000×2000ピクセルの大きなパノラマ画像を作った。この画像はMayaで球全体を包み込めるもので、スカイボックスに必要な情報を得るために、視野角90度ごとに6つのカメラで描画するものだった。

stellaris-dd20160627-skybox

  • だが、4000×2000のテクスチャは12000×2000のスカイボックスには充分ではなく、少なくとも8000×4000のテクスチャが必要となった。
  • 問題はさらに深刻になった。以前にも描画していたパノラマテクスチャは、Photoshopでレベル補正やマスクを使って星雲や銀河を描いたものだった。だが、テクスチャにバンディング(注:グラデーションに濃淡の縞ができることだそうです)の問題が生じたため、以前はMayaにインポートしていたところで、テクスチャの画像のクオリティを落とす一手間を加えなければならなかった。
  • 以前と同じ技術でより解像度が高く、元のテクスチャがよりよい新たなスカイボックスを作ることを一度は考えたが、8000×4000をハードウェアで動かすことはとても骨の折れることだったし、レイヤーの合算もあり、いいコンピュータでさえ始めるのに時間がかかった。さらに重要なのは、よい結果になる保証はまったくないということだった。
  • 話は振り出しに戻った。我々がやる必要があったのは、まったく別のことだった。
  • 私たちは流体シミュレーションを使うことにした。環境を構築するのに使い、単純に描画する。以前の流体力学に対する経験は限られていたが、常に新たな解決をもたらしてくれた。流体を使うことで、私たちは最初のステップ全体をなくすことができ、それによって多くのテクスチャの品質低下を除去することができた。Mayaで流体を使うことは驚くほど単純で、その後さらに学んで背景を表示する簡単なテストをやり、必要としていたことをだいたい満たすことができた。

stellaris-dd20160627-skybox3

  • Mayaからゲームに新しいスカイボックスを移す前に、Photoshopで細かいところを詰めた。こうして新しいスカイボックスができあがった。見た目は古いものに似ているが、クオリティは高く、圧縮も少なくて済む。
  • だが、再着色には新しいスカイボックスは充分ではなかった。多くのものは再着色がうまくいかなかったのだ。私たちはバリエーションを作ることになり、三歩進んで二歩下がることになった。

stellaris-dd20160627-skybox2

  • エンジンチームに話す前に、コーダーの一人がYCoCg圧縮を使うことを提案した。これは色をRGBとして保存するのではなく、輝度、色調、彩度として保存するもので、スカイボックスの色の変更により適していた。YCoCgの面白いところは、人間の目が色を処理する方法とは似ていないところだ。それにもかかわらず、情報量の低下を減らす以外にもいいところがあり、私たちはそれを使うことにした。使ってみるととても簡単で、実によい結果をもたらしてくれた。
  • この新しいテクスチャは2倍に大きくなり、ひとつ25MBとなったが、画面を覆うに値するものとなった。ゲームのあらゆる部分で最も価値あるグラフィックは、スカイボックスにほかならない。
  • だが、まだ充分ではない。画面上の多くのものには色調の点でドラスティックな変化が起こっているが、青緑色の背景から黄色、オレンジ、赤への変化をできるようにする必要があった。そこで、LUTの色補正を変更するのではなく、エンジンでの描画ステップを早め、その一番上に色補正を追加した。この方法だと艦船の色にも微妙に影響を与えることができ、より自然に見える。こうして素晴らしい結果が得られたのだ。

stellaris-dd20160627-skybox4

  • 色を変えた後、私たちはバラエティを増やすべく作業した。さらに星の密度を変えて新たなスカイボックスをいくつか作り、銀河のコアに近いところは密に、中くらいのところは以前と同じくらい、外縁部は背景の星がまばらでスカイボックスが暗くなるようにした。
  • こうした変更により、各星系はよりユニークになり、銀河のどこにいるかをより判別しやすくなった。

7月はパラド社はお休みらしいので、次回は8月でしょうか。

なお、1.2アシモフパッチは既に正式版がリリースされています

次回:開発日記#39――活動再開