Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

File system

Introduzione

Un file system gestisce come le risorse sono memorizzate e come vi si accede. Un file system ben progettato permette anche a più sviluppatori di modificare gli stessi file e risorse sorgente mentre si collabora. Godot memorizza tutte le risorse come file nel suo file system.

Implementazione

Il file system memorizza le risorse su disco. Tutto, da uno script a una scena o un'immagine PNG, è una risorsa per il motore. Se una risorsa contiene proprietà che fanno riferimento ad altre risorse su disco, sono inclusi anche i percorsi a tali risorse. Se una risorsa include sotto-risorse incorporate, la risorsa viene salvata in un singolo file insieme a tutte le sotto-risorse raggruppate. Ad esempio, una risorsa font è spesso raggruppata insieme alle texture del font.

Il file system di Godot evita di usare file di metadati. I gestori di risorse e VCS esistenti sono migliori di qualsiasi cosa possiamo implementare, quindi Godot fa del suo meglio per integrarsi con Subversion, Git, Mercurial, ecc.

Esempio di contenuto di un file system:

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

project.godot

Il file project.godot è il file di descrizione del progetto, e si trova sempre alla radice del progetto. Infatti, la sua posizione definisce dove si trova la radice. Questo è il primo file che Godot cerca quando apre un progetto.

Questo file contiene la configurazione del progetto in testo semplice, usando il formato win.ini. Anche un progetto.godot vuoto può funzionare come definizione di base di un progetto vuoto.

Delimitatore di percorso

Godot supporta solo / come delimitatore di percorso. Questo è fatto per ragioni di portabilità. Tutti i sistemi operativi lo supportano, anche Windows, quindi un percorso come C:\project\project.godot deve essere digitato come C:/project/project.godot.

Percorso delle risorse

Per accedere alle risorse, utilizzare la struttura del file system del sistema operativo host può risultare macchinoso e non portabile. Per risolvere questo problema, è stato creato il percorso speciale res://.

Il percorso res:// punterà sempre alla radice del progetto (dove si trova project.godot, quindi res://project.godot è sempre valido).

Questo file system è di in lettura-scrittura solo quando il progetto viene eseguito localmente dall'editor. Quando viene esportato o eseguito su dispositivi diversi (come telefoni o console, oppure da DVD), il file system diventerà di sola lettura e la scrittura non sarà più consentita.

Percorso dell'utente

La scrittura su disco è comunque necessaria per attività come il salvataggio dello stato di gioco o il download di pacchetti di contenuti. A tal fine, il motore garantisce che ci sia un percorso speciale user:// sempre scrivibile. Questo percorso viene risolto diversamente a seconda del sistema operativo su cui è in esecuzione il progetto. La risoluzione dei percorsi locali è ulteriormente spiegata in Percorsi di file nei progetti di Godot.

File system dell'host

Alternativamente, è possibile utilizzare anche i percorsi del file system host, ma non è consigliato per un prodotto rilasciato, poiché non è garantito che tali percorsi funzionino su tutte le piattaforme. Tuttavia, può essere utile sfruttare tali percorsi quando si scrivono strumenti di sviluppo in Godot.

Svantaggi

Questa struttura del file system presenta alcuni svantaggi. Il primo problema è che lo spostamento di risorse (rinominandole o spostandole da un percorso all'altro dentro il progetto) rovinerà i riferimenti esistenti a tali risorse. Sarà necessario ridefinire questi riferimenti affinché puntino alle nuove posizioni delle risorse.

Per evitarlo, effettua tutte le operazioni di spostamento, eliminazione e rinomina direttamente da Godot, nel pannello Filesystem. Quando elimini file in Godot, apparirà una finestra di conferma con l'elenco di tutti i file selezionati e delle scene che dipendono da essi. Non spostare mai risorse dall'esterno di Godot, altrimenti dovrai correggere manualmente le dipendenze (Godot le rileva e aiuta comunque a risolverle, ma perché complicarsi la vita?).

Il secondo problema è che, in Windows e macOS, i nomi di file e percorsi non fanno distinzione tra maiuscole e minuscole. Se uno sviluppatore che lavora in un file system host senza questa distinzione salva una risorsa come myfile.PNG, ma poi le fa riferimento come myfile.png, funzionerà correttamente sulla sua piattaforma, ma non su altre piattaforme, come Linux, Android, ecc. Questo può valere anche per i file binari esportati, che utilizzano un pacchetto compresso per archiviare tutti i file.

Si raccomanda che il team definisca chiaramente una convenzione di denominazione per i file quando lavora con Godot. Una convenzione a prova di errore è quella di consentire solo nomi di file e percorsi in minuscolo.