Organização do projeto

Introdução

Uma vez que Godot não tem nenhuma restrição na estrutura do projeto ou uso do sistema de arquivos, organizar arquivos enquanto aprendendo a engine pode parecer desafiador. Este tutorial sugere um fluxo de trabalho que deve ser um bom ponto de início. Também cobriremos o uso de controle de versão com Godot.

Organização

Godot é baseado em cenas por natureza, e usa o sistema de arquivos como ele é, sem metadados ou um banco de dados de assets.

Ao contrário de outras engines, muitos recursos são contidos dentro da própria cena, então a quantidade de arquivos no sistema de arquivos é consideravelmente mais baixa.

Considerando isso, o modo mais comum de lidar com isso é agrupar recursos com as cenas, assim, quando um projeto cresce, ele fica mais gerenciável.

Como exemplo, normalmente é possível colocar em uma única pasta seus ativos básicos, como imagens de sprite, malhas de modelos 3D, materiais e música, etc. Eles podem então usar uma pasta separada para armazenar níveis construídos que os utilizam.

/project.godot
/docs/.gdignore  # See "Ignoring specific folders" below
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn

Guia de Estilo

Para manter a consistência entre os projetos, nós recomendamos estas seguintes diretrizes:

  • Use snake_case para nomes de pastas e arquivos (com exceção de scripts C#). Isto evita os problemas de distinção entre maiúsculas e minúsculas que podem surgir após a exportação de um projeto no Windows. Os scripts C# são uma exceção a essa regra, pois a convenção é nomeá-los após o nome da classe que deve estar em PascalCase.

  • Use PascalCase para nomes de nós, pois isso combina com a caixa embutida do nó.

  • Em geral, mantenha os recursos de terceiros em uma pasta addons / de nível superior, mesmo se eles não forem plugins do editor. Isto torna mais fácil rastrear quais arquivos são de terceiros. Existem algumas exceções a esta regra; por exemplo, se você usar recursos de jogo de terceiros para um personagem, faz mais sentido incluí-los na mesma pasta que as cenas e scripts dos personagens.

Importando

Versões do Godot anteriores à 3.0 faziam o processo de importação dos arquivos fora do projeto. Embora isto possa ser útil em grandes projetos, isso resultou em problemas de organização para a maioria dos desenvolvedores.

Por causa disso, os assets agora são importados de dentro da pasta do projeto de forma transparente.

Ignorando pastas específicas

Para evitar que Godot importe arquivos contidos em uma pasta específica, crie um arquivo vazio chamado .gdignore na pasta (o início . é necessário). Isso pode ser útil para acelerar a importação inicial do projeto.

Nota

Para criar um arquivo cujo nome começa com um ponto no Windows, você pode usar um editor de texto como Notepad++ ou usar o seguinte comando em um prompt de comando: type nul > .gdignore

Uma vez que a pasta é ignorada, os recursos dessa pasta não podem mais ser carregados usando os métodos load() e preload().

Ignorar uma pasta também irá escondê-la automaticamente do dock FileSystem, que pode ser útil para reduzir a desordem.

Sensibilidade de caixa

Windows and recent macOS versions use case-insensitive filesystems by default, whereas Linux distributions use a case-sensitive filesystem by default. This can cause issues after exporting a project, since Godot's PCK virtual filesystem is case-sensitive. To avoid this, it's recommended to stick to snake_case naming for all files in the project (and lowercase characters in general).

Nota

Você pode quebrar esta regra quando os guias de estilo dizem o contrário (como o guia de estilo C#). Ainda assim, seja consistente para evitar erros.

On Windows 10, to further avoid mistakes related to case sensitivity, you can also make the project folder case-sensitive. After enabling the Windows Subsystem for Linux feature, run the following command in a PowerShell window:

# To enable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> enable

# To disable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> disable

If you haven't enabled the Windows Subsystem for Linux, you can enter the following line in a PowerShell window running as Administrator then reboot when asked:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux