2026年7月22日(水)掲載 2,870本日 27
HN750127

1993年風のレトロなグラフィックスを現代に再現する方法

Making Graphics Like it's 1993

sklopec約1か月前

議論

11
0sklopecスレ主750約1か月前

あえて当時の制限を再現することで生まれる、独特な美学と技術的なこだわりについて解説します。1993年の雰囲気を醸し出すグラフィックス制作のノウハウを深掘りしてみましょう。

1rob74約1か月前

Doomからかなりの影響を受けてるね。ただ、実際のレイトレーシングエンジンに関しては、Doomの先駆けとなったゲームたち――一番有名なところで言うとWolfenstein 3Dみたいな感じかな。垂直な壁、床と天井の高さが一定っていう構成だね。Wolf3Dはパフォーマンスの都合で床や天井にテクスチャがなかったけど、似たようなゲームのいくつかは対応してた。Doom(たしかDuke Nukemもそうだったはず)はBSPエンジンを使ってて、こっちはもっと柔軟だったんだ。壁を好きな角度で交差させたり、床や天井の高さを変えられたりね。とはいえ、レベルそのものはまだ「フラット」だったから、一つのレベルの中に複数の階層を作ったり、橋の下をくぐったり上を歩いたりするような設計はできなかったけど。

2mysterydip約1か月前

同じく、無謀で理不尽な制約を課した3Dエンジンを開発する者として、解説の細かさと、そこに至るまでのプロセスが見られて最高だよ。

3rob74約1か月前

今気づいたんだけど、これって女性主人公のシューターとしては珍しい例かもしれないね。猫が三毛猫のパターンなんだけど、三毛猫ってほぼ間違いなくメスだからさ(https://en.wikipedia.org/wiki/Calico_cat )。

4mkl約1か月前

90年代前半から中頃のグラフィックスプログラミングは本当に楽しかったよね。メモリマップドされたビデオRAMにピクセルデータを書き込めば、そのまま画面に表示されるんだから! 0xA0000へのポインタさえあれば十分で、APIとかは不要だった。言及されてる320×200のVGAモードが非正方形ピクセルだった理由は、ビデオバッファが64000バイトで、それが16ビットセグメントに収まったからだよ。おかげで当時の16ビットコードやCPUでも簡単にアドレッシングできたんだ。

5boricj約1か月前

自分もPlayStationの自作ソフトとして、ボクセル空間レンダリングの技術デモをいじってるところだよ。週末1回分でそこそこの結果(10-15 FPSくらい)が出始めてるんだけど、DMAやGTE、ポリラインのプリミティブすらまだ使ってないんだ。

三角関数を思い出したり、昔ながらのローレベルな最適化テクニックを使うのはすごく新鮮だね。スクラッチバッファが1 KiBしかなくて、スタックもその一部しか使えない環境にいると、仕事で使ってるマイクロコントローラーの環境がいかに恵まれてるか思い知らされるよ。スレッドに8 KiBのスタックが割り当てられて、C++テンプレートが50個以上スタックされたバックトレースとか見てるとね。

6corysama約1か月前

ソフトウェアレンダリングで遊びたいなら、SDL2とC言語を使ってメインメモリから画面へARGB8888の2D配列を効率的に転送する、たぶん最短のコードがこれだよ https://gist.github.com/CoryBloyd/6725bb78323bb1157ff8d4175d42d789 。320x200の8ビットパレット化フレームバッファをARGBに変換する処理は自分でやる必要があるけどね ;)

パレット化されたフレームバッファで何ができるかインスピレーションを得たいなら、http://www.effectgames.com/demos/canvascycle/ をチェックしてみて(Show Optionsをクリック)。あと、アーティスト本人によるGDCのプレゼン動画も必見だよ https://youtu.be/aMcJ1Jvtef0

それがあれば https://github.com/mriale/PyDPainter を起動してDeluxe Paint IIeのようなクラシックな雰囲気を楽しめるし、もっとモダンな感じがいいなら https://www.aseprite.org/ がおすすめ。

7robterrell約1か月前

これは素晴らしいね。90年代によく使ったもう一つの楽しいトリックがパレットアニメーションだよ。パレットを入れ替えるだけで、実行時の負荷を抑えつつ、めちゃくちゃクールなエフェクトが作れたんだ。

8ferguess_k約1か月前

個人的に一番面白いと思ったのは内部ツールだね。ギブ(断片)のアニメーションを生成するPythonスクリプトや、Blenderから2Dスプライトシートを生成するスクリプトとかさ。OPは技術力だけでなく芸術的なセンスも持ってる、間違いなく10xエンジニアだね。こんなの滅多にいないよ。OPが一貫したアートディレクションを維持できていることにすごく驚かされた。

9Teslazar約1か月前

素晴らしい記事だね。特にギブ(断片)の作成手法は興味深かった。
技術デモとはいえ、自分も90年代半ばに似たようなものを作ったよ。この記事では言及されていないこととして、自分はテクスチャに8x8(または16x16)のライトマップを使ってた。これを使うと、松明の明かりのチラつきや、ロケットが飛んでいくときに廊下を照らすような演出が簡単にできたんだ。ライトマップは必要に応じて照明を「ベイク」するのにも使えるしね。
ライトマップは「たった」8x8だから、各ルクセル(ライトマップ上の単位)に対して距離や光源への視線を計算するような計算をしても余裕がある。テクスチャをレンダリングする際、ルクセルを使ってルックアップテーブルを参照し、描画するピクセルの本来の色を決定してた。パフォーマンスのために、ライトマップは1秒間に15回更新してたと思う。DJGPPのおかげで、レンダリングにはインラインアセンブラを使えたし、当時は浮動小数点演算が遅かったから固定小数点演算を使って最適化してたな。当時のPCでも驚くほど高速に動作してたよ。

10hankbond約1か月前

レンダリングしたものを量子化スプライトにしたとき、想像以上に見栄えが良くて驚いた。あの素早い変換処理のおかげで、仕上がりが「キレ」のある感じになってるね。