Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
以腳本加密密鑰進行編譯¶
在釋出遊戲時,匯出對話框中有可以使用 256 位元 AES 密鑰加密腳本的選項。通過該選項可以確保腳本不以純文字形式保存,且無法輕易地被一些腳本小子 (Script Kiddie) 輕鬆取得。當然,金鑰必須要保存在二進位檔中,但經過編譯、最佳化、並移除符號後,就需要花一點時間才能找到密鑰。
當然,金鑰需要儲存在二進位檔案中,但是經過編譯、優化、去除符號後,是需要花費一些精力才能找到的。
要加密腳本,需要以同一組密鑰來從原始碼編譯匯出腳本。
警告
如果你使用官方預編譯的匯出範本,是**不會**起作用的。要使用 PCK 加密,絕對**必須**自己編譯匯出範本。
警告
預設情況下,Android 匯出將資源直接儲存在 APK 檔案中,並且不受 PCK 加密的影響。若要在 Android 上使用 PCK 加密,請在匯出選項中啟用 APK 擴充。
按部就班¶
產生十六進位格式的 256 位元 AES 密鑰。可以使用 這個服務 中的 AES-256-CBC 變體。
或者,也可以通過 OpenSSL 來自行產生:
openssl rand -hex 32 > godot.gdkey
godot.gdkey
中的輸出應該類似:# NOTE: Do not use the key below! Generate your own key instead. aeb1bc56aaf580cc31784e9c41551e9ed976ecba10d315db591e749f3f64890f
產生密鑰時可以不將輸出重新導向輸出至檔案,這樣可以最小化密鑰暴露的風險。
將該密鑰在用來編譯 Godot 的主控台中設為環境變數,如:
export SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
set SCRIPT_AES256_ENCRYPTION_KEY=your_generated_key
$env:SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
編譯 Godot 匯出樣板,並將該匯出樣板在匯出預設設定中設為自定匯出樣板。
在匯出預設設定中的
腳本
分頁設定加密密鑰:為要加密的檔案/資料夾新增篩選器。 預設情況下,包含篩選器為空並且**不會加密任何內容**。
匯出專案。該遊戲現在應該會使用加密腳本來執行。
疑難排解¶
若遇到類似下方的錯誤,這代表加密密鑰沒有被正確包含到 Godot 建置中。這代表 Godot 在匯出時有加密腳本,但執行階段無法讀取。
ERROR: open_and_parse: Condition "String::md5(md5.digest) != String::md5(md5d)" is true. Returning: ERR_FILE_CORRUPT
At: core/io/file_access_encrypted.cpp:103