Maemaemae

gdextのWebエクスポート方法

公式の方が詳しくて勉強になります。 とりあえず動かすだけの手順を抜粋しています。  

前提

手順

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エディタで編集

  1. [プロジェクト]⇒[エクスポート]⇒[追加]⇒[Web]
  2. エクスポート先のパスを任意のパスに設定
  3. ExtensionsSupportを有効化
  4. すべてエクスポートからリリースを選択

動作確認

IIS(Internet Information Services)有効化

  1. [windowsキー]⇒[Windowsの機能の有効化または無効化]
  2. [インターネットインフォメーションサービス]をチェック インターネットインフォメーションサービス

IIS マネージャー編集

  1. [windowsキー]⇒[インターネット インフォメーション サービス (IIS) マネージャー]
  2. 左メニューから[Default Web Site]を選択
  3. [MIMEの種類]をダブルクリック
  4. 右メニューから[追加...] を選択
  5. ファイル名の拡張子を「.pck」、MIMEの種類を「application/octet-stream」と入力 MIME
  6. 左メニューから[Default Web Site]を選択
  7. HTTP応答ヘッダーをダブルクリック
  8. 右メニューから[追加...] を選択
  9. 以下2つの値をセットする
    名前:Cross-Origin-Embedder-Policy
    値:require-corp
    
    名前:Cross-Origin-Opener-Policy
    値:same-origin
    

ブラウザで確認

localhostにアクセスして表示されることを確認する

参考

godotrust