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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 23:34   #21
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Лампочка Первые тесты. Часть 3, Демонстрация

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

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

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

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

Для тех, у кого компьютер в данный момент занят несравнимо сложными расчетами Crysis'а или Starcraft'а, но имеющих пару минут свободного времени, пока загружается карта, я выкладываю здесь ссылку на видео, снятое в демонстрационной программе.

А также, - пример того, каких эффектов теперь можно достичь, используя один лишь эмиттер (к слову, в Системе их будет неограниченное количество) - в качестве небольшого видеоролика, сделанного мною для того, кто мне бесконечно дорог. Вот этот ролик.


P.S. Последнее нововведение, о котором я забыл упомянуть выше, - типы эмиттеров. Если раньше частицы могли появляться только случайным образом внутри прямоугольника, то теперь эмиттер может принимать один из четырех типов: Прямоугольник, Круг, Кольцо (Окружность) и, в качестве, последнего введенного типа, - любая заданная траектория, причем, работа с нею была организована таким образом, что размещение частицы в случайном месте траектории нагружает процессор не намного больше размещения ее на окружности или внутри круга. В демонстрационной программе эта возможность представлена последним эффектом, а также, на основе нее был создан эффект в последнем видеоролике. Подобная возможность в первой версии программы, также, отсутствовала.

P.S.2. Правой кнопкой мыши можно поставить воспроизводимый эффект на паузу. :D!

Emitter test.rar

Последний раз редактировалось SaiLight; 03.04.2014 в 23:39.
SaiLight вне форума Ответить с цитированием
Старый 04.04.2014, 11:44   #22
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

проделаннная работа, конечно, вызывает уважение, но
Цитата:
Проблема эта связана с выводом графики при помощи OpenGL'овских функций 'glBegin/glEnd'. Причем, она настолько тормозит систему при выводе, что если 6000 частиц грузят процессор на 35-45%, то при отключении функции рисования нагрузка снижается до 6-11%.
подобное вызывает улыбку. единственный проверенный способ не загружать проц - ничего не делать. плюс если уж приводятся данные о производительности, не плохо бы сообщить на каком железе полученны данные цифры.
f.hump вне форума Ответить с цитированием
Старый 04.04.2014, 12:39   #23
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Итак, после всех этих усовершенствований, я вижу лишь одну проблему, на решение которой у меня пока не было достаточно свободного времени, но она гнетет меня, и я знаю, что настанет время, когда я возьмусь за ее решение. Проблема эта связана с выводом графики при помощи OpenGL'овских функций 'glBegin/glEnd'. Причем, она настолько тормозит систему при выводе, что если 6000 частиц грузят процессор на 35-45%, то при отключении функции рисования нагрузка снижается до 6-11%. В любом случае, в скором времени данная проблема подлежит разрешению.
вы рассчитываете на OpenGL2?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.04.2014, 19:26   #24
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию

Цитата:
подобное вызывает улыбку. единственный проверенный способ не загружать проц - ничего не делать. плюс если уж приводятся данные о производительности, не плохо бы сообщить на каком железе полученны данные цифры.
Возможно, если убрать из программы весь код, то она, скорее всего, перестанет тормозить. Проблема в другом: я не думаю, что это правильно, когда из 50-процентной нагрузки на процессор только 10% занимает сама обработка частиц и остальные 40% - их рисование. Я думаю, все же, что процесс рисования может занимать намного меньше времени.

Цитата:
вы рассчитываете на OpenGL2?
Да, хотелось бы использовать шейдеры при выводе графики.

P.S. Я специально приводил размытые данные о производительности, посчитав, что на данном этапе точной статистики приводить здесь смысла нет. Я лишь указал, как, в общем, обстоят дела с программой, и на что, по-моему, расходуется больше всего времени.

Последний раз редактировалось SaiLight; 04.04.2014 в 19:29.
SaiLight вне форума Ответить с цитированием
Старый 09.04.2014, 07:16   #25
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Всё понравилось, классно работает.
Ну, разве что мелочь - программа хранит у себя чексуммы файлов или типа того, нельзя твикать файлы партиклов. Я понимаю, что нужен редактор, и только им надо редактировать, но покопаться всё равно интересно.
Насчёт производительности - для инструмента (а не конечной игры) это актуально, думаю. И думаю, оптимизации стоит добиваться переводом на массивы (ArrayObjects / BufferObjects) или сразу на GLSL , в зависимости от того, какой уровень совместимости планируется иметь. Обычно сейчас придерживаются минимальной совместимости - OpenGL2.1
Учебный материал, который может пригодиться http://ogltutor.netau.net/
phomm вне форума Ответить с цитированием
Старый 09.04.2014, 08:29   #26
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

SaiLight, программа не работает, если в локали разделитель целой и дробной части стоит . (ТОЧКА)
Изображения
Тип файла: jpg errFloat.jpg (9.8 Кб, 55 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.04.2014, 12:48   #27
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
По умолчанию

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

Вопрос 'Почему ошибки были закрыты, а не исправлены?', вполне логично напрашивающийся в данной ситуации, очень легко разрешим. Мне было необходимо создать демонстрационную программу для показа своему руководителю, после чего я уже не планировал работать над ней. Многие из возникающих в ней проблем уже были решены, многие еще только планируется решать, но необходимости в этой программе уже нет, так как система уже связана с редактором, активно расширяется и дополняется. Обо всем этом я напишу подробнее несколько позже, когда разрешу несколько возникших вопросов.
SaiLight вне форума Ответить с цитированием
Старый 07.05.2014, 04:09   #28
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Смущение Минутка воспоминаний. Часть 1


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


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

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

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

Для меня оказалась безнадежно устаревшей сама модель построения эффектов, с указываемыми в виде диапазонов статичными свойствами. И тогда я рещил перейти к графикам. Так появилась основополагающая идея Perfect Particle 2. Здесь каждое свойство должно было стать динамическим, изменяющимся на протяжении жизни объекта при помощи графика. А диапазоны заменило свойство 'Отклонение', случайным образом рассчитываемое для каждой новой Частицы из заданного в Редакторе значения.

И я стал работать над Системой, понимая, что это - финальная, заключительная часть всей моей деятельности на протяжении трех (2,5) лет. Я начал издалека, откуда начинал всегда, - с обдумывания и осмысления новой Системы. Я садился и что-то долго писал на огромном количестве клочков бумаги, в тетрадях, на уголках учебных страниц, - рисовал схемы, выводил какие-то простые формулы, записывал алгоритмы... Я полностью погрузился в свою идею, обдумывая ее даже на ходу, становясь рассеянным и порою совершенно никого не слушая и не запоминая ничего кроме того, что мне было нужно. Стопка моих бумажек всегда была при мне, и я разбирал их, что-то писал, вновь складывал по одному мне известной системе...
SaiLight вне форума Ответить с цитированием
Старый 07.05.2014, 04:10   #29
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Смущение Минутка воспоминаний. Часть 2

Я создал интерфейс программы в Delphi 7. Мне не хотелось делать что-то простое, со стандартными элементами управления, мне всегда хотелось создать что-то необычное, свое, узнаваемое. Некоторое время я безуспешно пытался освоить библиотеки для установки оформления в свою программу - SkinEngine, ThemeEngine, AlphaControls и многие другие, в каждой из них находя то, с чем не мог смириться. И тогда я принял сложное для себя решение - даже не начав еще работу над самой Системой, перейти к написанию огромного количества собственных компонентов. Это были мои первые компоненты - на них я экспериментировал, с ними разбирался во всех тонкостях этого нелегкого дела. Каждый из этих компонентов имеет свою историю, и в коде каждого из них можно заметить совершенствование моих навыков и стиль, неуловимо меняющийся от компонента к компоненту.

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

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

И вот моя работа, наконец, подошла к концу. Я тестировал свою программу, исправлял ошибки, добавлял в нее новые удобства - то, что ранее мне и не снилось. Я добавил поддержку всего, что планировал, и эффекты намного превзошли мои ожидания. Я запускал ее на разных компьютерах, находил новые ошибки, вновь исправлял их, узнавал много нового, многое менял и удалял многие свойства, заменяя их более функциональными и удобными - пока не пришел к тому, что имеется. И вот я полностью доволен своим результатом, видя перед собой то, что хотел увидеть еще 2 года назад, что хотел увидеть год назад, и к чему стремился. И, все же, я знаю, что тема Системы частиц еще далеко не раскрыта и планирую дальше развивать свою программу. Далеко ли? Время покажет.
SaiLight вне форума Ответить с цитированием
Старый 07.05.2014, 04:12   #30
SaiLight
Форумчанин
 
Аватар для SaiLight
 
Регистрация: 10.01.2009
Сообщений: 132
Лампочка Новый интерфейс

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

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

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


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

InterfaceTest.zip
SaiLight вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perfect World сервер Aleksey1408D Свободное общение 1 21.01.2011 14:18
Clock by Perfect Light SaiLight Софт 2 28.07.2010 10:16