世界を動かす技術を、日本語で。

2026年に「Nintendo 64」ゲームを作る方法

2026年8月4日原文(phoboslab.org)

概要

  • JavaScript製ゲームエンジン をC言語に移植し、N64用FPS「Xibalba 64」を開発
  • Modretro が物理カートリッジとして発売、N64新作としては極めて稀な事例
  • LibdragonTiny3D などN64向けOSSライブラリを活用
  • 開発・デバッグ環境や レンダリング最適化 の詳細な工夫
  • ゲーム設計・エンジン拡張・データ構造・パフォーマンス改善の実践例

Xibalba 64:N64向け新作FPS開発記

  • 2年前、 JavaScript製ゲームエンジン(Impact) をC言語へ移植
  • 移植理由は不明だったが、後に N64向け新作ゲーム開発 という目的が誕生
  • 完成したのは Wolfenstein 3D風FPS「Xibalba 64」
  • Modretro製N64クローン機「M64」 のローンチタイトルとして物理カートリッジ化
  • N64向け新作物理リリースは、 Xeno Crisis 以来2例目
    • 2002年のTony Hawk's Pro Skater 3以来、新作はほぼ皆無

ゲームエンジン「Impact」およびC移植「high_impact」

  • Impactは2010年開発の 2Dアクション向けJavaScriptエンジン
    • タイルシート、背景マップ、スプライト、当たり判定対応
  • 2年前にC言語へ移植し、 high_impact として再構築
  • プラットフォームバックエンド 概念を導入
    • SDL2、Sokol対応で多様なデバイスで動作
  • レンダリングバックエンド もモジュール化
    • ソフトウェアレンダラ、OpenGL、Metal(iOS/macOS)対応
  • 新しいプラットフォームやレンダラ追加も容易
    • N64移植の土台 として最適

N64ハードウェアとLibdragon

  • N64は 93MHz MIPS CPU(ビッグエンディアン) 搭載
    • Reality Coprocessor(RCP) にRDP(グラフィックス)、RSP(ベクトル演算)内蔵
  • 任天堂公式ライブラリ「libultra」は長年非公開
    • 著作権リスク回避のため利用困難
  • Libdragon :N64向けSDL的OSSライブラリ
    • スプライト描画、サウンド、入力などを提供
    • high_impact用N64バックエンドを数日で実装可能
  • 開発環境 :LibdragonがROMビルド用コンパイラ等を包括提供
    • ドキュメントやサンプルも充実
    • 「preview branch」利用推奨

実機・エミュレータテスト

  • N64エミュレータ は長年精度が低かったが、Ares等で大幅改善
    • RSP/RDPの正確なタイミング再現
  • 実機テストには SummerCart64 (SDカード&USB-C対応カートリッジ)が最適
    • sc64deployerでROM直接転送可能
    • Linux+mpvで低遅延キャプチャ環境構築例
  • 実機隣接設置+USB接続で高速開発ループ実現

ゲーム設計・エンジン拡張

  • 元々は2014年WebGLデモとして Xibalba を制作
    • ブラウザ3Dゲームとして話題
    • 短編・少数レベル構成
  • Xibalba 64 では本格的なゲーム化を目指し、C&high_impactへ移植・拡張
    • レベル・敵・武器増強
  • high_impactは2Dエンジンだが、 Wolfenstein 3D同様の擬似3D表現 を採用
    • ゲーム内部は2Dベース、描画時のみ3D座標活用
    • vec2_t/vec3_t構造体 で柔軟な座標管理

レベルデータ・エディタ・ホットリロード

  • レベルエディタは HTML単体ファイル で提供
    • ライトマップ、スプライト表示、エンティティ設定拡張
    • Cソースからエンティティ情報を自動抽出
  • エディタはJSON出力、 ビルド時にバイナリへ変換
    • N64用はビッグエンディアン、x86用はリトルエンディアンで書き出し
    • 読み込み高速化(JSON直接ロードで100ms遅延回避)

レンダリング最適化

  • Libdragon のrdpq_triangle()で三角形描画可能
    • 実際はRSP側で変換・ライティング・Z計算し、RDPへ命令送信が理想
  • Tiny3D ライブラリでRSP/RDP連携・描画最適化
  • N64は テクスチャメモリ4KB・最大64x64px制限
    • テクスチャアップロードも高遅延
    • レベルタイルの描画順を工夫し、アップロード回数最小化
  • Tiny3Dは最大17クアッド同時描画可能
    • 同一テクスチャの三角形を 64ビット構造体(render_call_t) でバッチ化・ソート
  • 可視部分抽出は レイキャスティング を利用
    • 320本のレイで視界をカバーし、可視タイルをビットマップで管理
    • オーバードロー削減のため再帰分割も導入
    • 天井なしタイル検出時はスカイボックス描画

N64向け新作ゲーム開発のまとめ

  • OSSライブラリ活用+独自エンジン拡張 で最新N64ゲームを開発
  • 実機・エミュレータ・ホットリロード等、 効率的な開発環境構築
  • レガシーハードの制約下でのパフォーマンス最適化手法
  • 物理カートリッジリリース という現代的レトロゲーム開発事例

Hackerたちの意見

プレイステーションのホームブリュー(ボクセル空間レンダラー)をいじってるんだけど、第五世代コンソールの開発がこんなに簡単になったのは驚きだよ。現代のツールチェーンやプログラミング言語、開発カートリッジ、コミュニティからのライブラリがすごく役立ってる。ICEみたいな便利なものもあるけど(ターゲットハードウェア用のGDBスタブを書く必要があるけど)、現代の組み込み作業とそんなに変わらない感じ。

昔はどうやってやってたんだろう?ツールとか全部自社でゼロから作ってたのかな?

N64/PS1時代には何かすごく魅力的なものがあるよね。それぞれ独自の個性があって、どのシステムが画面に表示されてるか、一目でわかるくらいだった。3Dコンソールゲームの夜明けに、全く違う2つのシステムがあったんだ。自分と息子のためにMiSTerを買って、マリオカート64やマリオゴルフをめちゃくちゃ遊んだよ。彼は「今のゲームは終わった」っていう自分の考えを受け継いじゃったみたいで、新しいシステムやゲームには全然興味がないみたい。

自分のミニマリストPS1チュートリアルシリーズがこんなに人気になるなんて、未だに驚いてるよ。以前は、ネット上の学習資料はほとんどが当時はまあまあだったけど今はひどいSonyのSDKを基にしてて、30年前の例のコードに基づいてたからね(特にエイリアシングや並行性を完全に無視してたから、古いライブラリや例のコードを現代のGCCで使い始めたら、たくさんの頭痛の種になった)。今では、STLやコルーチンのサポートがある最先端のC++ SDKオプションもあるから、PS1のホームブリュー開発に挑戦したい人は、今のモダンなツールをチェックしてみることを強く勧めるよ。

超面白い記事だね!旅の話をシェアしてくれてありがとう。AIのゴミがインターネットを支配する中、こういうちゃんとしたオリジナルの技術コンテンツは重要になると思う。あと、2026年のウェブ開発ではボタンを表示するのに4MBのJavaScriptが必要になるってさ。2026年のN64開発では、1MBでFPS全体が作れるんだよね。

ROM自体を買うことができるか試してみたけど、今のところ物理コピーを買わないとダメみたいだね。https://modretro.com/products/xibalba-64

M64との互換性があるってことは、N64とも互換性があるってこと?

ゴールデンアイの開発者3人へのインタビューのリンクは必須だね。すごく興味深かったよ。https://youtube.com/watch?v=bNN9XhGZ3Yw (それに、コンピュータ歴史センターのYouTubeチャンネルは本当に過小評価されてるよ)

彼がModRetroをパブリッシャーに選んだのが残念だな。彼らは主にアンドゥリルからの資金で運営されてるんだけど、アンドゥリルは自律型軍事攻撃ドローンを作ってるパルマー・ラッキーの別の会社なんだ。ModRetroのスタッフのほとんどはアンドゥリルで働いてたし、ModRetroの他の製品にはドローンの部品で作られたゲームボーイクローンもあるんだ。https://retrododo.com/modretro-reveals-limited-edition-handh… 面白そうなゲームだけど、買うおもちゃが戦争犯罪者に補助金をもらってるのは避けたいな。

いや、このお金はOculusを売ったおかげだよ。それが彼を億万長者にしたんだ…

何が彼/彼らを戦争犯罪者にしてるの?

戦闘でAndurilを使っているのは、ウクライナがロシアから防衛しているだけだよ。

Hacker Newsで議論の続きを見る