Godotエンジン公式チュートリアル和訳企画「ファイルシステム」

テキストベースの資料は必要

今回のファイルシステムの和訳でテキストベースの資料は必要だなとあらためて思いました。やはりHow toだけでなく、なぜそうなっているのかという詳細な話が絶対に必要になるので、テキストベースの資料をこれからもガンガン和訳して書いていきたいです。

以下和訳です

ファイルシステム

イントロダクション

ファイルシステムというのもエンジン開発においてホットなトピックです。ファイルシステムはリソースの保存方法とアクセス方法を管理するものです。よいデザインのファイルシステムは複数人でのソースファイルの編集や共同作業を簡単にするものだと考えています。

Godotエンジンのごく初期の、Godotと名付けられる以前のものを含むバージョンは、データベースを使って管理をしていました。素材はそこに保存されIDを割り振られていました。ローカルデータベースや、メタデータを保持したファイルなどの他の様々なアプローチも検討されましたが、結局単純なアプローチを採用されていました。そして今はGodotは全ての素材をファイルシステムの中のファイルとして保持しています。

実装

ファイルシステムはディスクにリソースを格納するシステムです。スクリプトからシーンやPNGイメージに至るまで、全てがエンジンのリソースとなっています。もしリソースがディスクにある他のリソースを参照するプロパティを保持していたら、そのリソースへのパスも含むことになります。リソースがサブリソースを保持している時、これはビルドインであると考えられます。そのようなリソースは全てのサブリソースと一緒に一つのファイルに格納されます。例えばフォントリソースはフォントのテクスチャと束ねられることが多いです。

Godotのファイルシステムでは、方針としてメタデータを使うことを避けています。この方針がある理由はシンプルで、既存のアセットマネージャーやVCSなどの方が私達が実装出来るどんなものよりも品質が高く、GodotはSVN、Git、Mercurial、Perforceなどに合わせるのがベストだからです。

ファイルシステムコンテンツの例

/engine.cfg
/enemy/enemy.scn
/enemy/enemy.gd
/enemy/enemysprite.png
/player/player.gd

engine.cfg

engine.cfgファイルはプロジェクトの説明が書かれたディスクリプションファイルで、いつもプロジェクトルートにあります。このファイルがある場所をルートとしてファイルシステムを考えているとも言います。プロジェクトを開く時に、Godotが最初に探すファイルです。

このファイルはwin.iniフォーマットにプレーンテキストとして格納されています。engine.cfgは、たとえ空でも空白のプロジェクトの基本的な定義ファイルとして機能します。

PATHの区切り記号

GodotはPATHの区切り記号として/のみをサポートしています。これには移植性を確保する目的があります。Windowsを含む全てのオペレーティングシステムがこれをサポートしています。ただしPATHはC:\project\engine.cfgのように書くのではなくC:/project/engine.cfgのように書く必要があります。

リソースパス

ホストOSのファイルシステムの配置を使うってリソースにアクセスすると不便で移植性の低いものになります。これの解決策として、特別なパスres://が作られました。

res://というパスは常にオブジェクトルートを指します。ここは、engine.cfgが位置する場所なのでres://engine.cfgはいつも有効なパスとなります。

このファイルシステムはプロジェクトがエディタ内で動いている時はReadとWriteのみの権限となります。別のデバイス、例えば携帯や、コンソールやDVDなどに向けてエクスポートされたり、実行されたりする時は、このファイルシステムへの書き込みは不可能となりReadオンリーの権限となります。

ユーザーパス

ゲームのセーブやコンテンツパックのダウンロードなど、さまざまなタスクのためにディスクへの書き込みが必要になることがあります。そのためにこのエンジンはuser://という常に書き込み可能な特別なパスを確保しています。

ホストファイルシステム

あえてホストファイルシステムを使うことも出来ますが、これは全てのプラットフォームで正常に機能することが保証出来ないため、実際にリリースする製品には推奨されません。しかし、Godotでデベロップメントツールを開発する時においてはホストファイルシステムはとても役に立ちます。

欠点

このシンプルなファイルシステムにはいくつか欠点があります。第一の課題は素材のリネームやパスの変更の際に既存の参照が機能しなくなると言うことです。新しい素材の場所を参照しなおさなければなりません。

第二に、WindowsやOS Xのファイルシステムがパス名の大文字と小文字を区別しないという点です。よって、これらのシステム下では、例えば”myfile.PNG”という素材を保存した時、”myfile.png”という参照でも動いてしまいます。LinuxやAndroidなどのシステムではこの参照は通用しません。このことは、既にパッケージ化されたバイナリファイルにも当てはまります。

Godotで開発をする時、チームで命名規則を付けておくことをおすすめします。ミス防止のためにファイルとパスの名前は全て小文字にしておくというシンプルな規則が良く使われます。

Add a Comment

メールアドレスの入力は任意です。(公開されることはありません)