2023/07/28(金) [n年前の日記]
#3 [godot] Godot Engine 4.1.1の勉強中
Windows10 x64 22H2上で、Godot Engine v4.1.1 x64 を使って勉強中。以前 Godot を触ってた頃は Godot 3.x.x だったので、何か変わってたりするのかなと…。
Godot Engine 3.x で作成した HelloWorld相当のプロジェクトは、4.x 用に変換できなかったので、最初からプロジェクトを新規作成して同じものが作れそうか試してみた。以前書き残したメモを参考にして作業。
_mieki256's diary - Godot Engine で Hello World
とりあえず、Label と Button は、4.x でも存在しているようだなと…。
フォントの指定でちょっと悩んだけれど、fonts というプロパティを探してテキトーに設定したら一応反映されたように見えた。
Godot Engine 3.x で作成した HelloWorld相当のプロジェクトは、4.x 用に変換できなかったので、最初からプロジェクトを新規作成して同じものが作れそうか試してみた。以前書き残したメモを参考にして作業。
_mieki256's diary - Godot Engine で Hello World
とりあえず、Label と Button は、4.x でも存在しているようだなと…。
フォントの指定でちょっと悩んだけれど、fonts というプロパティを探してテキトーに設定したら一応反映されたように見えた。
◎ html5エクスポートでハマった :
せっかくだから、.exe と html5 をエクスポートしてみようとしたのだけど…。
_mieki256's diary - Godot Engineでプロジェクトをエクスポート
.exe は問題無くエクスポートできたし、実行することもできたけど、html5 のエクスポートで問題発生。
Python 3.10.10 を使って、python -m http.server と打ってローカルWebサーバを起動して、http://localhost:8000/ に Firefox 115.0.2 でアクセスして .html ファイルを開いてみたのだけど、エラーが表示されて実行できない。
ググってみたら以下の記事に遭遇。
_[Godot] Godot4.0のWebエクスポートしたゲームがエラーで動かない!(Cross Origin Isolation、SharedArrayBuffer) | WorkToolSmith
Godot 4.x から、エクスポートした html5 の実行時に、Cross Origin Isolation、SharedArrayBuffer なるものが必要になったらしい…。python -m http.server で立ち上がるローカルWebサーバはあくまで簡易サーバなので、そこまではサポートしていない、ということなのだろう。
これがもし、Webサーバが Apache等であれば、.htaccess に以下を追記することで解決するらしいのだけど。残念ながら、自分の手元のWindows環境では Apache を動かしていない…。
それぞれ、略称として COEP、COOP と呼ばれてるようだなと…。
さておき。Godot でエクスポートした html5 の動作確認のために Apache を新規導入するというのもちょっとヘビーな作業のような気もする。Pythonだけでどうにかならんかとググっていたら、以下のスクリプト、server-cross-origin.py に遭遇。
_Local HTTP server with COEP+COOP enabled for SharedArrayBuffer - GitHub
これは使えそうな気がする…。.pck もファイルの種類を指定しないといけないので、extensions_map = { } に、.pck の記述も追加した。
python server-cross-origin.py で動かしてみたところ、ローカルWebサーバが起動した。http://localhost:8000/ にアクセスして .html を開いたところ、Godot 4.1.1 でエクスポートした html5 を実行することができた。助かった。ありがたや。
ちなみに、Webサーバが Apache で、Godot からエクスポートした html5 を置きたい場合、.htaccess に以下も書いておいたほうがいいのかもしれない。
_mieki256's diary - Godot Engineでプロジェクトをエクスポート
.exe は問題無くエクスポートできたし、実行することもできたけど、html5 のエクスポートで問題発生。
Python 3.10.10 を使って、python -m http.server と打ってローカルWebサーバを起動して、http://localhost:8000/ に Firefox 115.0.2 でアクセスして .html ファイルを開いてみたのだけど、エラーが表示されて実行できない。
ググってみたら以下の記事に遭遇。
_[Godot] Godot4.0のWebエクスポートしたゲームがエラーで動かない!(Cross Origin Isolation、SharedArrayBuffer) | WorkToolSmith
Godot 4.x から、エクスポートした html5 の実行時に、Cross Origin Isolation、SharedArrayBuffer なるものが必要になったらしい…。python -m http.server で立ち上がるローカルWebサーバはあくまで簡易サーバなので、そこまではサポートしていない、ということなのだろう。
これがもし、Webサーバが Apache等であれば、.htaccess に以下を追記することで解決するらしいのだけど。残念ながら、自分の手元のWindows環境では Apache を動かしていない…。
Header set Cross-Origin-Embedder-Policy "require-corp" Header set Cross-Origin-Opener-Policy "same-origin"
それぞれ、略称として COEP、COOP と呼ばれてるようだなと…。
さておき。Godot でエクスポートした html5 の動作確認のために Apache を新規導入するというのもちょっとヘビーな作業のような気もする。Pythonだけでどうにかならんかとググっていたら、以下のスクリプト、server-cross-origin.py に遭遇。
_Local HTTP server with COEP+COOP enabled for SharedArrayBuffer - GitHub
これは使えそうな気がする…。.pck もファイルの種類を指定しないといけないので、extensions_map = { } に、.pck の記述も追加した。
extensions_map = { '': 'application/octet-stream', '.css': 'text/css', '.html': 'text/html', '.jpg': 'image/jpg', '.js': 'application/x-javascript', '.json': 'application/json', '.manifest': 'text/cache-manifest', '.png': 'image/png', '.wasm': 'application/wasm', '.xml': 'application/xml', '.pck': 'application/octet-stream', }
python server-cross-origin.py で動かしてみたところ、ローカルWebサーバが起動した。http://localhost:8000/ にアクセスして .html を開いたところ、Godot 4.1.1 でエクスポートした html5 を実行することができた。助かった。ありがたや。
ちなみに、Webサーバが Apache で、Godot からエクスポートした html5 を置きたい場合、.htaccess に以下も書いておいたほうがいいのかもしれない。
AddType application/octet-stream pck AddType application/wasm wasm Header set Cross-Origin-Embedder-Policy "require-corp" Header set Cross-Origin-Opener-Policy "same-origin"
[ ツッコむ ]
以上です。