解決 Godot 如何開啟匯出的 html5 package
第一次嘗試透過 Godot 做遊戲 (目前使用的版本為 Godot 4.6),想說先測試看看匯出成網頁。如果直接打開匯出的 .html 檔案,會遇到 load failed 的問題。這篇文章記錄了如何透過建立一個簡單的 Python 伺服器來解決這個狀況。
畫好簡單的地圖後,測試匯出 HTML5 package
直接打開 html 檔案
🛠️ 解決方法
這個問題主要是因為現代瀏覽器的安全性限制(特別是針對 SharedArrayBuffer 等跨來源隔離機制),導致本地端直接開啟檔案無法成功載入 Godot 的遊戲引擎環境。
參考官方的 Github Issue 討論:godotengine/godot#69020
要解決這個問題,我們需要建立一個提供 Cross-Origin-Opener-Policy 與 Cross-Origin-Embedder-Policy 的本地伺服器。具體步驟如下:
1. 建立伺服器腳本
在匯出的遊戲與 .html 檔案的同一層資料夾內,建立一個名為 server.py 的檔案。
2. 寫入 Python 程式碼
將以下內容貼入 server.py 當中,這會啟動一個簡單的 HTTP 伺服器,並幫我們補上跨網域資源共用 (CORS) 必要的 Headers:
import http.server
import socketserver
PORT = 8000
class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
super().end_headers()
Handler = MyHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print(f"Serving at port {PORT}")
httpd.serve_forever()
3. 執行伺服器
打開終端機 (terminal),切換到該資料夾目錄下,執行剛剛建立的 server.py:
python server.py
4. 開啟遊戲
最後,在打開你的網頁瀏覽器,輸入 http://127.0.0.1:8000/ ,就可以看到遊戲正確載入了!
🔮 What’s Next?
成功在本地端測試完網頁版匯出後,接下來就可以更放心地繼續開發遊戲內容!