Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Perfect Engine, графический движок


Автор: SaiLight 30.9.2014, 15:11
http://files.perfectlight.ru/pl_resources/images/PerfectEngine_Logo.jpg


Здравствуйте. Хотелось бы рассказать здесь немного об одном интересном проекте, разрабатываемом командой Perfect Light. Это Perfect Engine - простой 2D-графический Движок с открытым исходным кодом на Delphi для некоммерческого использования. Прежде всего, ориентирован на обучение начинающих программистов, потому исходный код максимально упрощен и прокомментирован. Движок разделен на 2 части: сам Движок, отвечающий за всю предварительную подготовку и хранение графических ресурсов и Рендер, выводящий эту графику на экран, за счет чего достигается полная его независимость от конкретной графической библиотеки и возможность привязки приложения к любой из них.

В настоящий момент реализован стандартный GDI-Рендер 'peRender_Canvas.pas', обеспечивающий легкий вывод графики средствами WinAPI и не требующий никаких сторонних библиотек и расширений. Сам Движок имеет встроенные Камеру, Хранилище графики (менеджер ресурсов), Таймер, а также, несколько интересных особенностей, в числе которых - удобная и автоматизированная работа с кадрами анимации в одном спрайте (вы просто указываете номер кадра, и Движок сам выбирает его из общего спрайта) и возможность быстрого рендера кадра в текстуру.

Процесс подключения 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;


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

user posted image


Думаю, важно было бы упомянуть в этой теме и другую разработку команды Perfect Light - это гибкая Система частиц Perfect Particle 2, позволяющая реализовать в своей программе довольно широкий набор максимально разнообразных эффектов. В данный момент библиотека дорабатывается (возможно, о ней в дальнейшем будет создана отдельная тема) - недавно Система, также, была полностью отвязана конкретного графического API, и теперь имеет возможность выводить рассчитанные Частицы даже с использованием Canvas (GDI). По одной из ссылок, представленных ниже, можно скачать программу, демонстрирующую возможности Системы с привязкой к Perfect Canvas (предшественнику Perfect Engine).

http://files.perfectlight.ru/othersites/PP2_0.jpg http://files.perfectlight.ru/othersites/PP2_1.jpg http://files.perfectlight.ru/othersites/PP2_2.jpg http://files.perfectlight.ru/othersites/PP2_3.jpg http://files.perfectlight.ru/othersites/PP2_4.jpg


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

В будущем планируется создание Рендеров Движка для таких библиотек, как FastLib, OpenGL и, возможно, DirectX.

Спасибо за внимание! Более подробная информация о Движке, а также, Системе частиц и других наших проектах, представлена в соответствующих разделах форума команды Perfect Light. Мы были бы рады любым вашим идеям в вопросе усовершенствования Движка, а также, любой помощи в доработке представленных проектов. Ниже указаны некоторые полезные ссылки, среди которых - программа, тестирующая возможности Perfect Engine и программа, тестирующая Систему частиц Perfect Particle 2 с привязкой к Perfect Canvas, в которой вы можете насладиться шестью доступными эффектами. Полную версию программы (25 красивых эффектов) вы можете скачать с форума нашей команды. Там же - более подробное описание представленных проектов...

http://files.perfectlight.ru/pl_resources/programs/perfectengine/perfectengine.zip
http://files.perfectlight.ru/pl_resources/programs/perfectengine/perfectutilites.zip
http://files.perfectlight.ru/pl_resources/programs/perfectengine/perfectengine_demo.zip
http://www.engine.perfectlight.ru/

Автор: drkot 30.9.2014, 18:09
Рекламный прогиб защитан. И что дальше?
Предлагаю удалить тему. Кто за?

Автор: SaiLight 30.9.2014, 18:45
drkot, дальше - развитие проекта, и то, что я разместил ссылку на его официальный сайт, - не является рекламой. Проект полностью бесплатен и распространяется с открытым исходным кодом, прежде всего нацеливаясь на изучение новичками в программировании, а это значит, что они (новички) как-то должны о нем узнать, вот и все. Никакой вещественной выгоды с этого проекта я пока получать не планирую, а это значит, что тему вряд ли можно считать рекламной.

Автор: drkot 30.9.2014, 18:56
Цитата(SaiLight @  30.9.2014,  19:45 Найти цитируемый пост)
не является рекламой

с каких это пор офф сайте не есть реклама?
в раздел для готовых проектов и тестирования
Цитата(SaiLight @  30.9.2014,  19:45 Найти цитируемый пост)
распространяется с открытым исходным кодом

Цитата

Здесь будет ссылка на скачивание программы

когда будет, тогда и говорите

Это раздел для вопросов... раз вопросов нет, следовательно флуд и реклама

Добавлено через 2 минуты и 39 секунд
К стати... на сайте предоставляются платные услуги...
а данный пост используется для повышения тица.

Автор: SaiLight 30.9.2014, 19:02
Цитата

раз вопросов нет, следовательно флуд и реклама 


А вы читайте повнимательнее:

Цитата

командой приветствуются любые идеи, высказанные вами по поводу Движка и способствующие его улучшению


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

Автор: drkot 30.9.2014, 19:10
подождем модераторов...

PS: глупость можно простить, но наглость...

Автор: SaiLight 30.9.2014, 19:17
drkot, не вижу в этом никакой наглости - есть проект, который был бы интересен людям, и есть форум, на котором эти люди собираются. Так отчего же не дать этот проект людям, собирающимся на форуме? А ссылка на официальный сайт была указана только потому, что данный проект был размещен на нескольких форумах (кстати, вы - первый, кто заговорил про рекламу), и оперативно отвечать на сообщения с разных форумов у меня не получится. Ссылка на официальный сайт была размещена только потому, что общаться со всеми заинтересованными в разработке проекта было бы удобнее в одном и том же месте.

В любом случае, модераторы рассудят.

Цитата

К стати... на сайте предоставляются платные услуги...
а данный пост используется для повышения тица. 


drkot, вы и правда думаете, что я написал графический Движок, а также, вспомогательный проект к нему на 13 000 строк только для того, чтобы повысить ТИЦ своего сайта? Глупо думать, что я повышаю ТИЦ (Тематический Индекс Цитирования, если вы не в курсе) дизайнерской студии за счет своих проектов, выложенных на Форум программистов.

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

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

http://files.perfectlight.ru/pl_resources/programs/PerfectEngine_Engine.zip (10 kb)
http://goo.gl/HeLrL8 (495 kb)
http://perfectlight.ru/forum/programs/37-perfect-engine-graficheskij-dvizhok-2014-god.html

Автор: phomm 2.10.2014, 19:36
Вступлюсь за уважаемого мной автора.

Возможно, досточтимый drkot не бывает на других форумах программистов, и не видел, что SaiLight публикует свои работы, в том числе вкладывая в них образовательный смысл, ещё с года 2010 где-то, а сайт у их команды появился от силы 2 или 3 месяца назад, где теперь собрана вся предыдущая разрозненная публикация.

Уверяю, что таких целеустремлённых и продуктивных разработчиков, желающих делиться, и умеющих это делать, надо ещё поискать, и нападать из-за неких собственных предубеждений я скажу, что неправильно, лучше бы сперва изучили минимальный бекграунд вопроса, чтобы сформировать мнение, а то вышло опрометчиво, некорректно и грубо.

Насчёт закрытия и переноса темы - проект в довольно большой части своей концепции рассчитан на обучение новичков, обучению задачам разработки медиа-приложений на дельфи, что данный движок как раз и делает, и иного места ему найти сложно.

По теме - автор и так знает, т.к. мы с ним уже общались, и думаю, ещё не раз будем общаться, в том числе про движок.
Исходники, конечно, гляну и изложу свои замечания, как обычно, буде таковые найдутся smile

Автор: Pavia 2.10.2014, 22:38
drkot, Завидуете автору то что он что-то сделал, а вы нет? 


SaiLight, А вот врать не хорошо. Это реклама. И не как не обучение для новичков. 
И движок на до бы переделать уж больно много ошибок проектирования и не однозначных решений. Не говоря о ошибках. 
Хотя стоит сказать что это чуть лучше чем предлагают новички для новичков. Но всё же тут ещё работать и работать над движком и примерами.  

Автор: drkot 2.10.2014, 23:24
Цитата(Pavia @  2.10.2014,  23:38 Найти цитируемый пост)
Завидуете автору то что он что-то сделал

Чему завидовать? Сотне строк кода? Или эфемерному движку которого так и нет?
Наверно каждый может достать "поделки" из чулана... Но если поделки выкладывать, так так и писать... мол поделка на суд общественности...
И главное для этого есть раздел на форуме!
А тут на тебе "революционное решение в области графики"! Причем автор специально для этого зарегистрировался!
Если копнуть он уже все форумы этим движком "обделал".


Цитата(phomm @  2.10.2014,  20:36 Найти цитируемый пост)
Вступлюсь за уважаемого мной автора.

Вот и твин нарисовался...
Цитата(phomm @  2.10.2014,  20:36 Найти цитируемый пост)
целеустремлённых и продуктивных разработчиков

они похоже по байту в день кодят... судя по материалам...
Цитата(phomm @  2.10.2014,  20:36 Найти цитируемый пост)
концепции рассчитан на обучение новичков

да что Вы говорите?! учит как писать бестолковые объекты и загружать в них картинки?
Где конвейеры? где потоки? про директдрав я даже не заикаюсь.... 
Это весьма посредственная курсовая работа...

Автор: SaiLight 2.10.2014, 23:44
phomm, спасибо за поддержку, нечасто ее встретишь, когда делаешь не то, чего от тебя ожидают. Например, программируешь на Delphi.

Цитата

SaiLight, А вот врать не хорошо. Это реклама. И не как не обучение для новичков. 


Если я хочу, чтобы о проекте, ориентированном на новичков, узнали новички, то, будь это хоть трижды реклама по чьим-то меркам, я, не ожидая от этого совершенно никакой выгоды, могу позволить себе такую 'рекламу'. Реклама ради тех, на помощь кому нацелен этот проект, не считается мной за рекламу.

Цитата

И движок на до бы переделать уж больно много ошибок проектирования и не однозначных решений. Не говоря о ошибках. 


Pavia, с удовольствием выслушаю все ваши (и не только ваши) пожелания по данному вопросу. Только чуть более конкретные. Когда на одном из форумов phomm высказывал мне замечания, все его пожелания были конкретными и понятными - такие пожелания я ожидаю услышать и от остальных более опытных участников. Если вы не можете высказать подобных замечаний, то все остальные будут пропущены мною мимо. Я делаю то, что могу и как могу, стараясь максимально преуспеть в каждой задаче.

Цитата

Чему завидовать? Сотне строк кода? Или эфемерному движку которого так и нет?


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

Цитата

они похоже по байту в день кодят... судя по материалам...


Вы все наши материалы смотрели? Среди наших работ есть как компьютерные программы (вплоть до 13 000 строк в Perfect Particle 2, что 'сотней' никак не обзовешь), так и проекты в области веб-дизайна и иных сферах дизайнерской деятельности - моделировании, работе в Photoshop и других редакторах. Наша работа напрямую никак не связана с программированием, и если мы успеваем 'кодить по байту в день', чтобы кого-то чему-то научить, то это уже может считаться огромным трудом с нашей стороны, потому как немногие делают даже это.

Автор: drkot 3.10.2014, 14:27
Цитата(SaiLight @  3.10.2014,  00:44 Найти цитируемый пост)
вплоть до 13 000 строк в Perfect Particle 2,

бла бла бла, все что видно это Ваш пафосный треп.... где доказательства?

Цитата(SaiLight @  3.10.2014,  00:44 Найти цитируемый пост)
покинули данную тему

шел бы ты лесом, солнышко со своими тицами и пиарами, и не срал бы в приличной теме.
а то пафос из всех дыр прет, "ля ля фа фа проект для новичков" "пол сотни человек попку рвут уже три года"... 
как то маловат результат для таких невхерственных амбиций... 

Автор: drkot 3.10.2014, 14:47
SaiLight, Вы конечно извините, но еще лет 20 назад представленная Вами работа вызвала бы обильное рукоплескание, но сейчас технологии ушли немного дальше.

Автор: Keeper89 10.10.2014, 01:41
Что напали на автора? Он разместил, кому надо почитают. Всем остальным (переносом по темам, банами и т.д.) займутся модераторы.

Автор: xackera 13.10.2014, 08:55
SaiLight, может Вам стоит написать в http://forum.vingrad.ru/forum/topic-21411/view-all.html?

Автор: SaiLight 13.10.2014, 10:25
xackera, возможно, но если я создам кроме этой темы еще и сообщение по той ссылке, тогда здешние антиспамы меня точно съедят.)

Автор: Dimonka2 16.1.2015, 20:38
Ну и где исходники?

Автор: SaiLight 11.2.2015, 02:08
Dimonka2, приношу извинения за столь долгий ответ. Обновил первое сообщение темы, выложив прямую ссылку на архив с исходниками Perfect Engine. Движок понемногу растет, когда появится свободное время, еще немного доработаю его к выпуску новой версии. На данный момент с использованием Perfect Engine одним знакомым программистом была написана небольшая коммерческая программа, если он будет не против, также, выложу ссылку на нее в данной теме.

Автор: SaiLight 28.5.2015, 11:50
Всем привет! Рад поделиться на данном форуме результатами огромной работы, проделанной нами со 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 в своих проектах, обязательно свяжитесь со мной в Контакте (http://vk.com/sailight) или на http://www.engine.perfectlight.ru/ движка - возможно, наше сотрудничество пойдет на пользу обоим проектам.

САЙТ

Открыт официальный сайт поддержки http://www.engine.perfectlight.ru/. Основное его назначение - быстрое предоставление информации по всем функциям движка. Для этого в правом верхнем углу сайта расположена строка поиска - введите в нее полное или частичное название функции, нажмите ENTER, и вы получите исчерпывающую информацию по вашему запросу. Список доступных функций со временем будет пополняться. Также, воспользовавшись гостевой книгой, вы можете задать любой интересующий вас вопрос о работе с Perfect Engine и сообщить обо всех багах, найденных в нем и идеях по его усовершенствованию.

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

ДЕМО

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)