Dateisystem¶
Einführung¶
Ein Dateisystem verwaltet wie Assets gespeichert und auf diese zugegriffen wird. Ein gut gestaltetes Dateisystem erlaubt außerdem mehreren Entwicklern kollaborativ dieselben Dateien zu bearbeiten. Godot speichert alle Assets als Dateien im Dateisystem.
Implementierung¶
Das Dateisystem speichert Ressourcen auf der Festplatte. Alles, vom Script zu Szenen oder PNG Bildern sind Ressourcen für die Engine. Wenn eine Ressource Eigenschaften (Felder) besitzt welche andere Ressourcen im Dateisystem referenzieren so werden diese miteinbezogen. Wenn eine Ressource integrierte Sub-Ressourcen besitzt so werden diese Zusammen in einer einzigen Datei gebündelt gespeichert. Zum Beispiel Schriftarten werden oft mit dazugehörigen Schrift-Texturen für die Darstellung gebündelt.
Godots Dateisystem vermeidet die Nutzung von Meta-dateien. Vorhandene Dateiverwaltungen der Betriebssysteme oder Versionskontrollsysteme (Git, SVN, Mercurial, Perforce, etc.) sind in der Regel besser als alles was zusätzlich implementiert werden könnte, also versucht Godot sein bestes gut mit diesen zusammenzuarbeiten (auch wenn die Verwendung von Metadaten eigentlich nichts damit zu tun hat).
Beispiel von Dateisystem-Inhalten:
/project.godot
/enemy/enemy.tscn
/enemy/enemy.gd
/enemy/enemysprite.png
/player/player.gd
project.godot¶
Die project.godot
Datei ist die Projektdatei für Godot Projekte und befindet sich immer im Wurzelverzeichnis eines Projekts. Tatsächlich definiert der Ort dieser Datei sogar was als das Wurzelverzeichnis für das Projekt genutzt wird. Dies ist die erste Datei die Godot lokalisiert wenn ein Projekt geöffnet wird.
Diese Datei beinhaltet die Konfiguration des Projekts in direkter Text-ausführung unter nutzung des win.ini Formats. selbst eine leere project.godot
datei kann als Basis für ein leeres Projekt dienen.
Pfad-Trennzeichen¶
Godot unterstützt lediglich /
als Pfad-Trennzeichen. Dies wird aus Portabilitätsgründen so gehalten, denn alle Betriebssysteme unterstützen dies, sogar Windows, also muss ein Pfad wie C:project\project.godot
als C:/project/project.godot
angegeben werden.
Ressourcen-Pfad¶
Beim Zugriff auf eine Ressource kann das Dateisystem-Layout des Betriebssystems umständlich und unter Umständen nicht portabel sein. Um dieses Problem zu umgehen wurde der Spezialpfad res://
geschaffen.
Der Pfad res://
zeigt immer zur Wurzel des Projektverzeichnisses (wo project.godot
zu finden ist, also ist res://project.godot
immer gültig).
Das Dateisystem ist nur frei für Lese- und Schreibzugriffe wenn ein Projekt lokal im Editor ausgeführt wird. In Exporten (herausgeschriebenen Anwendungen) oder bei de Ausführung auf unterschiedlichen Geräten (wie Mobilgeräten, Konsolen oder schreibgeschützen Medien) wird das schreiben ins Dateisystem gesperrt und nur Lesen ist möglich.
Nutzer-Pfad¶
Schreiben ins Dateisystem wird dennoch oft benötigt, z.B. um Spielstände abzulegen oder Inhalts-Pakete herunterzuladen. Hierzu stellt die Engine einen Spezialpfad bereit: user://
, welcher immer beschreibbar ist. Dieser Pfad wird unter diversen Betriebssystemen zu unterschiedlichen tatsächlichen Pfaden aufgelöst. Lokale Pfadauflösung wird tiefer beschrieben in :ref: doc_data_paths.
Host Dateisystem¶
Alternativ können auch Host-Dateisystempfade genutzt werden, was allerdings nicht für herausgeschrieben Anwendungen empfohlen wird, da die Korrekte Funktion ihrere Nutzung nicht auf allen Plattformen garantiert werden kann. Dennoch kann es nützlich sein diese zur Entwicklung von Werkzeugen (tools) in Godot zu nutzen.
Nachteile¶
Es existieren auch Nachteile für diese simple Dateisystem-Gestaltung. Das erste Problem ist dass Verschieben von Assets (Umbenennen oder von einem Ordner in einen anderen innerhalb des Projekts verlegen) existierende Referenzen ungültig macht. Diese Referenzen müssen korrigiert werden so dass sie zum neuen Ort zeigen.
Um dies zu vermeiden sollten alle Aktionen wie Verschieben, Löschen oder Umbenennen innerhalb Godots (im Dateisystem-Dock) ausgeführt werden. Datein sollten nicht außerhalb Godots verschoben werden (Falls dies doch mal vorkommt wird Godot beim Beheben der Probleme versuchen behilflich zu sein. Aber Garantien können nicht gegeben werden, also warum den schweren weg gehen?).
Weiterhin ist es so, dass unter Windows und MacOS Dateien und Pfade in Groß- und Kleinschreibung nicht unterschieden werden. Wenn Entwickler auf einem dieser Systeme eine Datei als myfile.PNG
abspeichert und diese aber als myfile.png
referenziert wird dies vielleicht unter deren Betriebssystem funktionieren, aber nicht unter z.B. Linux, Android etc. Dies kann auch auf exportierte Binärdateien zutreffen, welche ein komprimiertes Format nutzen um Dateien unterzubringen.
Es wird empfohlen, dass Teams klare Namenskonventionen zur Arbeit in Godot festlegen. Eine simple, einfach einzuhaltende Regel ist Pfade und Dateinamen allesamt in Kleinschreibung zu halten.