Стандарт иерархии директорий определяет логику организации файловой структуры в проекте, а также в самом Core. Так как Core и использующая его игра являются отдельными проектами, то верхний уровень иерархии директорий будет выглядеть следующим образом:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1fbff8fc-a5cd-42af-82d9-f0230b5af110/969B7B31-AED1-4334-8E42-9BA0CE0EC731.png

Иерархия директорий Core

Файловая структура Core соответствует структуре страниц действующей документации. Шаблон иерархии выглядит следующим образом:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/94ee05cb-014c-4dde-a5cc-48e4cf36ead4/A8BE525D-E771-4512-B025-82D24B6C169E.png

Аналогично действующей документации, в корневой директории расположены основные поддиректории Fundamentals и Systems. Структура вложенных папок у всех поддиректорий идентична. Сначала идёт папка, имя которой соответствует элементу Core (например, DirectoryHierarchyStandard), внутри которой расположены все относящиеся к нему файлы. Стандарт не обязует к какой-либо определённой иерархии папок ниже уровня элемента Core, однако рекомендуется производить разбиение на подпапки Core и Example, внутри которых будут располагаться обязательные и демонстрационные ассеты соответственно.

В каждой директории начиная с верхнего уровня и заканчивая уровнем элемента Core должна находиться ссылка на соответствующую страницу действующей документации (как это сделано, например, внутри директории данного стандарта):

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fd445fe2-8129-44d4-a4ac-98ae6546a6cd/90C8BD16-71D8-407F-9E49-2094D3106140.png

Иерархия директорий Game

Логика организации файловой структуры проекта заключается в определении всех игровых сущностей и их условного иерархического подчинения. Например, если в проекте присутствует игровая сущность "персонаж", для которой имеется несколько экземпляров сущности "костюм", то:

  1. Ассеты, относящиеся к сущности "персонаж" будут расположены внутри папки Character.
  2. Ассеты, относящиеся к сущности "костюм", будут расположены внутри папки Suit.
  3. Папка Suit будет находиться внутри папки Character, отображая зависимость сущности "костюм" от сущности "персонаж".

Если сущность имеет несколько экземпляров и при этом есть часть общих ассетов в пределах сущности, то рекомендуется поместить общие ассеты в папку Base, а для каждого экземпляра создать собственную папку.

В случае если достигнут нижний уровень декомпозиции проекта на сущности, то рекомендуется отструктурировать на данном уровне файлы по типам (то есть Meshes, Materials, Textures, Scenes и т.д.).

Стандарт не регламентирует какую-либо опеделённую иерархию директорий Game, поскольку проекты использующие Core могут различаться. В качестве примеров организации иерархии можно изучить игровые шаблоны в проекте Instarion Core, а также рассмотреть следующую демонстрационную схему: