|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.04.2014, 23:34 | #21 |
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
Первые тесты. Часть 3, Демонстрация
Я решил провести тест класса 'Эмиттер' еще до написания основного класса 'Система частиц' с целью выявления основных проблем и ошибок и их исправления. К моему удивлению, особо заметных ошибок было всего несколько, и о них не имеет смысла здесь говорить. Также, до сих пор мною устраняются некоторые скрытые недочеты. В любом случае, все, что осталось сделать, - написать Систему частиц (Систему эмиттеров в моем понимании), связать ее с редактором и заняться серьезным тестированием. Хотелось бы заметить, что как редактор, так и сами классы были написаны с учетом дальнейшей расширяемости программы - все, что не выходит за рамки изначальной структуры и фундаментального понимания процесса, будет в конечном счете реализовано для расширения функциональности Системы.
В качестве демонстрации возможностей разработанного эмиттера мною была написана специальная программа, воспроизводящая несколько заранее созданных эффектов. Я был бы очень признателен всем, кто протестирует данную программу и сообщит здесь о найденных в ней ошибках. Скриншот программы представлен ниже: Самое замечательное в представленных эффектах - что ни один из них нельзя было реализовать в первой версии Perfect Particle. Благодаря использованию графиков для изменения тех или иных свойств системы, поведение частиц теперь может быть настолько 'случайным' и нелинейным, что даже простые эффекты выглядят намного реалистичнее прежнего. И оттого, чтобы показать именно их поведение, в демонстрационной программе я отказался от использования текстур - все частицы здесь имеют вид простых разноцветных прямоугольников, но даже в этом случае мы можем достичь эффектов, не сравнимых с предыдущей версией программы. Итак, для всех желающих лично ознакомиться с программой, а также, сообщить мне о найденных в ней ошибках, ссылка на программу будет представлена в конце этого сообщения. Для тех, у кого компьютер в данный момент занят несравнимо сложными расчетами Crysis'а или Starcraft'а, но имеющих пару минут свободного времени, пока загружается карта, я выкладываю здесь ссылку на видео, снятое в демонстрационной программе. А также, - пример того, каких эффектов теперь можно достичь, используя один лишь эмиттер (к слову, в Системе их будет неограниченное количество) - в качестве небольшого видеоролика, сделанного мною для того, кто мне бесконечно дорог. Вот этот ролик. P.S. Последнее нововведение, о котором я забыл упомянуть выше, - типы эмиттеров. Если раньше частицы могли появляться только случайным образом внутри прямоугольника, то теперь эмиттер может принимать один из четырех типов: Прямоугольник, Круг, Кольцо (Окружность) и, в качестве, последнего введенного типа, - любая заданная траектория, причем, работа с нею была организована таким образом, что размещение частицы в случайном месте траектории нагружает процессор не намного больше размещения ее на окружности или внутри круга. В демонстрационной программе эта возможность представлена последним эффектом, а также, на основе нее был создан эффект в последнем видеоролике. Подобная возможность в первой версии программы, также, отсутствовала. P.S.2. Правой кнопкой мыши можно поставить воспроизводимый эффект на паузу. :D! Emitter test.rar Последний раз редактировалось SaiLight; 03.04.2014 в 23:39. |
04.04.2014, 11:44 | #22 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
проделаннная работа, конечно, вызывает уважение, но
Цитата:
|
|
04.04.2014, 12:39 | #23 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
04.04.2014, 19:26 | #24 | ||
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
Цитата:
Цитата:
P.S. Я специально приводил размытые данные о производительности, посчитав, что на данном этапе точной статистики приводить здесь смысла нет. Я лишь указал, как, в общем, обстоят дела с программой, и на что, по-моему, расходуется больше всего времени. Последний раз редактировалось SaiLight; 04.04.2014 в 19:29. |
||
09.04.2014, 07:16 | #25 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,888
|
Всё понравилось, классно работает.
Ну, разве что мелочь - программа хранит у себя чексуммы файлов или типа того, нельзя твикать файлы партиклов. Я понимаю, что нужен редактор, и только им надо редактировать, но покопаться всё равно интересно. Насчёт производительности - для инструмента (а не конечной игры) это актуально, думаю. И думаю, оптимизации стоит добиваться переводом на массивы (ArrayObjects / BufferObjects) или сразу на GLSL , в зависимости от того, какой уровень совместимости планируется иметь. Обычно сейчас придерживаются минимальной совместимости - OpenGL2.1 Учебный материал, который может пригодиться http://ogltutor.netau.net/ |
09.04.2014, 08:29 | #26 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
SaiLight, программа не работает, если в локали разделитель целой и дробной части стоит . (ТОЧКА)
|
09.04.2014, 12:48 | #27 |
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
phomm, спасибо. Серьезная оптимизация планируется уже после завершения основных работ над редактором. Файлы с эффектами в демонстрационной программе, действительно, были защищены, во избежание подобных проблем, например, со вводом неверных значений. Впоследствии, конечно, все эти проблемы будут устранены, и мне о них известно, но, в любом случае, думаю, не стоит пытаться как-то обойти это ограничение, так как им я, как раз, и закрыл возможность введения ошибочных данных.
Вопрос 'Почему ошибки были закрыты, а не исправлены?', вполне логично напрашивающийся в данной ситуации, очень легко разрешим. Мне было необходимо создать демонстрационную программу для показа своему руководителю, после чего я уже не планировал работать над ней. Многие из возникающих в ней проблем уже были решены, многие еще только планируется решать, но необходимости в этой программе уже нет, так как система уже связана с редактором, активно расширяется и дополняется. Обо всем этом я напишу подробнее несколько позже, когда разрешу несколько возникших вопросов. |
07.05.2014, 04:09 | #28 |
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
Минутка воспоминаний. Часть 1
Рад сообщить, что работы по созданию Системы частиц и Редактора Perfect Particle 2 наконец подошли к концу. Огромный объем работы был проделан ради того, что я вижу теперь перед собой, многое пришлось добавлять и менять, от многого отказываться и не раз переделывать все в самый последний момент, удаляя то, что уже казалось идеальным, чтобы прийти к еще более лучшему результату. Чтобы прийти от того, что было 2 года назад к тому, что есть сейчас. Помню, как только начинал работать с этой темой, взятой еще в качестве своей первой курсовой работы с далеко идущими планами. Я не был уверен, что мне разрешат взять именно ее, но знал, что если будет такая возможность, обязательно за нее ухвачусь - мне было интересно попробовать себя в реализации такой сложной задачи. Я облазил весь интернет, но не нашел ничего, что прояснило бы мои мысли, тогда еще слишком запутанные для понимания таких сложных вещей. И тогда я сел и начал думать. Пытался представить себе как должны вести себя частицы, складывая эффекты - что представляет собою огонь, звездное небо, вода, падающие листья или снег... В то время я еще не знал, над чем именно думаю, даже представить себе не мог, что у меня должно получиться, просто пытался обрести какое-то понимание, позволившее бы мне решить задачу. И я обрел его, тогда еще совершенно не оформленное, только зарождающееся, появившееся на свет в виде простенькой программы, названной мною так же просто - 'Система частиц'. В то время это был мой максимальный результат, максимум, на что я был способен - я сделал то, что мог и так хорошо, как только умел. Но я остался недоволен результатом. Так появилась моя вторая программа - Perfect Particle - совершенно не сравнимая со своей предшественницей. В ней было реализовано все, до чего я мог додуматься раньше, только в более общем виде. Систему частиц, такую, какой я ее видел раньше, заменил Эмиттер, а сами Эмиттеры могли в неограниченном количестве добавляться в Систему. Появилась возможность загружать неограниченное количество изображений для Частиц, создаваемых Эмиттером, используя их, в том числе, и как анимацию. Стали возможными детальная настройка цвета частицы, настройка градиента, траекторий перемещения Эмиттеров, их времени появления и времени жизни. Все, что только могло прийти тогда в голову, было внесено в ту программу, но я опять был недоволен... Для меня оказалась безнадежно устаревшей сама модель построения эффектов, с указываемыми в виде диапазонов статичными свойствами. И тогда я рещил перейти к графикам. Так появилась основополагающая идея Perfect Particle 2. Здесь каждое свойство должно было стать динамическим, изменяющимся на протяжении жизни объекта при помощи графика. А диапазоны заменило свойство 'Отклонение', случайным образом рассчитываемое для каждой новой Частицы из заданного в Редакторе значения. И я стал работать над Системой, понимая, что это - финальная, заключительная часть всей моей деятельности на протяжении трех (2,5) лет. Я начал издалека, откуда начинал всегда, - с обдумывания и осмысления новой Системы. Я садился и что-то долго писал на огромном количестве клочков бумаги, в тетрадях, на уголках учебных страниц, - рисовал схемы, выводил какие-то простые формулы, записывал алгоритмы... Я полностью погрузился в свою идею, обдумывая ее даже на ходу, становясь рассеянным и порою совершенно никого не слушая и не запоминая ничего кроме того, что мне было нужно. Стопка моих бумажек всегда была при мне, и я разбирал их, что-то писал, вновь складывал по одному мне известной системе... |
07.05.2014, 04:10 | #29 |
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
Минутка воспоминаний. Часть 2
Я создал интерфейс программы в Delphi 7. Мне не хотелось делать что-то простое, со стандартными элементами управления, мне всегда хотелось создать что-то необычное, свое, узнаваемое. Некоторое время я безуспешно пытался освоить библиотеки для установки оформления в свою программу - SkinEngine, ThemeEngine, AlphaControls и многие другие, в каждой из них находя то, с чем не мог смириться. И тогда я принял сложное для себя решение - даже не начав еще работу над самой Системой, перейти к написанию огромного количества собственных компонентов. Это были мои первые компоненты - на них я экспериментировал, с ними разбирался во всех тонкостях этого нелегкого дела. Каждый из этих компонентов имеет свою историю, и в коде каждого из них можно заметить совершенствование моих навыков и стиль, неуловимо меняющийся от компонента к компоненту.
Я научился использовать сообщения, создавать события, вложенные компоненты, оптимизировать процесс рисования, узнал много нового, зачастую жертвуя своим сном и отдыхом ради написания очередных строк бесконечного кода. Так прошло полгода, прежде чем я понял, что моя работа над компонентами, наконец, завершена. И вот уже за пару месяцев до сдачи проекта я, наконец, вплотную занялся самой Системой частиц. И, разумеется, мои компоненты были далеко не идеальны, но я выжал из них все, что только мог, создавая новый интерфейс. Я планировал использовать светлый интерфейс, и моя работа была уже почти завершена, когда я понял, что эти цвета не подойдут к моей программе. Тогда, после нескольких дней тяжелейшей депрессии, я полностью заменил все цвета в своем интерфейсе, в итоге сделав его намного красивее и удобнее прежнего. И вот моя работа, наконец, подошла к концу. Я тестировал свою программу, исправлял ошибки, добавлял в нее новые удобства - то, что ранее мне и не снилось. Я добавил поддержку всего, что планировал, и эффекты намного превзошли мои ожидания. Я запускал ее на разных компьютерах, находил новые ошибки, вновь исправлял их, узнавал много нового, многое менял и удалял многие свойства, заменяя их более функциональными и удобными - пока не пришел к тому, что имеется. И вот я полностью доволен своим результатом, видя перед собой то, что хотел увидеть еще 2 года назад, что хотел увидеть год назад, и к чему стремился. И, все же, я знаю, что тема Системы частиц еще далеко не раскрыта и планирую дальше развивать свою программу. Далеко ли? Время покажет. |
07.05.2014, 04:12 | #30 |
Форумчанин
Регистрация: 10.01.2009
Сообщений: 132
|
Новый интерфейс
Воспоминания всегда наполнены чувствами. Это идет от художника внутри меня. Это заставляет меня, порою, жертвуя компактностью и элегантностью, достигать красоты своего кода - соразмеренных строк, общего для всех программ стиля, мягких и приятных для глаза цветов оформления... Все это - неотъемлемая часть моей работы.
Все же, перейду к более детальной технической информации для отражения всего того, что было сделано мною с момента моего последнего сообщения. А изменения, и правда, произошли серьезные. Прежде всего, они коснулись цветов и стиля оформления программы. Я понял, что светлые цвета и одно статичное окно не подходят для моей программы. Дело в том, что огромное количество разрабатываемых эффектов, - огонь, вспышки, блики - все, что необходимо создавать и тестировать исключительно на темном фоне. Иначе, их просто не будет заметно. Но светлые цвета Редактора плохо сочетались с черным прямоугольником области вывода, что очень плохо сказывалось на всем внешнем виде программы. Исходя из всего вышеперечисленного, все цветовое оформление было заменено на более темное, а основное окно разбилось на 3 - 'Окно заголовка', 'Окно свойств' и 'Окно вывода'. В общем, с ненышней цветовой схемой можно ознакомиться в тестовой программе, приложенной к данному сообщению, а чуть ниже будет представлен ее скриншот: Нажатие на персонажа включает и отключает блокировку компонентов (для просмотра стиля 'Disabled'). Для некоторых компонентов данный стиль предусмотрен не был ввиду того, что их разработка велась в самом начале моего нелегкого пути написания собственных компонентов. Но, так как подобное свойство для них нигде в программе не используется, я не стал тратить на это свое время. InterfaceTest.zip |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Perfect World сервер | Aleksey1408D | Свободное общение | 1 | 21.01.2011 14:18 |
Clock by Perfect Light | SaiLight | Софт | 2 | 28.07.2010 10:16 |