Sistema de arquivos

Introdução

O sistema de arquivos gerencia como os assets são armazenados e como são acessados. Um sistema de arquivos bem projetado também permite que vários desenvolvedores editem os mesmos arquivos fonte e assets enquanto colaboram. O Godot guarda todos os assets como arquivos em seu sistema de arquivos.

Implementação

O sistema de arquivos armazena recursos no disco. Qualquer coisa, desde um roteiro até uma cena ou uma imagem PNG, é um recurso para o motor. Se um recurso contiver propriedades que fazem referência a outros recursos no disco, os caminhos para esses recursos também serão incluídos. Se um recurso tiver sub-recursos embutidos, ele será salvo em um único arquivo junto com todos os sub-recursos inclusos. Por exemplo, um recurso de fonte geralmente é empacotado junto com as texturas de fonte.

O sistema de arquivos do Godot evita usar arquivos de metadados. Gerenciadores de assets e sistemas de controle de versão existentes são muito melhores do que qualquer coisa que poderíamos implementar, então o Godot tenta de tudo para funcionar bem com SVN, Git, Mercurial, Perforce, etc.

Exemplo de conteúdo do sistema de arquivos:

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

project.godot

O arquivo project.godot é o arquivo de descrição do projeto, e é sempre encontrado na raiz do projeto. Na verdade, sua localização define onde está a raiz. Este é o primeiro arquivo que o Godot procura ao abrir um projeto.

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.

Delimitador de caminho

Godot only supports / as a path delimiter. This is done for portability reasons. All operating systems support this, even Windows, so a path such as C:\project\project.godot needs to be typed as C:/project/project.godot.

Caminho de recursos

Ao acessar recursos, usar o layout do sistema de arquivos do sistema operacional da máquina pode ser incômodo e não portátil. Para resolver este problema, o caminho especial res:// foi criado.

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

Este sistema de arquivos é para leitura e escrita somente quando se executa o projeto localmente a partir do editor. Quando exportado ou quando executado em dispositivos diferentes (como em telefones ou consoles ou executando a partir de DVD), o sistema de arquivos se tornará somente leitura e a gravação não será mais permitida.

Caminho do usuário

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. This path resolves differently depending on the OS the project is running on. Local path resolution is further explained in Data paths.

Sistema de arquivos da máquina

Alternativamente, os caminhos do sistema de arquivos da máquina também podem ser usados, mas isso não é recomendado para um produto a ser lançado, já que esses caminhos não têm garantia de funcionar em todas as plataformas. No entanto, o uso de caminhos do sistema de arquivos da máquina pode ser útil ao escrever ferramentas de desenvolvimento no Godot.

Desvantagens

Existem algumas desvantagens nesse desenho simples do sistema de arquivos. A primeira questão é que a movimentação de ativos (renomeá-los ou movê-los de um caminho para outro dentro do projeto) quebrará as referências existentes a esses ativos. Essas referências terão que ser redefinidas para apontar para o novo local do ativo.

Para evitar isso, faça todas as suas movimentações, exclusões e renomeações de dentro do Godot, no painel Arquivos. Nunca mova ativos de fora do Godot, ou as dependências terão que ser consertadas manualmente (Godot detecta isso e lhe ajuda a consertá-las de qualquer maneira, mas por que seguir o caminho mais difícil?).

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.

É recomendado que sua equipe defina claramente uma convenção de nomenclatura ao arquivos ao trabalhar com Godot. Uma convenção simples é apenas permitir nomes de arquivos e caminhos em minúsculas.