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

Вступ

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

Реалізація

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

Файлова система Godot уникає використання файлів метаданих. Існуючі менеджери активів та VCS краще, ніж все, що ми можемо виконати, тому Godot намагається якнайкраще відтворити їх з SVN, Git, Mercurial, Perforce тощо.

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

/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.

Недоліки

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

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

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

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