Skip to content

Releases: takuma-komatsu/godot-dn2cpp

godot-dn2cpp 4.7.1-dn2cpp.2

Choose a tag to compare

@takuma-komatsu takuma-komatsu released this 08 Aug 04:39

概要

本リリースは、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 に、このビルドの識別情報(releasefork_commitengine_provenancetoolchain_content_hasheditor_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 / LIBPATHvcvarsall を実行済みのシェルの中にしか存在しません。そこでエディタは、起動時ではなくエクスポート時に 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_backenddn2cpp に設定し、あとは通常どおりエクスポートするだけです。上の動作要件以外に必要なものはありません。トランスパイラ、ランタイムのソース、エクスポートしたゲームがリンクする vendored ライブラリは、すべてエディタに同梱されています。

エディタ設定 → dotnet/export/dn2cpp_toolchain_path で別のツールチェーンレイアウトを指定できます。同梱のものではなく自分でビルドした dn2cpp を使用したい場合は、ここで指定します。同様に dotnet/export/dn2cpp_cmake_pathdotnet/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 が必要です。
  • macOSgodot-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 か所必要で、そのうち片方はエクスポートダイアログにありません:

  1. プリセットの カスタムテンプレート → リリースデバッグの両方に、godot-dn2cpp-4.7.1-dn2cpp.2-macos-arm64-template.zip そのものを指定します。この欄に指定するのはアーカイブそのものであって、その中身ではありません。1 つのアーカイブが両方を兼ねます。

  2. エディタを終了してから、アーキテクチャをプリセットに手動で追記します。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.RunThreadTimer は例外を投げます。
  • HTTP トランスポートがありません。 ブラウザには TCP ソケット層が無いため、HttpClient はリンクは通りますが、すべての呼び出しがプラットフォーム名を含む HttpRequestException で失敗します。
  • FileStream はリンクできません。 インターセプトされた File.* のサブセットはインメモリファイルシステム上で動作します。
  • System.IOres:// を読めません(これはここに限らず、どのプラットフォームでも同じです)。ProjectSettings.GlobalizePath(...) で変換するか、パックされたアーカイブを読めるエンジン側(FileAccessResourceLoader)経由で読んでください。

Android へのエクスポート

Godot 公式の Android エクスポートテンプレートに加えて、次の 2 つを用意する必要があります。

  • NDK — 環境変数 ANDROID_NDK_ROOTANDROID_NDK_HOME を参照します。どちらも設定されていない場合は、エディタ設定 export/android/android_sdk_path 配下の ndk/ から探します。
  • JDK — エディタ設定 export/android/java_sdk_path に指定してください。PATHjava は 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...
Read more

godot-dn2cpp 4.7.1-dn2cpp.1

Choose a tag to compare

@takuma-komatsu takuma-komatsu released this 06 Aug 02:38

これは古いリリースです。 特別な理由がなければ 最新のリリース を使ってください。

概要

本リリースは、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 に、このビルドの識別情報(releasefork_commitengine_provenancetoolchain_content_hasheditor_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 / LIBPATHvcvarsall を実行済みのシェルの中にしか存在しません。そこでエディタは、起動時ではなくエクスポート時に 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_backenddn2cpp に設定し、あとは通常どおりエクスポートするだけです。上の動作要件以外に必要なものはありません。トランスパイラ、ランタイムのソース、エクスポートしたゲームがリンクする vendored ライブラリは、すべてエディタに同梱されています。

エディタ設定 → dotnet/export/dn2cpp_toolchain_path で別のツールチェーンレイアウトを指定できます。同梱のものではなく自分でビルドした dn2cpp を使用したい場合は、ここで指定します。同様に dotnet/export/dn2cpp_cmake_pathdotnet/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 が必要です。
  • macOSgodot-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 か所必要で、そのうち片方はエクスポートダイアログにありません:

  1. プリセットの カスタムテンプレート → リリースデバッグの両方に、godot-dn2cpp-4.7.1-dn2cpp.1-macos-arm64-template.zip そのものを指定します。この欄に指定するのはアーカイブそのものであって、その中身ではありません。1 つのアーカイブが両方を兼ねます。

  2. エディタを終了してから、アーキテクチャをプリセットに手動で追記します。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.RunThreadTimer は例外を投げます。
  • HTTP トランスポートがありません。 ブラウザには TCP ソケット層が無いため、HttpClient はリンクは通りますが、すべての呼び出しがプラットフォーム名を含む HttpRequestException で失敗します。
  • FileStream はリンクできません。 インターセプトされた File.* のサブセットはインメモリファイルシステム上で動作します。
  • System.IOres:// を読めません(これはここに限らず、どのプラットフォームでも同じです)。ProjectSettings.GlobalizePath(...) で変換するか、パックされたアーカイブを読めるエンジン側(FileAccessResourceLoader)経由で読んでください。

Android へのエクスポート

Godot 公式の Android エクスポートテンプレートに加えて、次の 2 つを用意する必要があります。

  • NDK — 環境変数 ANDROID_NDK_ROOTANDROID_NDK_HOME を参照します。どちらも設定されていない場合は、エディタ設定 export/android/android_sdk_path 配下の ndk/ から探します。
  • JDK — エディタ設定 export/android/java_sdk_path に指定してください。PATHjava は 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 ...
Read more