Форум программистов, компьютерный форум, киберфорум
Игровые движки
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
1

Perfect Engine, графический движок

30.09.2014, 01:53. Показов 4140. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам

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

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

Процесс подключения Perfect Engine к своей программе, также, максимально упрощен - достаточно вызова всего одной строки кода, чтобы экран закрасился установленным вами фоновым цветом. Ниже приведен минимальный объем действий, необходимый для подключения Движка к своей программе:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Событие вывода графики
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 в скором времени будет выложен - командой приветствуются любые идеи, высказанные вами по поводу Движка и способствующие его улучшению.


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


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

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

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2014, 01:53
Ответы с готовыми решениями:

Графический движок
неоднократно видел на разных форумах темы типа, вот я хочу написать свой движок , кто-то...

Графический движок
Подскажите где скачать или купить движок XNA для гонок

Посоветуйте графический движок
Всем добрый вечер. Решил я начать подбираться к работе с 3D в оффлайне на C++(до этого пробовал во...

QapLite - простой графический движок [C++11, Win32, Direct3D9, 2D]
Всем привет! Я считаю что новичкам удобнее когда всё в одном H-файле. Поэтому я сделал урезаную...

20
3466 / 1649 / 236
Регистрация: 26.02.2009
Сообщений: 8,060
Записей в блоге: 6
30.09.2014, 11:26 2
Цитата Сообщение от SaiLight Посмотреть сообщение
В будущем планируется создание Рендеров Движка для таких библиотек, как FastLib, OpenGL и, возможно, DirectX.
Интересно как будете совмещать использование шейдеров в рендерах на OpenGL/DirectX и примитивный GDI рендер?
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
30.09.2014, 12:37  [ТС] 3
snake32, функции и переменные, не используемые в текущем Рендере, просто игнорируются им и Движком. То есть, если GDI-Рендер не поддерживает шейдеры, доступные в Движке, эту функцию он не переназначает, она остается пустой и Движком не вызывается. Иными словами, если в игре, созданной с использованием шейдеров заменить модуль peRender_OpenGL на peRender_Canvas - не возникнет никаких ошибок, вы просто увидите игру без шейдеров и остальных украшений OpenGL.

Кстати, не назову GDI-рендер примитивным. При правильном подходе можно и в нем организовать что-то вроде шейдеров (Scanline) - это уже на усмотрение разработчика Рендера, и так как Perfect Engine распространяется с открытым исходным кодом, не исключаю возможности создания стороннего Рендера GDI, который будет лучше стандартного.
0
3466 / 1649 / 236
Регистрация: 26.02.2009
Сообщений: 8,060
Записей в блоге: 6
30.09.2014, 14:29 4
SaiLight, но ведь шейдеры можно использовать не только как "украшения" в виде другого цвета пикселя у объекта. Перемещение, вращение, деформирование объекта(вершинный шейдер), наконец создание на шейдерах абсолютно новых объектов(геометрический шейдер). И всё это в режиме реал-тайм, что GDI и не снилось, так как в основном он работает за счёт ресурсов CPU. Отсюда и архитектура отрисовки будет отлична от OpenGL/DirectX, иначе не получится оптимально нагрузить GPU.

Вообщем, мне кажется, достаточно сложной задача совместить GDI и OGL/DX и при этом сохранить большинство возможностей GPU от которых отказываться в угоду совместимости не хотелось бы.

Хотя для 2D и в целях обучения производительность GPU скорее всего не потребуется.

ЗЫ: Всё вышесказанное ИМХО и базируется на не большом опыте разработки графических движков, которых у меня было аж целый один . И то не доделанный, где пытался реализовать большинство возможностей одного рендера OpenGL 3.3 на Delphi XE2.
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
30.09.2014, 15:03  [ТС] 5
snake32, разумеется, я с самого начала отдавал себе отчет в том, что 'благодаря' расширению областей применения Perfect Engine, от некоторых возможностей графических библиотек придется отказаться. Несмотря на свою совместимость с любой библиотекой, Движок, все же, направлен на то, чтобы максимально уравнять их шансы в выводе графики - иными словами, если вершинный шейдер реализовать на GDI не получится, а вся графика в конечном проекте будет основываться именно на нем, - такую задачу лучше выполнять с использованием другого Движка.

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

Разумеется, я не пытаюсь сделать Perfect Engine чем-то, способным на достойную конкуренцию с продвинутыми графическими Движками, но все вышеперечисленное в объединении с открытым исходным кодом, думаю, представляет достойный внимания проект, с использованием которого можно было бы создавать не самые плохие игры.
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
02.10.2014, 12:48  [ТС] 6
Движок обновлен. На данный момент добавлена возможность сохранения содержимого буфера в файл (Скриншот) - самим сохранением управляет, разумеется, Рендер, Движок лишь вызывает соответствующую функцию в момент полной готовности кадра. Из планов на ближайшее будущее - усовершенствование математической модели Движка в плане более точной проверки на попадание объектов в область экрана.

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

0
31 / 31 / 5
Регистрация: 24.09.2014
Сообщений: 243
03.10.2014, 23:15 7
Я так понимаю, движок полностью софтварный.
Сколько максимальный ФПС выдаёт пустая отрисовка (например, синий фон)?
Интересно увидеть саму функцию отрисовки (связь с ОС), как осуществляется изменение размеров канвы (в памяти) и есть ли фулл-скрин режим?
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
04.10.2014, 00:57  [ТС] 8
panotnap, при рисовании пустого фона на GDI-рендере FPS около 70 (65-70), но точными расчетами FPS я пока не занимался - позже добавлю эту функцию. Подозреваю, что дело, также, и в используемом таймере. Полноэкранный режим пока отсутствует. Функция вывода зависит от текущего Рендера. Например, в GDI-Рендере она выглядит так:

Delphi
1
2
3
4
5
6
7
8
9
10
Procedure peDrawTexture(vTextureNum: Integer; vLUX, vLUY, vRDX, vRDY, vSrcLUX, vSrcLUY, vSrcRDX,
  vSrcRDY: Real; vColor: Integer; vAlpha, vAngle: Real; vOverlay: Byte);
var
  vTargetHandle: LongWord;//Handle текстуры для рендера
begin
  vTargetHandle := fGetTargetHandle();
  StretchBlt(vTargetHandle, Round(vLUX), Round(vLUY), Round(vRDX - vLUX), Round(vRDY - vLUY),
    TJPEGBitmap(vTextures.Items[vTextureNum]).Canvas.Handle, Round(vSrcLUX), Round(vSrcLUY),
    Round(vSrcRDX - vSrcLUX), Round(vSrcRDY - vSrcLUY), SRCCOPY);
end;
Размеры области вывода задаются при инициализации Рендера, и работа этой функции, также, зависит от используемого Рендера. В процессе работы программы при масштабировании окна финальный кадр растягивается или сжимается.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
06.10.2014, 00:16 9
Я не гуру OpenGL, но у вас что софтверный движок?
Никогда не делайте софтверный рендер… Максимально используйте видеокарту, и слово движок для меня обозначает высокопроизводительную систему рендеринга использующую максимум возможностей видеокарты, а у вас таскание картинки вешает проц на 100 проц…
И движок не может использовать никакие сторонние фаилы для своей работы по определению т.к это всегда замедляет работу. И хороший движок написан на ассемблере.
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
06.10.2014, 11:27  [ТС] 10
Excalibur921, почитайте о Perfect Engine внимательнее, так как подобные заявления я вижу довольно часто. Во-первых, Движок рассчитан, в первую очередь, на обучение новичков, поэтому никаких потоков и ассемблеров там быть не может. Причем, в данной работе понятия 'Движок' и 'Рендер' разделены - вы можете написать свою систему рендеринга, которая по производительности будет значительно выше моей. А тот единственный на данный момент Рендер, который вы видели, - выводит графику средствами GDI, это лишь один из возможных вариантов. В конечном счете будет разработано несколько Рендеров, в том числе и для OpenGL.
а у вас таскание картинки вешает проц на 100 проц
Приведите, пожалуйста, параметры вашего компьютера - так как, у меня что с тасканием, что без него - загрузка одинаковая: от 0.5% до 0.8%. Процесс 'таскания картинки' не имеет ничего общего с Движком - здесь мы просто меняем координаты TPoint, Движок же так же, как и раньше, рисует изображение в нужном месте с заданными интервалами, и никакое 'таскание' на это не влияет.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
06.10.2014, 12:38 11
Цитата Сообщение от SaiLight Посмотреть сообщение
так как подобные заявления я вижу довольно часто
Видимо ваша программа не всегда работает с видеокартой корректно. Видимо так и случилось.

Цитата Сообщение от SaiLight Посмотреть сообщение
в первую очередь, на обучение новичков
А зачем обучать новичков делать неправильно, использовать медленные программы, и ограничивать самих себя? Мне кажется, само понятие слова движок обозначает сердце программы, то, что определяет ее скорость работы, и он не может быть не максимальной возможной скорости по определению. Я думаю, что за написание движка берутся только профи. Мне кажется, что написание движка обозначает что создатели пишут на ассемблере, знают команды для сопроцессора, используют все ядра равномерно, а также отлично шарят в математике, хотя наверно тогда такой подход делает движок коммерческим сразу. И уже для готового движка выводят все используемые возможности в удобную и понятную форму для использования, делают свой небольшой высокоуровневый язык для своего же движка.


Цитата Сообщение от SaiLight Посмотреть сообщение
вы можете написать свою систему рендеринга, которая по производительности будет значительно выше моей.
Ну правильно, а зачем же делать хуже чем может быть? В этом и есть суть слова движок.
Тем более, что его задача я так понял рендеринг красивостей.

Когда-то я пользовался программой крутых программистов и она очень вешала процессор под 100 проц на 30 отрезках, потом выяснилось что там софтверный рендер… Я написал свою кривую, с примитивной математикой и тригонометрией без сопроцессора, и ламерским кодом и 5 % нагрузки… я был в шоке
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
06.10.2014, 14:23  [ТС] 12
Видимо ваша программа не всегда работает с видеокартой корректно.
Excalibur921, смысл Perfect Engine в том, что он не основан на работе с видеокартой. Рендер при помощи видеокарты - лишь один из возможных, Движок рассчитан на свободное подключение Рендеров, работающих с любыми графическими библиотеками.

А зачем обучать новичков делать неправильно, использовать медленные программы, и ограничивать самих себя?
Затем, что ассемблер - не то, что нужно знать новичкам. Если в школе вас учат, что при D < 0 квадратное уравнение не имеет решений, а в институте вы узнаете, что это было лишь упрощением ради вашего понимания, разве это означает, что в школе вас учили делать неправильно? Смысл обучения не в том, чтобы давать человеку идеально правильный материал, но в том, чтобы давать ему материал, подходящий к его текущим возможностям.

Мне кажется, что написание движка обозначает что создатели пишут на ассемблере
В определение графического Движка не могут входить слова об обязательном написании на ассемблере. Графический Движок - это средство, обеспечивающее удобный и упрощенный вывод графики на экран без обращения к сложным функциям используемой библиотеки. Это значит, что Движок не перестает быть Движком, независимо от того, является он плохим или хорошим. Факт использования ассемблера не делает вашу программу Движком и не запрещает вашему Движку им называться. Подобное заявление сродни тем, что выдвигают мне, когда пытаются убедить, что 'Писать игры на Delphi - грех' - довольно некомпетентное заявление.

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

Ну правильно, а зачем же делать хуже чем может быть? В этом и есть суть слова движок.
Суть слова 'Движок' - в том, что говорится в его определении. Я не думаю, что там есть фраза об идеальной проработке, чтобы не было 'хуже, чем может быть'. С этой точки зрения, ни один из тех, кого вы назвали 'профи' не может создать идеального продукта. Если подходить к данному (или к любому другому) вопросу с точки зрения понимания идеала, то ни один 'профи' не сможет создать продукт, который не был бы 'хуже, чем может быть'.

Впрочем, данный диалог напоминает мне кое-что из бывшего ранее:

Dima Dudarenko
Самое идиотское использование Делфи - геймдэв.Разработку приложений еще можно оправдать удобством и скоростью...да и то не всегда. -_-

Sailight Sailight
Dima, вполне нормальное использование Delphi - программирование, и все, что связано с ним, можно оправдать в любом случае.
P.S. Из ваших сообщений складываю ваше понимание определения слова 'Движок'...

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

Думаю, вам стоит пересмотреть данное определение.
0
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
06.10.2014, 14:47 13
Сначала я хотел написать длинный ответ с обилием комментариев и объяснений почему так высказываются другие люди, почему так правильно и т.д.
Но потом понял…Новички…
0
3466 / 1649 / 236
Регистрация: 26.02.2009
Сообщений: 8,060
Записей в блоге: 6
06.10.2014, 14:58 14
Excalibur921, графический движок невозможно невероятно сложно написать только на одном ASM. Вы знаете такие движки? Компиляторы неплохо справляются с этой проблемой, чего достаточно для 99,99% задач программирования.
Цитата Сообщение от Excalibur921 Посмотреть сообщение
Но потом понял…Новички…
Какими движками лично вы пользовались?
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
28.05.2015, 11:36  [ТС] 15
Всем привет! Рад поделиться на данном форуме результатами огромной работы, проделанной нами со 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 на идею логической игры 'Три в ряд'.

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

0
31 / 31 / 5
Регистрация: 24.09.2014
Сообщений: 243
30.05.2015, 02:20 16
Не, всё-таки "Perfect" звучит несколько заносчиво... Для меня, например, паскаль - это уже не "пёрфект".
Если я правильно понял, "движок" получается не только платформо-зависимым, но ещё и языко-зависимым...

Я ещё не совсем понимаю вот чего. Если задача программы - облегчить программирование графики новичку, то это - просто прослойка (пусть специализированная такая), но не "движок". Движок - это даже не ОпенЖЛ целиком, а уже надстройка над ним или над ДиректИКС, весьма "толстая". Если вы начинаете расширять свой проект в эту сторону, то во-1-ых, теряете главную цель (простой интерфейс программирования для новичка), а во-2-ых приближаетесь к самим ОпенЖЛ и ДиректИКС, и не с лучшей стороны, так как последним составить конкуренцию невозможно (округляя говоря).

Переназовите, например, "graphic interface for beginners", GIB.
К "пёрфекту" стремятся все, а говорить об идеальности в момент разработки несколько преждевременно, не так ли?
1
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
30.05.2015, 11:57  [ТС] 17
panotnap, странное заявление 'Переназовите' к уже названному (и давно) проекту. Можно написать директору компании Blizzard о некоей недоработке: к примеру, игра называется Warcraft, но на деле военному ремеслу там не учат. Немного разъясню суть названия. Perfect Light - наша команда, название придумано еще в 2009 году, и уже тогда под ним мы были известны определенному кругу людей, а придумано оно было далеко не из-за заносчивости.

Теперь же это что-то вроде официальной марки, под которой создано уже несколько проектов:
  • Perfect Particle
  • Perfect Engine (ранее Perfect Canvas)
  • Perfect Palette
  • Perfect Components

Насчет вопроса 'Perfect ли Паскаль' - здесь может быть много споров, и у каждого свое мнение. На ваше 'Для меня не Perfect' я отвечу 'А для меня Perfect', и это утверждение вряд ли можно будет опровергнуть, поэтому не думаю, что оно может считаться решающим.

Также, много разговоров было и насчет правильности решения назвать представленный проект 'Движком', правда, эти споры, если не ошибаюсь, возникали еще во времена Perfect Canvas, когда кроме функций вывода и камеры там почти ничего не было. Теперь все в корне изменилось: начиная с Perfect Engine движок (думаю, именно движок) поддерживает несколько рендеров (а создание этих рендеров - также, довольно трудоемкий процесс) и еще кучу всяких удобств. Как показано в Crown, с помощью него даже можно писать неплохие игры, и он немногим уступает некоторым известным движкам на Delphi.

К тому же, слово 'Прослойка' конечному пользователю понятно намного меньше, нежели 'Движок'.

Добавлено через 21 минуту
P.S. Сколько ни читал, так и не понял этой части сообщения:

Движок - это даже не ОпенЖЛ целиком, а уже надстройка над ним или над ДиректИКС, весьма "толстая". Если вы начинаете расширять свой проект в эту сторону, то во-1-ых, теряете главную цель (простой интерфейс программирования для новичка), а во-2-ых приближаетесь к самим ОпенЖЛ и ДиректИКС, и не с лучшей стороны, так как последним составить конкуренцию невозможно (округляя говоря).
Впервые слышу о том, что движок для OpenGL делается с целью составления ему конкуренции.
0
31 / 31 / 5
Регистрация: 24.09.2014
Сообщений: 243
30.05.2015, 17:14 18
Ну раз вся команда - "пёрфект", тогда у меня аргументов нет.

Цитата Сообщение от SaiLight Посмотреть сообщение
Впервые слышу о том, что движок для OpenGL делается с целью составления ему конкуренции
Я тоже впервые слышу. Движок для ОпенЖЛ не делется. Движок делается НА ОпенЖЛ. Движок - это надстройка над граф. библиотекой, над её АПИ и где-то над АПИ ОСы, являющаяся прослойкой между ними и программистом софта / игры. Жирная такая, удобная штука - практически готовая игра: надо только координаты вбить и текстуры в папку сложить. Преувеличиваю, конечно.

А если вы хотите создать что-то полезное и при этом не уткнуться в "ДиректИксы", позорно им проиграв, то вам надо делать что-то очень специфическое. Но когда начинает набираться функционал графической библиотеки (что ещё-таки не движок), то это 1) перестаёт быть специфическим и 2) начинает нещадно уступать "Директам".

Есть DirectDraw, который прогеру даже простенькой игры будет не сложнее освоить, чем ваш дуэт "паскаль + пёрфект".
А OpenGL ещё и абсолютно свободен, кросс-платформерен. Открываешь "руководство для чайников" и там в нескольких строчках любая модель с любой текстурой - вуаля.

Добавлено через 32 минуты
Я, может быть, не так понял... Если движок делается на ОпенЖЛ, то вопросов нет. Только непонятно тогда, зачем маньячить процессор, вгоняя фпс в 60? Граф. библиотека итак сэмулирует софтварно ту функцию, которой нет аппаратно...
0
22 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 13
30.05.2015, 17:23  [ТС] 19
panotnap, странные вещи читаю. Любой движок, работающий с OpenGL, будет уступать по функциональности OpenGL или использовать всю его функциональность, но не превзойдет его. Не думаю, что целесообразно говорить о том, что движок на OpenGL может проиграть ему, так как, в любом случае, выиграть он точно не сможет. Если я пишу на чистом WinAPI, то функциональности WinAPI я превзойти не смогу. Поэтому, не понимаю смысла фразы 'Начинает нещадно уступать Директам'.

Далее, не стоит путать два совершенно разных понятия - 'Графический движок' и 'Игровой движок'. Если игровой - это и есть 'практически готовая игра', то графический - лишь надстройка над библиотекой вывода, но к игре никакого отношения не имеет. Он может входить в состав некоего игрового движка, но сам по себе графический движок - лишь инструмент вывода. Это может быть простенький класс или серьезный инструмент, но, в любом случае, если мы говорим о понятии 'Графический движок', никакой игры мы в виду не имеем.

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

Таким образом, при определении, считать ли библиотеку движком, мы пользуемся не субъективными оценками 'Простой' или 'Сложный', 'Проигрывает' или 'Выигрывает', а объективным: 'Надстройка над низкоуровневой библиотекой'.

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

Теперь - насчет 'Директов' и 'Паскаль-Перфекта'. Паскаль - язык, довольно эффективно используемый для изучения программирования. 'Перфект' - открытый инструмент, дающий возможность на конкретных примерах это самое программирование изучить. Ну и, напоследок:

Открываешь "руководство для чайников" и там в нескольких строчках любая модель с любой текстурой
Не все так просто. Это похоже на диалог, который я встретил недавно на форуме по CMS Joomla. Что-то типа того:

- Где можно скачать шаблон для этого компонента?
- Лучше самому сделать. Открываешь видео-урок по CSS, и за неделю начинаешь делать вполне приличные сайты.

Но, разумеется, в жизни все не так. Если даже не просвещать написавшего эти строки о том, что чистый CSS не поможет ему овладеть искусством создания сайтов (не говоря уже о 'вполне приличных'), так как есть HTML, PHP, JS и еще много полезных слов, то даже на изучание CSS недели, явно, недостаточно.

То же и с OpenGL. Эта библиотека настолько сложна для новичков (и даже не только для них), что большинство из них попросту отказываются от нее в пользу обычных Canvas'ов, а потом и вовсе уходят из игростроения. Я помню, как сам был таким - для меня даже библиотека GDI была трудна в понимании, а в OpenGL используются намного более сложные технологии, в которых разобраться - бывает непосильной задачей, особенно, для новичка.
0
5301 / 2897 / 485
Регистрация: 05.10.2013
Сообщений: 7,678
Записей в блоге: 155
30.05.2015, 20:19 20
Цитата Сообщение от SaiLight Посмотреть сообщение
То же и с OpenGL. Эта библиотека настолько сложна для новичков (и даже не только для них), что большинство из них попросту отказываются от нее
Мне кажется, что сейчас для новичков самым оптимальным выбором будет Unity5. В комбинации со скриптингом на C#, возможностью программировать в VS2013, сборкой под 21 платформу, обилием видео уроков, удобных инструментов, огромным комьюнити, обилием вакансий и т.д.
0
30.05.2015, 20:19
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2015, 20:19
Помогаю со студенческими работами здесь

Посоветуйте графический движок для простой 2д игры
Какой можете посоветовать графический движок для простой 2д игры с простыми задачами(перемещение...

Нужен простой графический движок C++ && DirectX11 на Windows 7
Нужен простой графический движок C++ &amp;&amp; DirectX11 на Windows 7. Дайте ссылку на движок, чтобы я...

Движок Unreal Engine
Посоветуйте какой-нибудь видео урок или литературу по данному движку

MFC и графический движок
Уважаемые форумчане, приветствую вас! собственно весь вопрос в сабже: мне нужен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru