Здравствуйте! Хотелось бы представить на данном сайте простой графический движок команды 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
( Не ленимся =) )
Сообщений: [1854]
SaiLight, Если движок продолжит совершенствоваться и в дальнейшем, то добавлю в список игровых движков. Рендер и апи привязаны к Windows или используются обертки и абстрактные методы, я к тому что, у пользователей Lazarus будет возможность безболезненно произвести компиляцию движка под Linux, Mac и.т.д. ? Если что, Lazarus - кросспалтфоменный аналог Delphi: http://make-games.ru/load....1-0-832 Работаю над Каваей.
Конструктор, спасибо, Движок развивается и, думаю, будет развиваться дальше. Во всяком случае, понемногу появляются люди, заинтересованные в его доработке, а это - основной критерий развития проекта. В данный момент Perfect Engine полностью привязан к Windows, но в дальнейшем, если будет такая необходимость, можно будет подумать над кроссплатформенностью Движка.
Добавлено (28.05.2015, 22:22) --------------------------------------------- Всем привет! Рад поделиться на данном форуме результатами огромной работы, проделанной нами со SpectreZ'ом в рамках проекта по усовершенствованию графического движка Perfect Engine. Как выяснилось некоторое время назад, движок, все же, пользуется некоторым спросом: на данный момент с его использованием написано уже несколько проектов, среди которых имеется, ко всему прочему, и один коммерческий. Также, ко мне не раз поступали запросы об ускорении выпуска новой версии Perfect Engine, в которой, как я обещал, ожидали увидеть реализацию OpenGL-рендера.
В любом случае, работа подошла к концу, и я рад поделиться на данном форуме результатами наших трудов. Итак, сначала обо всем вкратце...
1. Добавлен OpenGL-рендер 2. Исправлены и улучшены некоторые функции движка 3. Открыт официальный сайт поддержки движка 4. Написан демо-проект - логическая игра Crown
Теперь - немного подробнее...
OPENGL
Perfect Engine теперь обладает двумя рендерами - Canvas и OpenGL, выбор одного из которых можно осуществлять, например, при старте программы. Напомню, что движок полностью отвязан от конкретного модуля вывода, а это значит, что при желании любой из них вы можете написать сами. Программный код с использованием функций Perfect Engine работает без единого изменения с любым используемым рендером - достаточно только заменить требуемый модуль в разделе 'uses'. Проблемы с полупрозрачными изображениями в GDI-рендере и иные подобные им решаются за счет введения нового свойства UsedRender, отображающего имя используемого в данный момент модуля.
Вот некоторые из особенностей, реализованных в новом OpenGL-рендере, которые невозможно обойти стороной:
Поддержка png-изображений
Поддержка любых ttf-шрифтов (системных или подключаемых)
Возможность генерации текстуры шрифта в памяти при загрузке программы
Для работы данного рендера требуется библиотека pngImage, которую можно будет скачать по ссылке, приведенной ниже или с официального сайта движка, а также, модули dglOpenGL.pas и dglTextures.pas (модернизированный SpectreZ'ом).
Из недостатков хотелось бы отметить отсутствие поддержки VBO, FBO, шейдеров и иных продвинутых технологий. Надеюсь, в будущих версиях движка эти недостатки будут устранены.
ИСПРАВЛЕНИЯ
Полный список всех изменений в текущей версии Perfect Engine вы можете увидеть в модуле PerfectEngine.pas, здесь же хотелось бы коснуться лишь, на мой взгляд, одного из наиболее важных нововведений. Теперь вместо типа TColor движок использует новый тип данных, хранящий в себе кроме значения цвета и значение прозрачности - TAlphaColor, а также, имеет встроенный набор функций для работы с этим типом (peRoutine.pas).
Почему же данное нововведение было особенно мною выделено? Для упрощения работы с цветом написана вспомогательная программа Perfect Palette, реализующая цветовую палитру с возможностью выбора цвета в пространстве HSL и получения его кода в формате, пригодном для использования в Photoshop, а также, в TAlphaColor-формате. Все усовершенствования вносились в Perfect Engine при разработке использующих его проектов. Я лично сотрудничал с разработчиком коммерческого проекта, когда он сообщил мне о желании использовать Perfect Engine для упрощения вывода графики - таким образом уже в тот момент были исправлены некоторые серьезные проблемы в его работе.
Если вы хотите использовать Perfect Engine в своих проектах, обязательно свяжитесь со мной в Контакте (SaiLight) или на официальном сайте движка - возможно, наше сотрудничество пойдет на пользу обоим проектам.
САЙТ
Открыт официальный сайт поддержки Perfect Engine. Основное его назначение - быстрое предоставление информации по всем функциям движка. Для этого в правом верхнем углу сайта расположена строка поиска - введите в нее полное или частичное название функции, нажмите ENTER, и вы получите исчерпывающую информацию по вашему запросу. Список доступных функций со временем будет пополняться. Также, воспользовавшись гостевой книгой, вы можете задать любой интересующий вас вопрос о работе с Perfect Engine и сообщить обо всех багах, найденных в нем и идеях по его усовершенствованию.
А еще здесь будут собираться все проекты, использующие наш движок. Если вы создали игру с его использованием - обязательно сообщайте о ней нам, и мы разместим ее на своем сайте!
ДЕМО
Ну и последнее. Наконец, удалось выделить немного свободного времени для написания более или менее серьезного игрового проекта с использованием Perfect Engine. Игра называется Crown и, также, распространяется с открытым исходным кодом, и оттого, как мне кажется, будет весьма интересна каждому, кто желал бы разобраться в устройстве подобных игр. А для остальных - просто интересный способ убить время, насладившись необычным взглядом команды Perfect Light на идею логической игры 'Три в ряд'.
Всем спасибо за внимание. Ниже привожу прямые ссылки на архивы с движком, вспомогательными и демонстрационными проектами: