Relict Engine: Файловая система и DevLog 20250618
Решил все таки отложить работу над рендером и заняться тем, что в этот рендер передавать, т.е. Ассетами (от слова ass, хе-хе). А для ассетов нужна файловая система.
В Relict Engine предусмотрено две файловые системы. Первая - системная (SystemFS) - это обычный каталог с обычными же файлами, которые движок грузит как есть (ну почти)
Вторая - т.н. RAT Packed FS, или Relict AsseT Packed File System. Она представляет собой нечто, отдаленно похожее на pak Анрила, но работает несколько иначе. О ней подробнее расскажу позже отдельным постом.
Каждая файловая система представляет собой отдельный класс в пространстве имен Relict::FS и должна поставлять (кроме логичных Find, Load итд) два основных метода Mount и uMount. Mount монтирует каталог (или файл, или сетевой ресурс) в т.н. точку монтирования, и представляет файловую структуру в виде posix подобного дерева, где корень дерева - это "/". uMount, соответственно, эту точку монтирования удаляет.
Рулит этим всем менеджер, через который мы и будем загружать файлы, ассеты, и прочее согласно выставленным приоритетам. Если файла в первой файловой системе не находится, то будем смотреть во второй, и так, пока файл не будет найден, или кончится список подключенных файловых систем. Приоритеты, в свою очередь, выставляются в конфиг файле и имеют вот такой формат:
Краткий список изменений:
Переделан Атом Tickable (но все еще он работает не так, как мне хочется)
AssetManager для управления ассетами.
Добавлен интерфейс IAsset для прототипирования классов ассетов.
Добавлен механизм привязки класса ассета к MagicNumber файла ассета
Добавлен класс FSManager для управления файловыми системами
Добавлен интерфейс IFileSystem для прототипирования классов файловых систем
Добавлены классы SystemFS и RATPackFS
Все интерфейсы собраны в подкаталог Interface для удобства
Добавлена возможность инициализировать переменные массивы через атом Configable
Новые типы переменных: CVT_ABOOL, CVT_AINTEGER, CVT_ANUMBER и CVT_ASTRING
Исправлен порядок инициализации early классов, т.к. они могли быть созданы до того, как будут прочитаны конфиги.

Файловые системы классические без температуры данных и новомодного s3?