ボクセルの世界の光 ― 本物のライトか、フラッドフィルか
プレイヤーが、基地に光るランプを置きます。技術的には何が起きているのでしょう? この素朴な疑問が、根本的な決断のきっかけになりました。そして答えは、「より新しい」解決策が、いつも良いとは限らないことのよい例です。
案A:Unity の本物のライト。光るブロックのすべてが点光源になり、エンジンがすべて計算します。見栄えはすばらしいのですが、数が増えると耐えられません。ボクセルの世界では、視界に何百もの光るブロックが入ることもあります。それだけの数のリアルタイム点光源は、どんな GPU も汗をかきますし、ブラウザ版ではなおさらです。
案B:フラッドフィルの光。このジャンルの定番です。光は、ブロックごとの数値で、光源から広がり、一歩ごとに減っていきます。とても軽く、光源はいくつでも置けます。でも、光に向きがないので、見た目は平らです。ランプの隣の壁も、足元の面と同じ明るさになってしまいます。
私たちの選択:向きのあるフラッドフィル。フラッドフィルの方式のまま、向きの情報を教えこみました。光は、どの方向から来ているかを知っていて、面はそれに応じて違う明るさで照らされます。結果は、メッシュ化のときにチャンクのメッシュに焼きこまれます。実行時にはほとんど負荷がないのに、従来のブロックの光よりも、ずっと立体的に見えます。
ここで得た教訓は、それ以来どこでも活かしています。まず、このジャンルの本当の問題は何かを考える(ここでは、とても多くの光源と、動かない形状)。技術を選ぶのはそのあとです。本物のライトは、私たちにはない問題を解いてくれて、私たちに解けない問題を作るところでした。
コメント