gdextのWebエクスポート方法
公式の方が詳しくて勉強になります。 とりあえず動かすだけの手順を抜粋しています。
前提
- windows11
- Godot:4.2.2
- cargo:1.79.0
- windows上で正常に動いているプロジェクトに適応
手順
emsdkインストール
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install 3.1.39
./emsdk activate 3.1.39
rustプロジェクトの編集
rustup toolchain install nightly
rustup component add rust-src --toolchain nightly
rustup target add wasm32-unknown-emscripten --toolchain nightly
Cargo.toml編集
[package]
name = "rust"
version = "0.1.0"
edition = "2021"
[dependencies]
godot = { git = "https://github.com/godot-rust/gdext", branch = "master", features = ["experimental-wasm", "lazy-function-tables"] }
ビルド実行
cargo +nightly build -Zbuild-std --target wasm32-unknown-emscripten --release
godotプロジェクトの編集
.gdextensionを編集
[configuration]
entry_symbol = "gdext_rust_init"
compatibility_minimum = 4.2
reloadable = true
[libraries]
linux.debug.x86_64 = "res://../rust/target/debug/lib{YourCrate}.so"
linux.release.x86_64 = "res://../rust/target/release/lib{YourCrate}.so"
windows.debug.x86_64 = "res://../rust/target/debug/{YourCrate}.dll"
windows.release.x86_64 = "res://../rust/target/release/{YourCrate}.dll"
macos.debug = "res://../rust/target/debug/lib{YourCrate}.dylib"
macos.release = "res://../rust/target/release/lib{YourCrate}.dylib"
macos.debug.arm64 = "res://../rust/target/debug/lib{YourCrate}.dylib"
macos.release.arm64 = "res://../rust/target/release/lib{YourCrate}.dylib"
web.debug.wasm32 = "res://../rust/target/wasm32-unknown-emscripten/release/{YourCrate}.wasm"
web.release.wasm32 = "res://../rust/target/wasm32-unknown-emscripten/release/{YourCrate}.wasm"
※web.debug.wasm32にdebugをしている指定するとエラーになる
godotエディタで編集
- [プロジェクト]⇒[エクスポート]⇒[追加]⇒[Web]
- エクスポート先のパスを任意のパスに設定
- ExtensionsSupportを有効化
- すべてエクスポートからリリースを選択
動作確認
IIS(Internet Information Services)有効化
- [windowsキー]⇒[Windowsの機能の有効化または無効化]
- [インターネットインフォメーションサービス]をチェック

IIS マネージャー編集
- [windowsキー]⇒[インターネット インフォメーション サービス (IIS) マネージャー]
- 左メニューから[Default Web Site]を選択
- [MIMEの種類]をダブルクリック
- 右メニューから[追加...] を選択
- ファイル名の拡張子を「.pck」、MIMEの種類を「application/octet-stream」と入力

- 左メニューから[Default Web Site]を選択
- HTTP応答ヘッダーをダブルクリック
- 右メニューから[追加...] を選択
- 以下2つの値をセットする
名前:Cross-Origin-Embedder-Policy 値:require-corp名前:Cross-Origin-Opener-Policy 値:same-origin
ブラウザで確認
localhostにアクセスして表示されることを確認する