TTF-DOOM: TrueTypeフォントヒンティングで動作するレイキャスター
TrueTypeフォントバイトコードのみで3Dレイキャスティングエンジンを実装。カスタムDSLとコンパイラを使用し、1991年製AppleヒンティングVMの難解な制約を回避しています。
運用中TTF-DOOM
TTF-DOOMは、技術的なマゾヒズムの極致とも言える作品です。多くの「フォント内コード」プロジェクトが現代的なシェイパーの脆弱性やWASMブリッジに依存する中、このプロジェクトはオリジナルのTrueTypeヒンティング仮想マシンをターゲットにしています。これはグリフのグリッドフィッティング用に設計されたスタックベースのVMであり、擬似3D環境のレンダリング用ではありません。その結果、低解像度モニターでセリフを鮮明に見せるための命令を用いて、透視投影と壁の高さを計算する6.5 KBの.ttfファイルが誕生しました。
ここでのエンジニアリングの主眼はツールチェーンにあります。作者は、F26Dot6固定小数点演算の悪夢と標準的なループ構造の欠如に対処するため、カスタムDSLとコンパイラを構築しました。TrueTypeバイトコードには「WHILE」命令がないため、エンジンは再帰的な関数呼び出し(FDEF)を通じてループを実装しており、FreeTypeのコールスタック制限の限界に挑んでいます。技術的な独創性は、Scale-Coordinate-Font-Size (SCFS) 命令を使用して、レイキャストの結果に基づき垂直バーの輪郭を物理的に3D位置へ移動させる点に集約されています。
プロダクトの観点からは、ゲームというよりも概念実証(PoC)です。JSレイヤーがゲームロジック、入力、HUDレンダリングという重い処理を担い、フォントを実質的に非常に特殊なGPUとして扱っています。主な弱点はパフォーマンスと安定性です。ブラウザのグリフキャッシュとfont-variation-settingsに依存しているため、ジッターやレンダリングの不整合が発生し、それを解決するために「フレームごとのジッター」ハックが必要となります。
エソテリックVMやコンパイラ設計に興味がある開発者、あるいはレガシーな仕様が限界まで追い込まれる様子を楽しみたい方にとって、必読の内容と言えます。静的なタイポグラフィ形式を動的なレンダリングエンジンへと変貌させたこの作品は、チューリング完全なシステムであれば、どんなものでもゲームエンジンになり得ることを改めて証明しました。