ディスカッション (11件)
「Voxel Space」は、かつて『Comanche』などの名作ゲームで採用されていた、画期的な地形レンダリング技術です。この手法は、従来のポリゴンベースの3Dとは異なるアプローチで、当時のハードウェア制約の中で広大な地形をリアルに描画することを可能にしました。2017年当時に改めて注目を集めた、このレトロで革新的なグラフィックス技術のメカニズムを解説します。
カラーマップに影が「組み込まれている」みたいで、カラーマップを見るだけで3Dのベベル効果が得られるのは面白いね。
これが最初に投稿されたとき、このアプローチをAGS Engineに移植してゲームを作ったよ。今は色々と改善されてAGSもかなり速くなったけど、当時はそうじゃなかったから、レンダリングをうまく動作させるためにいくつか小さな工夫が必要だったんだ。
https://github.com/ericoporto/i_rented_a_boat (https://github.com/ericoporto/i_rented_a_boat)
厳密に言うと、これはボクセル(いわゆる「ボリュームピクセル」)とは別物だね。ボクセルは3軸すべてに沿って3D空間を均等に分割するものだけど、これは単なるハイトマップで、Doomのマップとそれほど変わらないプリズムの集合体だよ。どのプリズムも底面は固定サイズの正方形だしね。
まあ、1992年当時としては驚異的だったけど。
真っ先に思い浮かんだのは、1984年にLucasFilm Gamesからリリースされた『Rescue on Fractalus! (Behind Jaggi Lines)』のプロシージャル生成だな。Atari 6502で動いてて、当時めちゃくちゃ衝撃を受けたよ。
これって『Magic Carpet』(1994年)で使われてたアルゴリズムと同じなのかな?スタイルがすごく似てるし、どうやって実現してたのかずっと気になってたんだよね。
https://en.wikipedia.org/wiki/Magic_Carpet_(video_game) (https://en.wikipedia.org/wiki/Magic_Carpet_(video_game))
話はそれるけど、このゲームの最初のミッションは「オイルタンク・ホリデー」って呼ばれていて、ヘリを飛ばして無人のオイルタンクを撃って燃やして帰還するだけなんだ。敵もいない。ただ操縦と射撃を練習するためのものさ。
これをコードのテストに応用してるよ。コードを書いた後、まずはそれがクラッシュせずに機能することを確認するための、極限まで最小限のテストを考えてみるんだ。これが僕の言う「オイルタンク・ホリデー」テスト。まあ、それが失敗するのを見るのはいつも謙虚な気持ちにさせられるけどね。
このゲームのC++バージョンで、当時のComancheのマップとレンダリングアルゴリズムをそのまま使っているもの:
https://codeberg.org/Lew_Palm/voxelcopter (https://codeberg.org/Lew_Palm/voxelcopter)
懐かしいな。Comancheが出たときは本当にすごかったよ。(記憶が正しければ)うちの386SX-16でも動いたし。
当時Visual Basicでそのエフェクトを再現しようとしたけど、大した成果は出せなかったな。
自分のデモでこのアプローチを使ったことがあるよ: https://www.youtube.com/watch?v=xjbDxvboOjo (https://www.youtube.com/watch?v=xjbDxvboOjo) 。ちなみにオチを言うと、このハイトマップは動的に生成してるんだ。