Releases: takuma-komatsu/godot-dn2cpp
Release list
godot-dn2cpp 4.7.1-dn2cpp.2
概要
本リリースは、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.2-macos-arm64.zip |
macOS エディタ(ad-hoc 署名) | a84c50813471615e648e2b802c854a0890f786860cec9a2bb8599c1e0c3ac063 |
Godot-dn2cpp-4.7.1-dn2cpp.2-windows-x86_64.zip |
Windows エディタ(x86_64、未署名) | f03b7a6aa2c7a668be8e5a30d3015e4ee5157e3a006e785e5c21458ba40a073c |
godot-dn2cpp-4.7.1-dn2cpp.2-web-template.zip |
Web エクスポートテンプレート(Web に必須。後述) | eb16b5d15be4521833761d41c7f435f0093386fdfd3fa7d16026e09a124f7fee |
godot-dn2cpp-4.7.1-dn2cpp.2-macos-arm64-template.zip |
macOS arm64 エクスポートテンプレート(macOS に必須。後述) | ea6b04c032364d4c672b22c54f0886dafaf0da6c4b278d0e6b82738868ad908e |
SHA256SUMS.txt |
上記アセットのハッシュ(shasum 形式) |
— |
展開する前に、ダウンロードしたファイルを検証してください:
shasum -a 256 -c SHA256SUMS.txt
Windows には shasum がないため、PowerShell で次のコマンドを実行してください:
Get-FileHash Godot-dn2cpp-4.7.1-dn2cpp.2-windows-x86_64.zip -Algorithm SHA256
出力は大文字の 16 進表記です。SHA256SUMS.txt の該当行とは大文字小文字を無視して照合してください。
インストール(macOS エディタ)
unzip Godot-dn2cpp-4.7.1-dn2cpp.2-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.2-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)が記載されています。バグ報告は https://github.com/takuma-komatsu/dn2cpp/issues へ、このファイルの内容をそのまま貼り付けてください。
動作要件
以下はすべてエクスポートを実行するマシンの要件です。エクスポートしたゲームの実行環境には、いずれも必要ありません。
対応ホスト
- 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 以降 | 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 などで別途用意してください。
Node.js の列が無いのは、emcc がリンクのたびに起動する Node.js 24.19.0 を同梱の Emscripten SDK が内側に持っているためです。
このホストから Windows および Linux へはエクスポートできません。
Windows(x86_64)ホスト
| エクスポート先 | .NET SDK 10.0.10 | Visual Studio の C++ ワークロード | Android NDK・JDK | エクスポートテンプレート |
|---|---|---|---|---|
| Windows | ● | ●※ | — | Godot 公式 |
| Web | ● | — | — | 本リリース同梱 |
| Android | ● | — | ● | Godot 公式 |
※ ビルドは MSVC で行いますが、必要なのはインストールされていることだけです。ビルド環境はエディタが自分で探して取り込むため、特別なシェルから起動する必要はありません。下の注記を参照してください。
Node.js の列が無いのは、emcc がリンクのたびに起動する Node.js 24.19.0 を同梱の Emscripten SDK が内側に持っているためです。
このホストから 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 だけです。
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.2-web-template.zipが必要です。 - macOS —
godot-dn2cpp-4.7.1-dn2cpp.2-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.2-macos-arm64-template.zip があるのはそのためです。設定は 2 か所必要で、そのうち片方はエクスポートダイアログにありません:
-
プリセットの カスタムテンプレート → リリースとデバッグの両方に、
godot-dn2cpp-4.7.1-dn2cpp.2-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.2-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.2-web-template.zip 自体をビルドしたのと同じものです。同じ SDK を使うのは単に手間を省くためではなく、ゲームはそのテンプレートの side module であり、両者は例外方式と動的リンクの ABI を一致させる必要があるためです。SDK も、それが起動する Node.js も同梱されているため、別途インストールするものはありません。
このプラットフォームには、他のターゲットには無い固有の制約があります:
- スレッドがありません。
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 のコミット | 0d870ed45259ce2802ea3d82737e0855c9d6b7c2 |
| upstream ベース | a13da4feb8d8aefc283c3763d33a2f170a18d541(Godot 4.7.1) |
| エンジンの provenance | engine=224bbbeb46c15107 base=a13da4feb8d8aefc283c3763d33a2f170a18d541 |
macOS エディタの --version |
4.7.1.stable.mono.custom_build.b2fab2378 |
| macOS エディタの dn2cpp コミット | 0153e082f734a102cbbfb6a25ee505139ddb6e67 |
| macOS エディタのツールチェーン content hash | `bcc7b504eb9fcb144821c43247c5bea33780a7ac4a1c49... |
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 ... |