Внутренняя структура движкаОпубликовано admin в Пт, 15/01/2010 - 14:45 |
Некоторое время назад, лет 5-6 когда я только начинал программировать я начал писать этот движок. Он эволюционировал по следующей схеме: DOS(защищенный режим)->WinAPI->SDL->GLUT->самопальная система для создания окон(OpenGL)->Кросплатформенный с использованием glfw и OpenGL . Изначально движок разрабатывался как 2Д что сохранено по сей день, его цель – легкое создание 2Д игр.
MagicEngine построен на модульной архитектуре. Движок состоит из нескольких модулей:
- dynamicloader – предназначен для динамической загрузки библиотек. Поддерживает кеширование загруженных быблиотек и символов чтобы не грузить их несколько раз
- signals – библиотека сигналов, обеспечивает связь между различными объектами с помощью отсылки сигналов в слоты. Идея позаимствована из QT и дополнена до требуемой для моих нужд функциональности.
- config – отвечает за предоставление средств хранения/загрузки/сохранения конфигурационных файлов, не привязан ни к какому формату файлов.
- video – отвечает за видео интерфейс, предоставляет драйверо-независимый интерфейс для совершения операций с видео данными. Умеет работать со спрайтами, поверхностями и частицами. Также видео модуль отвечает за ввод данных от пользователя. Он состоит из нескольких под модулей: video – занимается выводом данных и получением событий от пользователя
- imageloader – занимается загрузкой различных видов графических изображений и представление их в виде, понятном модулю video
- textrenderer – занимается рендерингом текста
- video – занимается выводом данных и получением событий от пользователя
- imageloader – занимается загрузкой различных видов графических изображений и представление их в виде, понятном модулю video
- textrenderer – занимается рендерингом текста
- sceneengine – сердце движка, модуль, использующий все остальные. Предоставляет высокоуровневый доступ к остальным интерфейсам, работает на уровне игровых сущностей, кусков интерфейса.