Чтоже такое MagicEngine который я использую в своей разработке.
Некоторое время назад, лет 5-6 когда я только начинал программировать я начал писать этот движок. Он эволюционировал по следующей схеме: DOS(защищенный режим)->WinAPI->SDL->GLUT->самопальная система для создания окон(OpenGL)->Кросплатформенный с использованием glfw и OpenGL . Изначально движок разрабатывался как 2Д что сохранено по сей день, его цель — легкое создание 2Д игр.
MagicEngine построен на модульной архитектуре. Движок состоит из нескольких модулей:
- dynamicloader — предназначен для динамической загрузки библиотек. Поддерживает кеширование загруженных быблиотек и символов чтобы не грузить их несколько раз
- signals — библиотека сигналов, обеспечивает связь между различными объектами с помощью отсылки сигналов в слоты. Идея позаимствована из QT и дополнена до требуемой для моих нужд функциональности.
- config — отвечает за предоставление средств хранения/загрузки/сохранения конфигурационных файлов, не привязан ни к какому формату файлов.
- video — отвечает за видео интерфейс, предоставляет драйверо-независимый интерфейс для совершения операций с видео данными. Умеет работать со спрайтами, поверхностями и частицами. Также видео модуль отвечает за ввод данных от пользователя. Он состоит из нескольких подмодулей:
- video — занимается выводом данных и получением событий от пользователя
- imageloader — занимается загрузкой различных видов графических изображений и представление их в виде, понятном модулю video
- textrenderer — занимается рендерингом текста
- sceneengine — сердце движка, модуль, использующий все остальные. Предоставляет высокоуровневый доступ к остальным интерфейсам, работает на уровне игровых сущностей, кусков интерфейса.
Напрямую модули незавязаны на какуюто одну библиотеку для выполнения своих функций, вместо этого они используют драйвера.
Драйвера в MagicEngine это отдельные сущности, которые занимаются низкоуровневой работой модуля, так есть драйвер GL_glfw, который занимается отрисовкой графики через OpenGL с использованием библиотеки glfw, существуют драйвера для загрузки png и jpg картинок, рендеринга ttf шрифтов и чтения конкретных форматов конфигов. Все драйвера загружаются во время выполнения и могут быть заменены аналогичными но делающими это через друго интерфейс ОС. Например одно время было два драйвера видео — libGL_glfw и libGL_mogul.
Любой из этих модулей может использоваться отдельно, конечно у них есть зависимости но они довольно маленькие.
Пожалуй это все по основной архитектуре MagicEngine, в дальнейшем я планирую написать серию статей по разбору внутренностей каждого из модулей в отдельности. Возможно люди смогут посоветовать интересные идеи которые я смогу внедрить в движок)
А движек сейчас под DOS работает?
admin Reply:
8 октября, 2008 at 16:56
Нет, DOS не рассматривается в качестве платформы вообще. Его сейчас ненайти, в нем нет 3Д ускорения.
Что такое? Попробуй тыкнуться на «2 комментария» в «мыслях об удобстве». У меня «not found» выдаёт 🙁
А я там отписаться хотел…
admin Reply:
1 ноября, 2008 at 20:41
Поправил. была бага связанная с переходом на постоянные ссылки. возможно еще где осталась