Здравствуйте! Хотелось бы представить на данном сайте простой графический движок команды Perfect Light с открытым исходным кодом. Движок выводит графику на экран средствами Canvas в Delphi и ориентирован, прежде всего, на начинающих разработчиков и новичков в программировании, желающих разобраться в тонкостях этого нелегкого дела. Perfect Canvas имеет встроенные Камеру (поддерживающую некоторые интересные эффекты), Таймер и Хранилище графики (обеспечивающее удобную загрузку .bmp и .jpg-изображений, а также, отслеживающее возможность повторной загрузки объектов). В данный момент движок находится в разработке: если мы будем уверены в том, что это, действительно, кому-то нужно, мы обязательно продолжим процесс разработки и дадим ему новые возможности - обо всех идеях и найденных ошибках вы можете сообщать нам в теме, посвященной Perfect Canvas на официальном сайте нашей команды.
Хотелось бы, также, упомянуть в данном сообщении и о второй разработке нашей команды в связке с описываемым движком, и потому, частично относящейся и к данной теме. Это гибкая и продвинутая Система частиц Perfect Particle 2, в настоящий момент, также, находящаяся на стадии доработки. Система ориентирована, прежде всего, на использование в 2D-играх с крупными графическими библиотеками (OpenGL, DirectX), но в недавнее время нами было внесено одно довольно важное изменение - мы отвязали ее от конкретного используемого в проекте графического движка. И для демонстрации новых возможностей Perfect Particle 2 был выбран тот самый движок Perfect Canvas. Это уточнение делает движок еще более значимым, ведь с хорошей Системой частиц, работающей с ним, есть возможность создавать более серьезные и красивые игры! Таким образом, данный движок будет полезен и некоторым инди-разработчикам. Ниже представлены скриншоты из окна редактора Perfect Particle 2 (OpenGL), а также, скриншоты тестовой программы, выводящей рассчитанные в Perfect Particle 2 Частицы на Canvas средствами Perfect Canvas:
Рад сообщить о новых изменениях в проекте. Прежде всего, движок теперь называется Perfect Engine - он значительно расширен и доработан.
Разумеется, как и прежде, Perfect Engine ориентирован, в большей степени, на изучение начинающими программистами, желающими на простых примерах разобраться в устройстве графических движков, потому, распространяется с открытым исходным кодом для некоммерческого использования в любых целях. Код Движка максимально упрощен и прокомментирован. Perfect Engine, также, будет полезен и более продвинутым пользователям в качестве инструмента, призванного облегчить процесс вывода графики в любых (а не только игровых) приложениях.
Основная философия Движка поменялась - именно поэтому он и сменил свое название - он был разделен на две основные части: сам Движок, отвечающий за всю предварительную подготовку и хранение графических ресурсов и Рендер, выводящий эту графику на экран. Данное нововведение было призвано расширить круг используемых Движком графических библиотек за счет возможности привязки к любой из них через специально создаваемые Рендеры.
Рендер - это модуль, обеспечивающий взаимодействие с набором стандартных функций вывода графики, реализованных в Движке. Переназначая при инициализации пустые функции Движка на свои, Рендер управляет всем процессом загрузки текстур в память и вывода их на экран, в то время, как сам Движок берет на себя все подготовительные работы. Более подробно об устройстве Perfect Engine можно почитать на сайте нашей команды, а также, в соответствующей теме, посвященной Perfect Canvas - об общих элементах структуры, характерных для обоих Движков.
Тестовая программа, представленная в данной теме - переработанная тестовая программа Perfect Canvas, демонстрирующая некоторые новые возможности Perfect Engine (перейти с одного Движка на другой можно, заменив всего несколько строк кода в своей программе). Одна из таких возможностей - рендер в текстуру - демонстрируется уменьшенным изображением кадра в правом верхнем углу экрана.
Цитата
В представленной тестовой программе основное изображение разбито на несколько частей - перемещая их при помощи левой кнопки мышки, можно собрать исходное изображение (тест возможности разбиения изображения на кадры). Правой кнопкой мышки производится плавное перемещение камеры (pSlide), при этом все объекты кроме текста вверху подвластны ее воздействию. Нажатие кнопки 'S' на клавиатуре заставляет камеру дрожать.
К сожалению, исходный код Движка еще требует некоторых доработок и будет выложен сюда несколько позже. Также, хотелось бы отметить, насколько легким остался процесс инициализации Perfect Engine, несмотря на все его нововведения. Для инициализации Движка в вашей программе и подготовки его к работе необходимо выполнить следующий минимальный объем действий:
Код
//Событие вывода графики Procedure pDraw(); begin
end; //Создание формы procedure TMyForm.FormCreate(Sender: TObject); begin vEngine := peRenderInitialize(Handle, ClientWidth, ClientHeight); vEngine.onDraw := pDraw; end; //Уничтожение формы procedure TMyForm.FormDestroy(Sender: TObject); begin peRenderDestroy(); end;
Подводя итоги всего вышесказанного, можно заметить, что, благодаря своей структуре, Движок теперь, помимо учебной функции, имеет реальные возможности расширения в сторону любых графических библиотек. Замена Рендера осуществляется простой заменой модуля в разделе Uses вашей программы, что дает возможность компилировать свои проекты для разных графических библиотек без любого вмешательства в исходный код программы. А если учесть недавнее нововведение в Perfect Particle 2, также, позволяющее Системе выводить рассчитанные Частицы любыми средствами вывода, Perfect Engine становится еще более интересным для рассмотрения.
Добавлено (02.10.2014, 22:00) --------------------------------------------- Движок обновлен. На данный момент добавлена возможность сохранения содержимого буфера в файл (Скриншот) - самим сохранением управляет, разумеется, Рендер, Движок лишь вызывает соответствующую функцию в момент полной готовности кадра. Из планов на ближайшее будущее - усовершенствование математической модели Движка в плане более точной проверки на попадание объектов в область экрана.
С настоящего момента имеется возможность скачать исходный код Движка и код тестовой программы, реализующей его возможности. Скачать исходный код самого Движка можно по прямой ссылке ниже, тестовая программа выложена в первом сообщении официальной темы Perfect Engine на нашем форуме. Там же всегда можно будет скачать самые последние версии всех файлов, относящихся к Движку.
Дата: Понедельник, 06.10.2014, 11:57 | Сообщение # 4
( Не ленимся =) )
Сообщений: [1839]
SaiLight, Если движок продолжит совершенствоваться и в дальнейшем, то добавлю в список игровых движков. Рендер и апи привязаны к Windows или используются обертки и абстрактные методы, я к тому что, у пользователей Lazarus будет возможность безболезненно произвести компиляцию движка под Linux, Mac и.т.д. ? Если что, Lazarus - кросспалтфоменный аналог Delphi: http://make-games.ru/load....1-0-832