Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 18:11   #1
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Восклицание Perfect Engine, графический движок


Здравствуйте. Для данного вопроса решил создать новую тему, так как, все же, Perfect Engine по внутренней структуре имеет довольно мало общего с Perfect Canvas, рассмотренном в одной из соседних тем. И хотя он, можно сказать, логично вытекает из своего предшественника, все же, является принципиально новым, отличным от него Движком.

Разумеется, как и прежде, 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 становится еще более интересным для рассмотрения.


Последний раз редактировалось SaiLight; 29.09.2014 в 18:17.
SaiLight вне форума Ответить с цитированием
Старый 02.10.2014, 12:44   #2
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Лампочка

Движок обновлен. На данный момент добавлена возможность сохранения содержимого буфера в файл (Скриншот) - самим сохранением управляет, разумеется, Рендер, Движок лишь вызывает соответствующую функцию в момент полной готовности кадра. Из планов на ближайшее будущее - усовершенствование математической модели Движка в плане более точной проверки на попадание объектов в область экрана.

С настоящего момента имеется возможность скачать исходный код Движка и код тестовой программы, реализующей его возможности. Скачать исходный код самого Движка можно по прямой ссылке ниже, тестовая программа выложена в первом сообщении официальной темы Perfect Engine на нашем форуме. Там же всегда можно будет скачать самые последние версии всех файлов, относящихся к Движку.

SaiLight вне форума Ответить с цитированием
Старый 02.10.2014, 12:59   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Бажит движок то .. в демке выбирает всегда самую дальнюю картинку если наложить друг на друга ...
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.10.2014, 13:22   #4
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию

WorldMaster, это проблема не Движка, а, скорее, тестовой программы - все изображения рисуются в том порядке, в котором они расположены в массиве - это значит, что самое первое изображение рисуется под всеми остальными. А проверка на попадание курсора прерывается при первом же попадании - это значит, что выбираться всегда будет самое дальнее.

Я знал об этой 'проблеме', но сознательно не стал ее исправлять - тестовая программа должна отображать возможности Движка, и я решил не загромождать ее лишним кодом. Возможно, в данном случае это могло быть неверным решением.
SaiLight вне форума Ответить с цитированием
Старый 02.10.2014, 13:43   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А о каких возможностях то идет речь?? Что-то я ничего такого особого не заметил ... Демо программа по моему вообще никак не демонстрирует возможности движка.
Разве что основное достоинство это создание скриншотов.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 02.10.2014, 14:25   #6
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию

WorldMaster, вот список возможностей Движка, которые демонстрирует тестовая программа:
  • Встроенный таймер
  • Менеджер ресурсов
  • Удобная камера (+ эффект тряски)
  • Рендер в текстуру
  • Сохранение скриншота
  • Разбиение изображения на кадры
  • Вывод текста
  • Вывод геометрических фигур
  • Преобразование координат
И, разумеется, не реализованная пока в полной мере, возможность подключения различных Рендеров. В общем случае, тестовая программа построена таким образом, что может демонстрировать большинство из имеющихся на данный момент возможностей Perfect Engine.
SaiLight вне форума Ответить с цитированием
Старый 28.05.2015, 04:19   #7
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Восклицание Perfect Engine v2.0 (часть 1)

Всем привет! Рад поделиться на данном форуме результатами огромной работы, проделанной нами со 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 и сообщить обо всех багах, найденных в нем и идеях по его усовершенствованию.

А еще здесь будут собираться все проекты, использующие наш движок. Если вы создали игру с его использованием - обязательно сообщайте о ней нам, и мы разместим ее на своем сайте!

Последний раз редактировалось SaiLight; 28.05.2015 в 10:53.
SaiLight вне форума Ответить с цитированием
Старый 28.05.2015, 04:20   #8
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию Perfect Engine v2.0 (часть 2)

ДЕМО

Ну и последнее. Наконец, удалось выделить немного свободного времени для написания более или менее серьезного игрового проекта с использованием Perfect Engine. Игра называется Crown, а почитать о ней вы можете в соседней теме. Данная игра, также, распространяется с открытым исходным кодом, и оттого, как мне кажется, будет весьма интересна каждому, кто желал бы разобраться в устройстве подобных игр. А для остальных - просто интересный способ убить время, насладившись необычным взглядом команды Perfect Light на идею логической игры 'Три в ряд'.

Всем спасибо за внимание. Ниже привожу прямые ссылки на архивы с движком, вспомогательными и демонстрационными проектами:


Последний раз редактировалось SaiLight; 28.05.2015 в 10:54.
SaiLight вне форума Ответить с цитированием
Старый 05.06.2015, 03:14   #9
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию

Движок обновлен до версии 2.1, исправлено несколько существенных недоработок, основной из которых была проблема с освобождением памяти от загружаемых программно шрифтов. Все обновленные архивы можно скачать по приведенным выше прямым ссылкам. Также, теперь здесь можно посмотреть историю версий Perfect Engine.
SaiLight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perfect Canvas, графический движок SaiLight Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 11.09.2014 11:00
Logical Engine - движок с открытым исходным кодом FelixWebster PHP 9 24.09.2013 00:20
Мой движок (Epic Fail Engine) intmain Gamedev - cоздание игр: Unity, OpenGL, DirectX 58 02.08.2013 06:39
Надо выбрать графический движок (С++) Juffin Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 11.09.2012 23:08
Графический движок OGRE 3D Blade Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.04.2009 16:15