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

Введение

Файловая система управляет тем, как хранятся ресурсы и как к ним осуществляется доступ. Хорошо продуманная файловая система также позволяет нескольким разработчикам редактировать одни и те же исходные файлы и ресурсы во время совместной работы. 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://, который всегда доступен для записи. Этот путь меняется в зависимости от операционной системы, на которой запущен проект. Расположение локального пути объясняется в разделе File paths in Godot projects.

Родительская файловая система

В качестве альтернативы можно также использовать пути родительской файловой системы, но этого не рекомендуется делать для выпущенного продукта, так как не гарантируется работа этих путей на всех платформах. Однако использование путей родительской файловой системы может быть полезно при написании средств разработки в Godot.

Недостатки

В этом простом дизайне файловой системы есть некоторые недостатки. Первая проблема заключается в том, что перемещение ассетов (переименование или перемещение их с одного пути на другой внутри проекта) нарушит существующие ссылки на эти ассеты. Эти ссылки должны быть переопределены, чтобы указать на новое местоположение ассеты.

Чтобы избежать этого, выполните все свои действия по перемещению, удалению и переименованию из Godot, в панели файловой системы. Никогда не перемещайте активы вне Godot, иначе зависимости придется исправлять вручную (Godot все равно обнаружит это и поможет вам исправить их, но зачем идти трудным путем?).

Во-вторых, имена файлов и путей в Windows и MacOS не зависят от регистра. Если разработчик, работающий в нечувствительной к регистру родительской файловой системе, сохраняет актив как myfile.PNG, но затем ссылается на него как на "myfile.png", он будет прекрасно работать на их платформе, но не на других платформах, таких как Linux, Android и т.д. Это может также применяться к экспортируемым двоичным файлам, которые используют сжатый пакет для хранения всех файлов.

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