見出し画像

個人的Godotフォルダ構成(ディレクトリ構造)


1.はじめに

 ゲーム開発をするうえで避けては通れないもの、それは「大量のファイルの管理」です。特にゲームエンジンを用いて開発する際は往々にして大量のファイルと格闘することになります。大量の画像、音声ファイル、スクリプト、シーン等々…これらを上手く整理しなければ、たちまちどこに何があるか分からなくなり、作業効率は大幅に落ちることになるでしょう。

2.そもそも管理しやすいフォルダ構成とは

 みなさんはどんな基準でフォルダ構成を作っているでしょうか?色々な基準はあると思いますが、大きく分けて次のような3つの観点があるのではないでしょうか?

  • ゲーム内で近い役割のファイルが近くのフォルダにくるようにする。

  • ファイルの種類ごとに分ける

  • ゲームのシーンごとにファイルを分ける

基本的にはこのどれかもしくは複数のルールにそってフォルダ構成を作っていくと思います。えっ!全部同じフォルダでごった煮にしてる!?

3.個人的な分類

 個人的には以下の手順で階層に分けて、フォルダを作ると良いと思います。

①ファイルの種類、役割で分ける。

 まずはファイルの種類、役割で分けます。私は下記のようなフォルダをまず作ります。

  • assets
    画像、音声、フォントなどを入れるためのフォルダです。
    このファイルの下には更にimgフォルダ、soundフォルダ、fontフォルダを作ります。

  • scene
    一番上の親となるシーンファイルを入れるためのフォルダです。いわゆるUnityのシーンファイルと同じ役割をするファイルを入れる場所

  • object(component)
    何かのシーンの子として配置するシーンファイルを入れるフォルダです。プレイヤーのシーンや敵キャラのシーンなど。いわゆるUnityのプレハブの役割をするファイルをいれる場所

  • system(utils)
    ゲームの土台的な役割やゲーム全般で使われるファイル(シーン遷移を管理するシーン、シーンのグローバル変数を担うシーン等)などを入れるフォルダです。AutoLoadに指定されるシーンフォルダなどが主な例です。

  • Style
    themeファイルやStyleBoxFlat等のUIなどの見た目を決めるファイルを入れるファイルです。

他にもスプライトフレームなど、新たなフォルダの種類が出てきた場合はそれらのフォルダを作ります。

②各フォルダ内でシーンごとに分ける

 次に各フォルダの中をシーンごとに分けます。,Titleシーンで使うファイルはTitleフォルダに、main_game_sceneシーンで使うファイルはmain_game_sceneフォルダにという具合です。
 複数のシーンで用いられるファイルなどは、その用途によって、UIフォルダやPlayerフォルダ、Enemyフォルダ、utilsフォルダなどを作り、例外として分類します。場合によっては一番外側のsystem(utils)フォルダに入れることも検討してもよいです。
 

 これらの手順で分類することにより、同じシーンで使うもの同士が自然と近くなり、また何かファイルを探す際も使われるシーンや役割から位置を予想しやすくなります。
 欠点としては、フォルダ数が増えてしまうことと、フォルダの種類が違う場合にファイル同士が離れてしまい、相対パスが長くなってしまうことです。(そもそもGodotにおいて相対パスを打つ機会はあまりないので気になりませんが。)

最終的にはこんな感じになる

4.まとめ

 フォルダ構成というのは人それぞれです。ファイルの形式、種類に関係なくシーンごとに分ける手法を好む人や、私以上に細かく分類する人もいます。最終的には各個人の好みに収束していくのかなと思います。この記事はあくまでもそれらの一例として考えていただければ幸いです。

Godot Japanのユーザーフォーラムにおいても、この話題について話されていたので参考文献としてリンクを張っておきます。

ここまで読んでいただきありがとうございました。


この記事が気に入ったらサポートをしてみませんか?