Obra Dinnの1ビットディザリング処理の安定化 (2017)
(forums.tigsource.com)-
TIGSourceフォーラム
- TIGSourceは公式Discordサーバーを開設した。
- フォーラムにはさまざまな話題と議論があり、多くのメンバーが参加している。
-
Return of the Obra Dinn
- ゲームのグラフィックスタイルとディザリング問題についての議論が進んでいる。
- 高解像度でレンダリングした後にダウンスケーリングして、ちらつきの問題を解決しようとする試みがある。
- ディザリングパターンを固定して、動きに安定性を与える方法が議論されている。
-
ディザリング処理
- Obra Dinnは8ビットグレースケールでレンダリングした後、1ビットに変換する過程を経る。
- 2種類のディザリングパターンを使って、さまざまな視覚効果を提供する。
- 動く画像ではディザリングパターンが問題を引き起こす可能性がある。
-
ディザリングの安定化
- ディザリングパターンをジオメトリに固定して安定性を高める方法が研究されている。
- 複数のマッピング方法を試して最適な結果を探ろうとする努力がある。
-
結論
- ディザリング問題の解決には多くの時間がかかったが、結果的にゲームの視覚スタイルを維持しながら問題を解決した。
- 最終版のゲームでは2種類の表示モードを提供する予定だ。
1件のコメント
Hacker News のコメント
グラフィックスプログラミングを10年以上やってきたのに、ゲームをプレイしているときはそれに気づかなかった。ゲーム全体の視覚言語を考えると、100時間を本当にうまく使ったと言えると思う
このレベルなら、非写実的レンダリングにおける時間的一貫性というテーマで SIGGRAPH に出してもよかったくらいだと思う
知らない人のために補足すると、Return of the Obra Dinn と Papers, Please はどちらも Lucas Pope のゲームで、数々の賞を受けた文句なしのクラシックと評価されている
普段ゲームをあまりしない人でも、チェックしてみる価値は大きい。どちらも典型的なゲームではない
そこまでさせたゲームは多くない。Obra Dinn はアートスタイルに惹かれず未プレイだが、推理ゲームが好きなら Curse of the Golden Idol もチェックする価値がある。創造性の面ではこれらのゲームに近く、かなり面白い
それでも最後までクリアした
強い1ビットディザリングは本当に興味深いテーマ。2D でもいくつもの方法があり、それぞれに長所短所とトレードオフがある
80年代のコンピューティング体験の核心だったことが、現代のハードウェアではむしろかなり厄介だという点が驚き。自分のプロジェクト[0]では、オフスクリーンのピクセルとブラウザが提供するキャンバスを1:1でマッピングするのがほぼ不可能だと分かった
[0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...
昔作った簡単なゲームでは、画面の3/4は低解像度のカラー表示を使い、下側はより多くのテキストを入れるために4色で横解像度を2倍にしていた。だから解像度を毎秒120回切り替えても、CPU は大きく遅くならなかった
提案されているアプローチのどれもうまく効かないように見えるし、この問題は見た目よりずっと複雑に思える
うまく動く可能性があるのは、「フラクタル」なディザパターンで拡大・縮小を滑らかかつスケール不変にすること、カメラ移動とオブジェクト移動の両方が正しくなるようにテクセル空間で処理すること、双線形フィルタリングやディザパターンのスーパーサンプリングレンダリングの後に、画面空間で計算シェーダーにより一種の誤差拡散パスをかける方式だろう
ただ、実際にうまくいくかは確信がない。十分でなければ、画面空間で単純に処理したあと、その結果を解像度を保つ形でテクセル空間へ逆マッピングし、次のフレームでテクセル空間の情報を使って互換性のある画面空間の解を作ってから、再びテクセル空間へマッピングする、という形で、ランタイムにテクセルごとのフラクタルパターンを段階的に積み上げる代替案も可能に見える。これが最善かもしれないが、メモリ、計算量、複雑さの面で非常に高コストに見える
https://x.com/dgant/status/1851840125065453894
https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_...
動作の仕組みは、ワールド空間ディザリングを使い、三平面マッピングされた表面に 2D ディザリングを適用し、深度に応じて座標スケールを選んでディザパターンが [1px, 2px) の範囲に収まるようにし、十分遠い表面は球面座標で塗る、というもの。深度しきい値で一部は塗り直されるが、実際にはそれほど気にならない
興味のある人のためにもう少し掘ってみたところ、彼がこのテーマで以前投稿していた開発ログを見つけた [1] [2]
特に Scale2X というアップスケーリングアルゴリズムを扱った部分が目に留まり、かなり格好いい [3]
[1] https://forums.tigsource.com/index.php?topic=40832.260
[2] https://forums.tigsource.com/index.php?topic=40832.msg121719...
[3] https://www.scale2x.it
この人がフォーラムで何もかも共有しているところが本当にいい
Papers, Please の初期作業を見ていた記憶があるが、制作過程を共有し、フィードバックにさらすことには何か素晴らしいものがある
当時の議論: https://news.ycombinator.com/item?id=15766249
これまで見たディザリング記事の中でも最高レベル。自分は Return to Dark Castle の白黒ディザリング作業をした
Atkinson ディザリングを使いたかったが、隣接ピクセルの値が互いに流れ込む方式のためシェーダーで実装するのが難しく、当時はストレスと疲労もひどかった。パターンをシーンのオフセットに固定するという発想はなかった気がするので、地下墓地やヘリコプターパックのようにスクロールするレベルではちらつきがあると思う。もしかするとやっていたかもしれないが、覚えていない。いずれにせよ素晴らしい
最近 GOG で入手して 5K Studio Display でプレイしようとしたが、美しいピクセルがぼやけない結果を得ることができなかった。本当に残念
設定メニューは全部見て回った
おまけとして、このゲームのサウンドトラックはここにある
https://www.youtube.com/watch?v=8qvdAWLcPyU