跳到正文
AUTOMATON· Haruki Maeda·· 2 小时前AI 评分27

困扰于水面观感不佳的游戏开发者,将参数调至离谱数值后画面剧变改善。即便不真实,“感觉不错”即可

水の見映えがいまいちだと悩むゲーム開発者、パラメータをとんでもない値にしたら劇的改善。現実通りじゃなくたって、“なんか良い感じ”ならOK

AI 导读

浏览器免费驾驶游戏《Everroad》开发者用自定义着色器把水面参数设为非现实值,画面观感大幅改善并获 Reddit 好评。该作目前为 Web demo 版,由 RetroDev Games 用自研引擎与 Three.js 开发。

正文

海外掲示板Redditにて、ドライブゲーム『Everroad』を手がけるEverroadGameより、ゲーム画面比較画像が投稿された。背景にある水面の表現が変わっただけで全体の雰囲気が格段に良くなったとして賞賛のコメントが寄せられている。同氏によればカスタムシェーダーにて、各種パラメータを非現実的な値に設定することで実現したという。

『Everroad』は、ブラウザ上で動作する無料のドライブゲームだ。本作にはゴールやスコアなどはなく、シード値によってプロシージャル生成される世界で、プレイヤーは終わりのない道を好きなように走っていく。海岸、森林、草原、高山、砂漠といった5つのバイオームがあり、滝つぼの湖や海岸沖に浮かぶ小島といった展望スポットも存在。走っているうちに天気が変わり、四季も移り変わる。ゲーム内ラジオを流しながら、自動運転に任せてゆったりを景色を楽しむこともでき、リラックスできるようなゲームとなっている。

本作を手がけるRetroDev Gamesは、ニュージーランドを拠点とするRein氏とRevathy氏の夫婦によるインディースタジオだ。Redditに投稿をおこなっているユーザーEverroadGameは、本作におけるRein氏の別名義となる。同氏は主にUnity開発者であったものの、本作は自社開発のカスタムエンジンとThree.jsを組み合わせて開発したという。本作をブラウザで動作させるためのさまざまな工夫が開発ブログにて公開中だ。なお、現在公開中のバージョンはWeb向けのデモ版とのこと。

そんな本作について、約7か月開発された水面シェーダーの成果として、1枚の比較画像が投稿された。上画像は過去の水面シェーダーによるもので、水面の色はほぼ一色かつ、海岸線を除いて波立ってないように見える。対して、新たな水面シェーダーによる下画像は、細かな光の反射によって水面が波立っているように見え、透過によって水中の地形も視認できる。画面奥のキラキラした光がボケているのは、ゲーム内フォトモードの被写界深度による効果のようだ。水面の表現のみが異なっている同じ画角の画像ながら、賞賛のコメントが数多く寄せられている。同氏自身も、手前の道路や草木すらも生き生きと見えるようになったと述べている。

同氏は当初Unityで培った技術として、歪みを与える波紋エフェクトや色調調整による平面的なアプローチにより、光をリアルに反射や吸収する水面を調整をしていたという。しかし、このアプローチでは望むような見た目にならなかったそうだ。そこで同氏はWebGLのシェーダー言語GLSLを用いて独自のカスタムシェーダーを作成。時間帯ごとの色、透過距離、きらめきの量、強度、空の反射などのパラメータを調整することで、先述の水面を実現したそうだ。興味深いことに、これらのパラメータは現実離れした値に調整されており、同氏自身も非現実的な設定によって見た目が改善されたことにいまだに疑問に感じているようだ。ただし、これでも満足できず、もっと見た目を良くできないかと考えているという。

物理的な正確性よりも見た目を優先

こうした現実の数値よりも見た目を優先するアプローチはほかにも存在。海賊オープンワールドアクション『Sea of Thieves』は、世界やキャラクターがカートゥーン調で描かれながらも、水の表現が美しいとして非常に高い評価を獲得している。

同作の開発元Rareによれば、水を表現するにあたってまず、他のスタジオやハリウッド映画の表現方法を調査し、可能な限りフォトリアルな水の挙動を再現したそうだ。そのうえで、アーティストが望むようにスタイライズすることで、同作の水を作り上げたという。見た目は鮮やかでカラフルな「水のように振る舞うもの」であっても、挙動そのものはリアルであるため、見た人からは本物そっくりという感想が寄せられたという。

また、Unityの公式フォーラムでも同様の議論が見られる。Unityのレンダーパイプライン「HDRP(High Definition Render Pipeline)」のWater Systemに関するスレッドでは、水の屈折率(IOR)が固定されているため、水中から水上を見上げると非常に見づらいという指摘があり、物理的に不正確な屈折率を許容すべきという意見が投稿された。

この意見について、Unityスタッフも同調。水中から水上を見ると、屈折率によって視界が非常に狭くなり、さらに散乱色によって目の前のものを直接見にくい状態であると認めている。『コール オブ デューティ モダン・ウォーフェアII』の水中映像を事例として挙げ、屈折を無効化するという物理的に不正確なオプションを追加する可能性が高いと回答している。

さらに、Unity公式ブログでは、ローグライトアクション『Ignitement』の開発者Sørb氏より、炎の表現手法が紹介されている。一般的に炎はパーティクルで表現され、その場合はオブジェクト同士のインタラクションが損なわれることが多い。同作ではパーティクルの代わりに動的かつリアルタイムな2D流体シミュレーションを用いることで、霧や壁と相互作用する生き生きとした炎が表現されている。なお、流体シミュレーションは、密度・速度・温度といった物理プロパティをもつ複数のテクスチャで実現されているという。

あわせてライティングについては、炎の形をダウンサンプリングした動的ライトマップに変換し、その部分のテクスチャを明るくするという工夫により炎の明るさを表現。炎や霧やライティングは技術的にはテクスチャが動いているだけにもかかわらず、ボリューム感のある疑似3D表現が生み出されている。同氏は「物理的に正確である必要はなく、見た目が良ければOK」と述べている。

そのほか、ゲーム内の水に浮かぶ船において、なぜ船の内部に水面が表示されないのかという疑問に対して、さまざまな実装方法が紹介された事例もある(関連記事)。描画しない領域を設定するステンシルバッファを用いる方法や、不可視のメッシュを配置する深度バッファを用いた手法が解説されている。物理的に正確にするのであれば、船と水面の流体シミュレーションが必要となるが、この事例も見た目を優先した結果といえるだろう。

こうした見た目を優先する表現手法は、ゲームシステムにも採用されることがある。たとえば『星のカービィ ディスカバリー』では、ゲーム画面で攻撃が当たったように見えるときは、実際に「当たっていなくても当たる」ようにする仕組みが語られている。この仕組みにより3Dアクションが苦手なプレイヤーでも攻撃を当てやすくなっている。

ゲーム開発においては、正確さよりも見た目を優先することは幅広くおこわれているといえるだろう。光や色を強調する、屈折を無効化する、描画しない領域を設定する、当たり判定を広げる。あえて物理的に不正確な誇張された現象として描くことで、プレイヤーがかえって「本物らしさ」を感じるケースもあるというわけだ。冒頭の『Everroad』において、非現実的な値によって見た目が大きく改善されたのも同様の理由だろう。昨今は開発エンジンの進化によって、物理的に正確な表現を再現しやすくなっているが、非現実な値をあえて採用することで、より良い見た目を得ることができるかもしれない。

この記事にはアフィリエイトリンクが含まれる場合があります。

Haruki Maeda

Haruki Maeda

3DアクションRPGと犬をこよなく愛するPCゲーマー。『フォールガイズ』のようなわちゃわちゃ系も大好きです。

記事本文: 431

来源:AUTOMATON · automaton-media.com