ファイルシステム

はじめに

ファイルシステムは、アセットの保存方法とアクセス方法を管理します。また、適切に設計されたファイルシステムにより、複数の開発者が共同作業中に同じソースファイルとアセットを編集できます。 Godotは、すべてのアセットをファイルシステムのファイルとして保存します。

実装

ファイルシステムはディスク上にリソースを格納します。スクリプトからシーンPNGイメージに至るまであらゆるものがエンジンのリソースとなります。ディスク上のほかのリソースを参照するプロパティーがリソースに含まれている場合は、それらのリソースへのパスも含まれます。リソースに組み込みのサブリソースがある場合、そのリソースはバンドルされたすべてのサブリソースとともに1つのファイルに保存されます。たとえば、フォントリソースは多くの場合、フォントテクスチャと一緒にバンドルされています。

Godot ファイルシステムは、メタデータファイルの使用を回避します。既存のアセットマネージャーやVCS(バージョン管理システム)は、私たちが実装できるものよりも優れているので、GodotはSVN、Git、Mercurial、Perforceなどと一緒に作業出来るように最善を尽くします。

ファイルシステムの内容例:

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

project.godotファイル

The project.godot file is the project description file, and it is always found at the root of the project. In fact, its location defines where the root is. This is the first file that Godot looks for when opening a project.

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 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.

リソースパス

リソースにアクセスするときに、ホストOSファイルシステムのレイアウトを使用すると、面倒で移植性に欠けることがあります。この問題を解決するために、特別なパス 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. This path resolves differently depending on the OS the project is running on. Local path resolution is further explained 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.

Godotを使用する場合、ファイルの命名規則をチーム内で明確に定義することをお勧めします。簡単なフールプルーフ(間違い防止)用の規則の1つは、小文字のファイル名とパス名のみを許可することです。