Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Файлова система

Вступ

Файлова система керує тим, як зберігаються ресурси (активи, асети) та яким чином до них отримують доступ. Добре розроблена файлова система також дозволяє декільком розробникам редагувати одні й ті ж вихідні файли та ресурси під час співпраці. Godot зберігає всі активи у вигляді файлів у своїй файловій системі.

Реалізація

Файлова система зберігає ресурси на диску. Все, від скрипту, до сцени, чи зображення PNG - це ресурс для движка. Якщо ресурс містить властивості, що посилаються на інші ресурси на диску, включаються також і шляхи до цих ресурсів. Якщо в ресурсі є вбудовані під-ресурси, ресурс зберігається в одному файлі разом з усіма пакетними під-ресурсами. Наприклад, ресурс шрифту часто поєднується з текстурами шрифту.

The Godot file system avoids using metadata files. Existing asset managers and VCSs are better than anything we can implement, so Godot tries its best to play along with Subversion, Git, Mercurial, etc.

Зразок вмісту файлової системи:

/project.godot
/enemy/enemy.tscn
/enemy/enemy.gd
/enemy/enemysprite.png
/player/player.gd

project.godot

Файл project.godot - це файл опису проєкту, і він завжди знаходиться в корені проєкту. Насправді його розташування визначає, де знаходиться корінь. Це перший файл, який Godot шукає при відкритті проєкту.

Цей файл містить конфігурацію проєкту у простому тексті, використовуючому формат win.ini. Навіть порожній project.godot може функціонувати, як основне визначення порожнього проєкту.

Розмежувач шляхів

Godot підтримує лише / як роздільник шляху. Це робиться з міркувань портативності. Усі операційні системи підтримують /, навіть Windows, так що для шляху c:\project\project.godot треба ввести c:/project/project.godot.

Шлях до ресурсу

Під час доступу до ресурсів використання розміщення файлової системи ОС може бути громіздким і не портативним. Для вирішення цієї проблеми було створено спеціальний шлях res://.

Шлях res:// завжди буде вказувати на корінь проєкту (де знаходиться project.godot, тому res://project.godot завжди дійсний).

Ця файлова система читається і записується лише під час запуску проєкту локально з редактора. Під час експорту, або під час роботи на різних пристроях (таких як телефони, або консолі, або запуск з DVD) файлова система стане доступна лише для читання, і запис більше не буде дозволено.

Користувацький шлях

Запис на диск все ще потрібен для таких завдань, як збереження ігрового стану, або завантаження вмісту. З цією метою движок забезпечує наявність спеціального шляху user://, який завжди можна записати. Цей шлях міняється в залежності від операційної системи на якій запущений проєкт. Розширення місцевого шляху далі пояснюється в Шляхи до файлів у проектах Godot.

Файлова система хоста

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

Недоліки

There are some drawbacks to this file system design. The first issue is that moving assets around (renaming them or moving them from one path to another inside the project) will break existing references to these assets. These references will have to be re-defined to point at the new asset location.

Щоб уникнути цього, виконуйте всі свої переміщення, видалення та перейменування операцій із Godot, на панелі Файлова система. Ніколи не переміщуйте активи за межами Godot, інакше залежність доведеться виправляти вручну (Godot виявляє це і допоможе вам все виправити, але навіщо йти складним шляхом?).

Друге питання полягає в тому, що під Windows та macOS назви файлів та шляхів не залежать від регістру. Якщо розробник, що працює в файловій системі, нечутливій до регістру, зберігає об'єкт, як "myfile.PNG", але потім посилається на нього як на "myfile.png", то на цих платформах все буде добре працювати, але не на інших платформах, таких як Linux, Android тощо. Це також може стосуватися експортованих бінарних файлів, які використовують стислий пакет для зберігання всіх файлів.

It is recommended that your team clearly define a naming convention for files when working with Godot. One fool-proof convention is to only allow lowercase file and path names.