5 Внутренняя структура движка | nsws.ru
  • warning: preg_replace(): No ending delimiter '/' found in /srv/www/nsws.ru/includes/unicode.inc on line 345.
  • warning: preg_replace(): No ending delimiter '/' found in /srv/www/nsws.ru/includes/unicode.inc on line 345.
  • warning: preg_replace(): No ending delimiter '/' found in /srv/www/nsws.ru/includes/unicode.inc on line 345.

Внутренняя структура движка

Некоторое время назад, лет 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 – сердце движка, модуль, использующий все остальные. Предоставляет высокоуровневый доступ к остальным интерфейсам, работает на уровне игровых сущностей, кусков интерфейса.

Продолжение здесь: