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

Введение

A file system manages how assets are stored and how they are accessed. A well-designed file system also allows multiple developers to edit the same source files and assets while collaborating. Godot stores all assets as files in its file system.

Реализация

Файловая система хранит ресурсы на диске. Все, что угодно, от скриптов до сцен или изображений 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 SVN, Git, Mercurial, Perforce, etc.

Example of file system contents:

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

project.godot

Файл project.godot - это файл описания проекта, который всегда находится в корне самого проекта. Фактически, его местоположение определяет то, где находится корень. Это первый файл, который Godot ищет при открытии проекта.

This file contains the project configuration in plain text, using the win.ini format. Even an empty project.godot can function as a basic definition of a blank project.

Разделитель путей

Godot поддерживает только /' в качестве разделителя путей. Это делается по причинам переносимости. Все операционные системы поддерживают это, даже Windows, поэтому путь c:\project\project.godot должен быть напечатан как c:/project/project.godot.

Путь ресурса

При доступе к ресурсам, использование компоновки файловой системы хоста может быть громоздким и не переносимым. Для решения этой проблемы был создан специальный путь res://.

The path res:// will always point at the project root (where project.godot is located, so res://project.godot is always valid).

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

Путь пользователя

Writing to disk is still needed for tasks such as saving game state or downloading content packs. To this end, the engine ensures that there is a special path user:// that is always writable.

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

Alternatively host file system paths can also be used, but this is not recommended for a released product as these paths are not guaranteed to work on all platforms. However, using host file system paths can be useful when writing development tools in Godot.

Недостатки

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

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

The second is that, under Windows and macOS, file and path names are case insensitive. If a developer working in a case insensitive host file system saves an asset as «myfile.PNG», but then references it as «myfile.png», it will work fine on their platform, but not on other platforms, such as Linux, Android, etc. This may also apply to exported binaries, which use a compressed package to store all files.

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