По своей задумке это не должен быть убийца Godot, Unreal и т.д. по своей универсальности, удобству и функциональности. Я вижу этот проект как какой-то базовый фундамент движка (который я буду понимать "под капотом"), уже на основе которого я буду делать прототипы и сами игры. Т.е. в нем для этого уже будет базовая и оптимальная реализация игрового цикла, заготовки в архитектуре для мультиплеера, многопоточности и поддержки модов, уже какой-то набор функционала для работы с физикой, графикой, какой-то математикой и т.д.
- Игровой цикл с разделенной частотой обновления физики и всего остального:
physicsUpdate, update, render, deltaTime - Фиксированный
viewportпод разные разрешения экрана - Класс для работы с ini файлами:
INIFile - Класс логгер, а также главный логгер движка:
Logger, GameLogger -
- Пересмотреть реализацию от
Singletonв сторонуService Locator
- Пересмотреть реализацию от
- Класс для состояний игры:
GameState - Двойной буффер рендеринга
- Класс для сериализации (желательно в бинарном виде):
Serializable - Класс (и структура данных) для локализации (например для строки в зависимости от языка будет выводить нужную из списка, определенном в файле):
Localizable - Класс для слоев отрисовки:
RenderLayer - Подумать над специальным механизмом управлением памяти в движке
- Подумать над реализацией компонентной системы в архитектуре движка: классы компоненты, сущности являются контейнерами для компонентов
- Обработка событий
ObserverилиEvent Queue - Работа с медиа файлами: загрузка изображений, видео и аудио
- Простой UI для начала:
Button, Image, Label, TextBoxи т.д. - Реализация класса
Object, Entityи т.д. + подвязать под паттернPrototype -
State Machineдля определения логики состояний игровых обьектов или, например, анимаций этих объектов - Подумать о реализации простого физического движка, возможно через
ObserverиSingleton - Слои и маски для физического движка:
PhysicsLayerиPhysicsMask - Подумать о реализации и организации сцены/уровня и хранении в нем игровых объектов, вероятно через
Scene Graphи пространственное разбиение - Система активных в экране и неактивных за экраном игровых объектов
- Подумать над реализацией быстрой обработки и рендеринга карты из огромного кол-ва тайлов
- Подумать о реализации частичной многопоточности в движке: можно попытаться разделить некоторые компоненты движка по потокам, например физика, аудио и т.д
- Реализация поддержки пользовательских модификаций через
Lua