Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
以腳本加密密鑰進行編譯
在釋出遊戲時,匯出對話框中有可以使用 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