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.

Компіляція з ключем шифрування PCK

Діалогове вікно експорту дає вам можливість зашифрувати файл PCK за допомогою 256-бітного ключа AES під час випуску вашого проекту. Це гарантує, що ваші сцени, сценарії та інші ресурси не зберігаються у звичайному тексті та не можуть бути легко зірвані якимось сценаристом.

Звичайно, ключ потрібно зберігати у двійковому файлі, але якщо він скомпільований, оптимізований і без символів, знадобляться певні зусилля, щоб його знайти.

Щоб це працювало, вам потрібно створити шаблони експорту з джерела з тим самим ключем.

Попередження

Це не працюватиме, якщо ви використовуєте офіційні попередньо скомпільовані шаблони експорту. Абсолютно обов’язково скомпілювати власні шаблони експорту, щоб використовувати шифрування PCK.

Крок-за-кроком

  1. Створіть 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
    

    Ви можете згенерувати ключ, не перенаправляючи вивід у файл, але таким чином ви можете мінімізувати ризик розкриття ключа.

  2. Встановіть цей ключ як змінну середовища в консолі, яку ви використовуватимете для компіляції Godot, ось так:

    export SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
    

    Зверніть увагу, що запропоновані вище команди не зберігають змінні між термінальними сеансами.

  3. Скомпілюйте шаблони експорту Godot та встановіть їх як власні шаблони експорту в параметрах пресетів експорту. Якщо змінну середовища встановлено правильно, на початку компіляції буде виведено таке повідомлення:

    *** IMPORTANT: Compiling Godot with custom `SCRIPT_AES256_ENCRYPTION_KEY` set as environment variable.
    *** Make sure to use templates compiled with this key when exporting a project with encryption.
    
  4. Встановіть ключ шифрування на вкладці Шифрування попереднього налаштування експорту:

    ../../../_images/encryption_key.png
  5. Додайте фільтри для файлів/папок для шифрування. За замовчуванням, включені фільтри порожні, і нічого не буде зашифровано.

  6. Експортуйте проект. Зараз проект має працювати із зашифрованими файлами.

Вирішення проблем

Якщо ви отримуєте помилку, подібну до наведеної нижче, це означає, що ключ неправильно включено у вашу збірку Godot. Godot шифрує файл PCK під час експорту, але не може прочитати його під час виконання.

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