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.

ファイルシステム

はじめに

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

実装

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

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

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

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

project.godotファイル

project.godot ファイルはプロジェクト記述ファイルであり、常にプロジェクトのルートにあります。というより、これが置かれた場所にルートが設定されます。これは、プロジェクトを開くときにGodotが検索する最初のファイルです。

このファイルには、win.ini形式を使用したプロジェクト構成がプレーンテキストで含まれています。空の project.godot であっても、空白のプロジェクトの基本的な定義として機能します。

パス区切り文字

Godotでは、パスの区切り文字として / だけを使用できます。これは移植性のためです。Windowsを含め、すべてのオペレーティングシステムがこれをサポートしているため、パスは C:\project\project.godot ではなく C:/project/project.godot と入力する必要があります。

リソースパス

リソースにアクセスするときに、ホストOSファイルシステムのレイアウトを使用すると、面倒で移植性に欠けることがあります。この問題を解決するために、特別なパス res:// が作成されました。

パス res:// は常にプロジェクトルートを指します (project.godot がある場所なので、 res://project.godot は常に有効です)。

このファイルシステムは、エディタからプロジェクトをローカルで実行する場合にのみ、読み取り/書き込み可能になります。エクスポートする場合、または異なるデバイス(スマートフォンやコンソール、DVDなど)で実行する場合、ファイルシステムは読み取り専用になり、書き込みは許可されなくなります。

ユーザーパス

ゲームの状態の保存やコンテンツパックのダウンロードなどのタスクには、ディスクへの書き込みが引き続き必要です。このため、エンジンには特別なパス user:// があり、いつでも書き込みが出来ることを確保しています。このパスの解決方法は、プロジェクトが実行されているOSによって異なります。ローカルパスの解決については、Godotプロジェクトのファイルパスで詳しく説明しています。

ホストファイルシステム

また、ホストファイルシステムパスも使用できますが、これらのパスがすべてのプラットフォームで動作するとは限らないため、リリースする製品にはお勧めできません。ただし、Godotで開発ツールを作成する場合は、ホストファイルシステムパスを使用すると便利です。

デメリット

このファイルシステム設計にはいくつかの欠点があります。最初の問題は、アセットを移動すること(プロジェクト内でアセットの名前を変更したり、あるパスから別のパスにアセットを移動したりする)によりこれらのアセットへの既存の参照が失われることです。これらの参照は新しいアセットの場所を指すように再定義する必要があります。

To avoid this, do all your move, delete and rename operations from within Godot, on the FileSystem dock. When you delete files in Godot, it will prompt you with a confirmation dialog listing all selected files and any scenes that depend on those files. Never move assets from outside Godot, or dependencies will have to be fixed manually (Godot detects this and helps you fix them anyway, but why go the hard route?).

2つ目は、WindowsおよびmacOSでは、ファイル名とパス名は大文字と小文字が区別されないことです。大文字と小文字を区別しないホストファイルシステムで作業している開発者がアセットを「myfile.PNG」として保存してから「myfile.png」として参照する場合、プラットフォームでは正常に動作しますが、LinuxやAndroidなどの他のプラットフォームでは動作しません。 これはおそらく、すべてのファイルが圧縮されたパッケージを使用する、エクスポートされたバイナリにも現れるでしょう。

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