前回の開発紹介記事では、一人称視点の読書・推理ローグライト『Uncatalogued(未目録)』をご紹介し、本作が 2001 年発売のゲームボーイアドバンス(GBA)のハードウェア制約の中で設計されていることをお話ししました。Steam で PC 版をダウンロードすると、インストールフォルダには実機(フラッシュカートリッジ等)やエミュレータでそのまま遊べる .gba ROM ファイルも同梱されています。
今回は、よく聞かれる 2 つの技術的な選択——「なぜ Rust で開発したのか?」、そして**「なぜフル 3D(ポリゴン)ではなくレイキャスト 3D を選んだのか?」**について簡単にお話しします。

1. なぜ Rust なのか? DOS ゲーム移植から始まった縁
GBA のゲーム開発といえば C 言語やアセンブリが一般的ですが、私たちのチームにとって Rust を選ぶことはとても自然な流れでした。
数年前、私たちは往年の DOS ゲームを Rust で移植するプロジェクトを手がけました。その経験を通じて、低レイヤーのパフォーマンスをしっかり引き出しつつ、モダンな型システムや使いやすいツールチェーンで安全かつ快適に書ける Rust がすっかり好きになりました。
その後、現在の Rust で GBA のゲームも開発できることを知り、「大好きな Rust で GBA の新作を作れる上、GBA 版と Steam PC 版で同じコアプログラムを共有できる!」と確信して開発をスタートしました。
2. なぜフル 3D ではなく「レイキャスト 3D」なのか?
GBA は 2001 年の携帯ゲーム機であり、16.78 MHz のプロセッサを積んでいますが、3D ポリゴンを描画する GPU も浮動小数点演算器(FPU)もありません。
企画初期に「ポリゴンによるフル 3D」と「レイキャスト 3D(『Wolfenstein 3D』や 90 年代の古典的な一人称ダンジョン RPG の手法)」のどちらで行くかを検討し、以下の 3 つの理由からレイキャストを採用しました。
- フル 3D では 30 FPS の維持が難しい:3D ハードウェアを持たない GBA でテクスチャ付きポリゴンをソフトウェア計算すると、描画だけで処理能力の大部分を使い切ってしまいます。複数の「守書者」や炎のエフェクトが同時に画面に出た際、安定した 30 FPS を保つのは極めて困難だと判断しました。
- 最適化にかける時間をゲームの中身に注ぎたかった:フル 3D を GBA に無理やり収めようとすれば、低レイヤーの最適化だけで膨大な時間を費やすことになります。レイキャストを採用したことで安定した 30 FPS を確保でき、「本を読んで法則を推理し、フロアをまたいで謎を解く」というゲーム本来の面白さに開発時間を集中できました。
- レトロな地下迷宮の雰囲気にぴったりだった:高くそびえる本棚の回廊、スライドして開く隠し扉、ランプの光の輪のすぐ外に広がる深い闇——レイキャスト特有の直線的でクラシックな空間表現は、レトロな地下図書館の閉塞感やダンジョン探索の雰囲気にこれ以上ないほどマッチしました。

3. GBA で 30 FPS を維持するためのちょっとした工夫
レイキャストエンジンを GBA 上で軽快に動かすため、ハードウェアの特性に合わせた工夫も取り入れています。
- VRAM の 16-bit 仕様に合わせた 120 本のレイ: GBA の 256 色ビットマップモード(Mode 4)には、ビデオメモリ(VRAM)へ一度に最低 16-bit(横に並んだ 2 ピクセル分)ずつしか書き込めないという特性があります。そこで横 240 ピクセルの画面に対して **120 本のレイ(光線)**を飛ばし、1 本のレイにつき 2 ピクセル幅の壁をまとめて VRAM に直接書き込むことで、中間バッファを省きつつ計算量を半分に抑えました。
- 固定小数点数と照度ルックアップテーブル: GBA には浮動小数点ハードウェアがないため、移動や角度、レイの計算はすべて整数の「固定小数点数」と事前計算テーブルで行っています。また、ランプの距離に応じた明暗のグラデーションも、高速メモリ上に置いた 4 KB の色テーブル(16 段階の明るさ × 256 色)を引くだけで瞬時に決定しています。

開発の中で直面したその他の課題——たとえば GBA の限られたメモリに繁体字中国語・日本語・英語の 3 言語フォントと大量の書籍テキストをどうやって収めたのか、あるいは 4 チャンネルのレトロ音源でどうやって BGM を鳴らしているのかといったお話は、また次回の記事でご紹介します!
Steam ウィッシュリスト登録のお願い!
現在、『Uncatalogued(未目録)』の Steam ストアページが公開されています(Windows / macOS / Linux / Steam Deck 対応、.gba ROM ファイル同梱)。
インディー開発チームにとって、初期のウィッシュリスト登録数はとても大きな支えになります。レトロなダンジョン探索や GBA のゲーム、知識を武器に進む謎解きゲームがお好きな方は、ぜひ Steam でウィッシュリストに追加して応援していただけると嬉しいです!
👉 Steam で『Uncatalogued(未目録)』をウィッシュリストに追加する
SimplexCode 開発チーム