godot-dn2cpp 4.7.1-dn2cpp.1
これは古いリリースです。 特別な理由がなければ 最新のリリース を使ってください。
概要
本リリースは、Godot 4.7.1 のエディタに dn2cpp .NET エクスポートバックエンドを組み込んだものです。C# ゲームの IL を C++ にトランスパイルし、エンジンが直接ロードするネイティブライブラリへビルドします。したがってエクスポートされたゲームは .NET ランタイムを同梱しません。エディタ自体にこれ以外の変更はなく、プロジェクトや C# ソースコード、その他のエクスポートバックエンドは本家(upstream)の動作をそのまま維持しています。
upstream の Godot は C# ゲームを Web にエクスポートできません。本エディタではエクスポートできます。
トランスパイラと C++ ランタイムは別プロジェクトとして公開されています: https://github.com/takuma-komatsu/dn2cpp
アセット
| ファイル | 内容 | SHA-256 |
|---|---|---|
Godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64.zip |
macOS エディタ(ad-hoc 署名) | 79826f1e0153aa31d0efd8b76d7ff3b65577dc0bc43673c92deeb1a281c081df |
Godot-dn2cpp-4.7.1-dn2cpp.1-windows-x86_64.zip |
Windows エディタ(x86_64、未署名) | ed4068e561849637d4deb698a69d5a31f6c8a5b5837f7476535b53c52b0f43d4 |
godot-dn2cpp-4.7.1-dn2cpp.1-web-template.zip |
Web エクスポートテンプレート(Web に必須。後述) | eb16b5d15be4521833761d41c7f435f0093386fdfd3fa7d16026e09a124f7fee |
godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64-template.zip |
macOS arm64 エクスポートテンプレート(macOS に必須。後述) | 073411e0db990a68e752ec36701afffff79bb986ae3f7a3d259dcc5e33115d6c |
SHA256SUMS.txt |
上記アセットのハッシュ(shasum 形式) |
— |
展開する前に、ダウンロードしたファイルを検証してください:
shasum -a 256 -c SHA256SUMS.txt
Windows には shasum がないため、PowerShell で次のコマンドを実行してください:
Get-FileHash Godot-dn2cpp-4.7.1-dn2cpp.1-windows-x86_64.zip -Algorithm SHA256
出力は大文字の 16 進表記です。SHA256SUMS.txt の該当行とは大文字小文字を無視して照合してください。
インストール(macOS エディタ)
unzip Godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64.zip
xattr -dr com.apple.quarantine Godot-dn2cpp.app
open Godot-dn2cpp.app
このアプリは ad-hoc 署名のみで、notarize されていません。macOS はブラウザでダウンロードしたものに quarantine 属性を付け、それを持つ非 notarize アプリの起動を拒否します。上記の
xattrコマンドはこのアプリを起動できるようにするための処置で、このアプリ 1 つの quarantine 属性のみを削除します。
spctl --master-disableは実行しないでください。マシン全体で Gatekeeper を無効化してしまい、未署名のエディタを 1 つ入れることに比べてはるかに大きな変更になります。
インストール(Windows エディタ)
展開する前に、ブラウザが zip ファイルに付与したブロックを解除してください。プロパティ → 全般 → セキュリティで「許可する」を選択します。ブロックは展開後のファイルにも引き継がれます。
Godot-dn2cpp-4.7.1-dn2cpp.1-windows-x86_64.zip を展開し、Godot-dn2cpp\Godot-dn2cpp.exe を実行してください。普段の編集はこれで行います。
エディタは署名されていないため、起動時に SmartScreen が発行元不明の警告を表示します。表示された場合は「詳細情報」→「実行」を選択すると起動できます。署名の代わりとなるのが
SHA256SUMS.txtであり、実行前のハッシュ照合はそのためのものです。
Windows ゲームをエクスポートする場合も、起動方法は同じです。 ビルドに使う MSVC の環境はエディタが自分で探して取り込むため、Developer Command Prompt for VS から起動する必要はありません。必要なのは Visual Studio の C++ ワークロードが入っていることだけです(動作要件を参照)。
隣にある Godot-dn2cpp.console.exe はコンソールウィンドウ付きで起動します。エクスポート中のログをその場で流し見たいときの選択肢で、できることは Godot-dn2cpp.exe と同じです。
cd <展開先>\Godot-dn2cpp
Godot-dn2cpp.console.exe
Godot-dn2cpp.exeは隣にあるもの(GodotSharp\、.console.exe、D3D12 の DLL)を必要とします。.exeだけを取り出すと動作しなくなります。 別の場所へ移動する場合はフォルダごと移動してください。
展開先の RELEASE.txt に、このビルドの識別情報(release、fork_commit、engine_provenance、toolchain_content_hash、editor_version_string)が記載されています。バグ報告にはこのファイルの内容をそのまま貼り付けてください。
動作要件
以下はすべてエクスポートを実行するマシンの要件です。エクスポートしたゲームの実行環境には、いずれも必要ありません。
対応ホスト
- macOS 13 以降 / Apple Silicon(arm64)。 universal ビルドも x86_64 ビルドもありません。
- Windows 10 / 11 の x86_64。 arm64 ビルドはありません。
エクスポート先ごとに必要なもの
表中の ● は必要、— は不要を表します。.NET SDK がどのエクスポート先でも必要なのは、エクスポートがまずプロジェクトの IL をビルドするためです。dn2cpp が .NET ランタイムを取り除くのはゲームからであって、エクスポートを実行するマシンからではありません。テンプレートの入手方法はエクスポートテンプレートを、NDK と JDK の指定方法はAndroid へのエクスポートを参照してください。
macOS(Apple Silicon)ホスト
| エクスポート先 | .NET SDK 10.0.10 | Xcode Command Line Tools | Xcode(full) | Python 3.10 以降 | Node.js 18 以降 | Android NDK・JDK | エクスポートテンプレート |
|---|---|---|---|---|---|---|---|
| macOS | ● | ● | — | — | — | — | 本リリース同梱 |
| iOS | ● | ● | ● | — | — | — | Godot 公式 |
| Web | ● | — | — | ●※ | ● | — | 本リリース同梱 |
| Android | ● | — | — | — | — | ● | Godot 公式 |
※ リンク時に起動する emcc は Python で動きます。同梱の Emscripten SDK が Python を併せ持つのは Windows 版だけで、macOS 版は持っていません。Xcode / Command Line Tools の /usr/bin/python3 はバージョンが古く emcc に拒否されるため、brew install python などで別途用意してください。
このホストから Windows および Linux へはエクスポートできません。
Windows(x86_64)ホスト
| エクスポート先 | .NET SDK 10.0.10 | Visual Studio の C++ ワークロード | Node.js 18 以降 | Android NDK・JDK | エクスポートテンプレート |
|---|---|---|---|---|---|
| Windows | ● | ●※ | — | — | Godot 公式 |
| Web | ● | — | ● | — | 本リリース同梱 |
| Android | ● | — | — | ● | Godot 公式 |
※ ビルドは MSVC で行いますが、必要なのはインストールされていることだけです。ビルド環境はエディタが自分で探して取り込むため、特別なシェルから起動する必要はありません。下の注記を参照してください。
このホストから macOS・iOS・Linux へはエクスポートできません。
エディタに同梱されているもの
いずれもエディタが同梱しているため、別途インストールする必要はありません。
- cmake と ninja — マシンに入っているものより同梱のものが優先されます。
- Emscripten SDK — Web エクスポートのコンパイラです。別途インストールしないでください。
- Python(Windows 版)— 同梱の Emscripten SDK が自前のものを持っています。
エクスポートしたゲームに不要なもの
- .NET ランタイム — ゲームに同梱されず、プレイするユーザーの環境にも必要ありません。
- VC++ 再頒布パッケージ — ランタイムは静的 CRT でリンクされます(Windows へのエクスポートを参照)。
事前チェックが
clang++を「見つからない」と報告した場合は、まずxcode-select --installを実行してください。導入済みで解決しない場合は起動方法が原因です。Finder から起動した macOS エディタは最小限のPATHしか引き継がず、/usr/binの外に置いたコンパイラを参照できません。ターミナルからエディタを起動してください。cmake と ninja はエディタが同梱しているため、この問題の対象外です。Web と Android へのエクスポートは、ホストの C++ コンパイラを使いません。 どちらも自前のコンパイラを持つツールチェーンでビルドするため、事前チェックも
clang++を探しません。Finder から起動したエディタでそのままエクスポートできます。
Visual Studio が必要なのは、Windows ゲームをエクスポートするときだけです。 Ninja を使うと cmake は
cl.exeを選びますが、cl.exeはマシンのPATHには無く、INCLUDE/LIB/LIBPATHもvcvarsallを実行済みのシェルの中にしか存在しません。そこでエディタは、起動時ではなくエクスポート時にvswhereで Visual Studio を探してvcvarsallを実行し、その環境をビルドの子プロセスにだけ渡します。Explorer から起動したGodot-dn2cpp.exeでそのままエクスポートできます。すでにビルド環境が入っているシェルから起動した場合は、そのまま何もせずそれを使います。Web と Android へのエクスポートは Visual Studio 自体を必要としません。 どちらも MSVC ではなく、Emscripten と Android NDK でビルドするからです。ビルドを駆動する cmake と ninja もエディタが同梱しているため、Android へのエクスポートに別途用意するものは .NET SDK と NDK・JDK だけです。
Web も同様に、.NET SDK とnodeだけで済みます。
dn2cpp バックエンドの使い方
プロジェクト → エクスポート → プリセットを選択 → dotnet/export_backend を dn2cpp に設定し、あとは通常どおりエクスポートするだけです。上の動作要件以外に必要なものはありません。トランスパイラ、ランタイムのソース、エクスポートしたゲームがリンクする vendored ライブラリは、すべてエディタに同梱されています。
エディタ設定 → dotnet/export/dn2cpp_toolchain_path で別のツールチェーンレイアウトを指定できます。同梱のものではなく自分でビルドした dn2cpp を使用したい場合は、ここで指定します。同様に dotnet/export/dn2cpp_cmake_path と dotnet/export/dn2cpp_ninja_path で、同梱の cmake / ninja を自前のものに差し替えられます。
エクスポートテンプレート
下に挙げていないターゲットは、標準の Godot 4.7.1 .NET エクスポートテンプレートをそのまま使います。通常どおりインストールしてください。このフォークが Web 以外でエンジンに加えている差分は WEB_ENABLED のガード 1 か所だけなので、同じバージョンの upstream テンプレートで問題ありません。
- Web — upstream は C# に対応した Web テンプレートを配布しておらず、また配布できないため、
godot-dn2cpp-4.7.1-dn2cpp.1-web-template.zipが必要です。 - macOS —
godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64-template.zipが必要です。これは upstream のテンプレートそのもので、universal バイナリから arm64 アーキテクチャのみを抽出したものです。エクスポータがアーキテクチャを名前で探すためです。詳細は下のmacOS へのエクスポートを参照してください。
Windows へのエクスポート
標準の Godot 4.7.1 エクスポートテンプレートをそのまま使い、追加の設定はありません。条件は 1 つ、Visual Studio の C++ ワークロードが入っていることだけです(動作要件を参照)。エディタの起動方法は問いません。
エクスポートしたゲームは VC++ 再頒布パッケージを必要としません。ランタイムは静的 CRT でリンクされます。
Windows ホストからエクスポートできるのは Windows / Android / Web だけです。macOS へのエクスポートはエラーになります。iOS は Apple SDK の検証に失敗し、「Xcode をインストールしてください」という、Windows 上では意味を成さないメッセージが表示されます。Linux はまだ対応していません。
macOS へのエクスポート
バックエンドはエクスポートを実行しているマシン向けにゲームをコンパイルし、クロスコンパイルはできません。そのため macOS のプリセットはアーキテクチャをひとつだけ選ぶ必要があり、それがこのエディタ自身の arm64 です。upstream のアーカイブには universal のバイナリしか入っておらず、エクスポータは godot_macos_<cfg>.<architecture> という正確な名前でバイナリを探すため、何も見つけられません。godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64-template.zip があるのはそのためです。設定は 2 か所必要で、そのうち片方はエクスポートダイアログにありません:
-
プリセットの カスタムテンプレート → リリースとデバッグの両方に、
godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64-template.zipそのものを指定します。この欄に指定するのはアーカイブそのものであって、その中身ではありません。1 つのアーカイブが両方を兼ねます。 -
エディタを終了してから、アーキテクチャをプリセットに手動で追記します。macOS のエクスポータは
binary_format/architectureを保存はするものの表示しないため、ダイアログからは設定できません。export_presets.cfgの、macOS プリセットの[preset.N.options]ブロックに次を追加します:binary_format/architecture="arm64"
既定値の universal のままにすると、エクスポートはこの設定名を示すエラーで失敗します。universal は 2 つのアーキテクチャを選ぶ指定であり、バックエンドが対応できるのは 1 つだからです。
Web へのエクスポート
Web のプリセットで:
- カスタムテンプレート(リリース):
godot-dn2cpp-4.7.1-dn2cpp.1-web-template.zipをアーカイブのまま指定します。 variant/extensions_support=true— ゲームは GDExtension ライブラリと同じ経路で side module としてロードされます。variant/thread_support=false— ゲームのライブラリは-pthreadなしでビルドされ、Emscripten はそれをスレッド有効のメインモジュールへロードすることを拒否します。
ゲームをコンパイルするのは、エディタが同梱する Emscripten 6.0.5 の SDK です。これは godot-dn2cpp-4.7.1-dn2cpp.1-web-template.zip 自体をビルドしたのと同じものです。同じ SDK を使うのは単に手間を省くためではなく、ゲームはそのテンプレートの side module であり、両者は例外方式と動的リンクの ABI を一致させる必要があるためです。自分で SDK をインストールする必要はなく、必要なのは node だけです(動作要件を参照)。
このプラットフォームには、他のターゲットには無い固有の制約があります:
- スレッドがありません。
Task.Run、Thread、Timerは例外を投げます。 - HTTP トランスポートがありません。 ブラウザには TCP ソケット層が無いため、
HttpClientはリンクは通りますが、すべての呼び出しがプラットフォーム名を含むHttpRequestExceptionで失敗します。 FileStreamはリンクできません。 インターセプトされたFile.*のサブセットはインメモリファイルシステム上で動作します。System.IOはres://を読めません(これはここに限らず、どのプラットフォームでも同じです)。ProjectSettings.GlobalizePath(...)で変換するか、パックされたアーカイブを読めるエンジン側(FileAccess、ResourceLoader)経由で読んでください。
Android へのエクスポート
Godot 公式の Android エクスポートテンプレートに加えて、次の 2 つを用意する必要があります。
- NDK — 環境変数
ANDROID_NDK_ROOTかANDROID_NDK_HOMEを参照します。どちらも設定されていない場合は、エディタ設定export/android/android_sdk_path配下のndk/から探します。 - JDK — エディタ設定
export/android/java_sdk_pathに指定してください。PATHのjavaは Godot が参照しません。
Provenance
| fork のコミット | bacd42ee89f913f0a2d01a3b40f4706d7882aec2 |
| upstream ベース | a13da4feb8d8aefc283c3763d33a2f170a18d541(Godot 4.7.1) |
| エンジンの provenance | engine=224bbbeb46c15107 base=a13da4feb8d8aefc283c3763d33a2f170a18d541 |
macOS エディタの --version |
4.7.1.stable.mono.custom_build.b2fab2378 |
| macOS エディタの dn2cpp コミット | 30eadd97c508cac4fb01e1c772373500a07d84e5 |
| macOS エディタのツールチェーン content hash | a93ee04ff0d1ede791c72a089b055f337f991f1bc956244a08b21da02dc869c6 |
| macOS エディタの prebuilt ランタイム軸 | android-arm64-v8a host ios-arm64 iossimulator-arm64 iossimulator-x64 web-wasm32 |
| macOS エディタの同梱ビルドツール | cmake 4.4.2 + ninja 1.13.2 |
Windows エディタの --version |
4.7.1.stable.mono.custom_build.c9fe7a35b |
| Windows エディタの dn2cpp コミット | 30eadd97c508cac4fb01e1c772373500a07d84e5 |
| Windows エディタのツールチェーン content hash | d72c0b17690bb5159bfaed218da45d5b4257c62a53c3033c8b69258403ef9382 |
| Windows エディタの prebuilt ランタイム軸 | android-arm64-v8a host web-wasm32 |
| Windows エディタの同梱ビルドツール | cmake 4.4.2 + ninja 1.13.2 |
| Web テンプレートのビルドに使用 | emcc emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 6.0.5-git (1db513782be24469589d7cb8a1f1834e9a33f271)(Emscripten 6.0.5) |
| macOS テンプレートの抽出元 | upstream macos.zip、sha256 93ba34af3d19653f2fa8ca13652bc09045e818922300a5543df9ebed726228ed |
エディタの
--version文字列が示すのは、そのバイナリがリンクされたときのコミットです。エンジンのソースに変更が無いツリーは再リンクされないため、このコミットはタグのコミットより古いことがあります。どちらも同じバイナリを指しています。バグ報告にはこの文字列をそのまま貼り付けてください。エディタはそれぞれ別のホストでパッケージされるので、エンジンの行より下はエディタごとに分かれています。dn2cpp コミットがエディタ間で食い違うのも同じ理由で、パッケージした時刻が違うだけです。エンジンのソースは上のfork のコミット1 つが示すとおり共通です。
ライセンス
Godot は MIT で、dn2cpp バックエンドも MIT です。エディタが同梱するツールチェーンには、エクスポートしたゲームがリンクする vendored な C ライブラリが加わり、それぞれ third_party/ 以下に自身の条項があります。
さらに Emscripten SDK も同梱しています。upstream の Emscripten(MIT / University of Illinois NCSA)、その下の LLVM および Binaryen(LLVM 例外付き Apache-2.0)、エクスポートした Web ゲームがリンクする wasm ランタイムライブラリ(libc++、libc++abi、libunwind、compiler-rt、および musl 由来の libc)、それにリンク時に emcc が読み込む npm パッケージ群です。同梱したバイナリに対応するライセンス文書は emsdk/LICENSES/ 以下にまとめてあります。ただし LLVM と Binaryen の実行ファイルについては、upstream のアーカイブ自体がライセンス文書をどこにも含んでいないため emsdk/LICENSES/ にもありません。条項は https://llvm.org/LICENSE.txt を参照してください。
トラブルシューティング
エクスポートの成否は、ログでしか判定できません。 エクスポートに失敗しても、エディタは「警告付きで完了」と表示します(エクスポートプラグインのエラーが警告レベルに落とされるためです)。終了コードも 0 を返し、それらしい成果物も残るため、表示にも成果物の有無にも成否は現れません。
ログは <プロジェクトの出力パス>/dn2cpp/logs/export-<timestamp>.log に、最新 20 世代が保存されます。
事前チェックが次の行を出力した場合は、この行に続けて不足しているツールの名前と、その導入方法が示されます。動作要件を確認してください。
The dn2cpp export backend is missing tools it cannot build without:
Windows でこのメッセージが出る場合は、Visual Studio の C++ ワークロードが入っていないか、エディタの探索が届かない場所にインストールされています。後者であれば、ビルド環境をロード済みのシェル(Developer Command Prompt for VS)からエディタを起動すれば、それがそのまま使われます。
既知の制限
- macOS エディタは notarize されておらず(上の*インストール(macOS エディタ)*を参照)、arm64 のみです。エクスポートされる macOS ゲームも同様で、universal ビルドも Intel ビルドも無く、クロスコンパイルもできません。
- Windows エディタは x86_64 のみで未署名です。arm64 ビルドはありません。
- Windows ゲームのエクスポートには MSVC が必要なため、その場合のみ Visual Studio の C++ ワークロードが要ります。Web と Android へのエクスポートは対象外です(動作要件を参照)。
- このリリースには Linux エディタが含まれていません。ホストプラットフォームとしてはバックエンド自体が対応しています。
- 同梱の prebuilt ランタイムキャッシュは、パッケージしたホストのツールチェーンをキーにしています。clang や NDK が異なるマシンでは、そのターゲットへの初回エクスポート時にランタイムをソースからビルドします(一度だけ遅くなりますが、結果はバイト単位で同一です)。Web 軸だけは例外です。そのツールチェーンはバンドルに同梱されているため、どのマシンでも同じキーになります。