
2026/07/27 19:04
Libsm64:外部ゲームエンジンで利用するためのマリオ64ライブラリ
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
プロジェクトは、既存のデコンパイルプロジェクトの上に構築された「スーパーマリオ64」の内蔵中の移動ロジックとレンダリングロジックを公開する文書化された共有ライブラリインターフェース(
libsm64.h)を提供します。本ライブラリはRust、Odin、Unity(MelonLoader/BepInEx経由)、Blender、Godot、Game Maker 8、C#など多様な開発エコシステムをサポートしています。ライブラリは実行時に公式ROMをロードし、テクスチャデータやアニメーションデータを動的に抽出します。特に、テストプログラムを実行するにはUS版(baserom.us.z64)の提供が必要です。開発にはMac/Linuxへの完全なビルドサポート(python3、SDL2、GLEWが必要)と、Windows向けのサポート(MSYS2 MinGW経由でmakeターゲットを使用してlib、test、runに対応)が含まれています。EmscriptenによるWebAssemblyサポート(emmake make CC=emcc)は進行中です。これによりブラウザ環境での利用が可能になります。test/ディレクトリには最小限の使用例が用意されています。本文
SM64 ゲームエンジン統合ライブラリ (libsm64)
プロジェクトの目的と概要
本プロジェクトは、SM64 の逆解析データを基に、マリオカート 64 の移動およびレンダリングコードを他ゲームエンジンやシステムへ組み込めるよう設計されています。以下の特徴があります。
- クリーンなインターフェース: 最小限の手間で既存の環境へ統合可能。
- 共有ライブラリ: 主要な実装はデコンパイル化プロジェクトからのコードを含む。
- データ読み込み: 実行時に公式の『スーパーマリオ 64』ROM を読み込み、以下のデータを取得します。
- マリオのテクスチャ
- アニメーションデータ
- 外部依存事項: 利用側は必ずユーザーからアセット抽出用の ROMを提供する必要があります。
API とサンプルコード
- 公開インターフェース:
で確認可能。libsm64.h - 導入方法: ヘッダーを含め、ライブラリを読み込むだけで動作します。
- サンプルコード:
ディレクトリに最小限の実装例が用意されています。test
サポートプラットフォームとバインディング
以下の言語やツールへのバインディング・プラグインが提供されています。
バインディング・プラグイン一覧
- Rust バインディング
- Odin バインディング
- C# バインディング
- Unity プラグイン
- Unity MelonLoader モジュール
- Unity BepInEx プラグイン
- Blender アドオン
- Godot アドオン
- Game Maker 8 エクステンション
Mac および Linux 向けビルド手順
-
環境準備
のインストールを確認します。Python3- テストプログラムをビルドする場合、SDL2 および GLEW ライブラリが必要です(Ubuntu の例):
sudo apt install libsdl2-dev libglew-dev
-
ライブラリのビルド 基本コマンド:
makemusl libc(glibc ではなく)でリンクしたい場合は:
LIBSM64_MUSL=1 make -
テストプログラムの実行環境 リポジトリルートディレクトリに、米国版 ROM の存在が必要です:
- ファイル名:
baserom.us.z64 - 内容: 『スーパーマリオ 64』米国版
- ファイル名:
Windows 向けビルド手順
-
MSYS2 MinGW 64 セットアップ MSYS2 MinGW 64 のセットアップ手順 1〜4 を実施し、リポジトリ URL を以下の通り変更してください:
https://github.com/libsm64/libsm64.git -
ライブラリのインストール (SDL2 と GLEW) テストプログラム用として以下のパッケージをインストールします。
64 ビット環境の場合:
pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-glew32 ビット環境の場合:
pacman -S mingw-w64-i686-SDL2 mingw-w64-i686-glew -
ビルド
make -
ROM の配置 実行にはルートディレクトリに以下の ROM ファイルが必要です:
(『スーパーマリオ 64』米国版)baserom.us.z64
Emscripten(Web)向けビルド(開発中)
Web アセンブリーや JavaScript から直接ライブラリを利用するための手順です。
単一実行ファイルの出力
JS に独立したライブラリを呼び出したい場合:
- ビルド実行:
emmake make CC=emcc - JS 統合用パッケージ化:
これにより、emcc dist/libsm64.so -o libsm64.js
およびlibsm64.wasm
が出力されます。libsm64.js
ライブラリリンク用
独自の C プロジェクトにリンク可能なコンパイル済み WebAssembly オブジェクトを取得するには:
- 出力先:
dist/libsm64.so
注: JS から独立した呼び出しは有用性が限定的です。
Make ターゲット一覧(全プラットフォーム共通)
| コマンド | 機能 |
|---|---|
| (デフォルト) ディレクトリに共有オブジェクト/DLL および公開ヘッダーを構築します。 |
| ライブラリ () とテストプログラムを構築します。 |
| SDL+OpenGL テストプログラムを構築し、直ちに実行します。 |