Зомбоновости #4

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

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

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

Визуальные эффекты

Начиная разработку нового Zombotron, я очень рассчитывал сохранить визуальный дух старой игры, в том числе это касалось и эффектов. Проще говоря, все визуальные эффекты должны были быть похожи на то, как это было в оригинальной игре: отрисованные и анимированные от руки. Задумка была неплоха, ведь я решил улучшить подход — теперь я буду рисовать и анимировать не целиком весь эффект, а только отдельные небольшие части, а потом, комбинируя эти части, смогу получить разнообразное количество интересных и полноценных эффектов.

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

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

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

Если присмотреться внимательно, то можно увидеть, что это не один большой эффект. Здесь используется одна большая анимированная частица огня, три раза копируется одна большая анимированная частица дыма + маленькая дополнительная анимированная частица дыма. Одним словом — это составной эффект взрыва, собранный из трех разных анимированных частиц (спрайтов).

Эффект выглядит не плохо, но не хватает различных элементов вроде искр, вспышки, каких-то разлетающихся частей. Одним словом взрывы из первых частей выглядели куда красочнее, верно!? А все дело в том, что это «сырой» эффект, который лишь отражает как могут сочетаться отдельные анимированные спрайты в одном эффекте и не более того. А далее самое интересное: добавление этого эффекта непосредственно в игру и возможность сдобрить его живым светом, дополнительными частицам и т.п.

Уже при подготовке анимированных спрайтов для экспорта в Unity я заподозрил неладное: проблема в том, что три эти анимированных частицы практически полностью заняли атлас размером 2048x2048! А тут, как вы понимаете игра такова, что живет не одним единым взрывом, а значит будет много таких атласов... со всеми вытекающими из этого проблемами. Но деваться было некуда, два дня на поиск и рисование уже потратил, а значит непременно стоит посмотреть на то, как оно будет выглядеть в игре.

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

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

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

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

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

Психология цвета

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

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

Ни для кого не секрет, что игры состоящие из разных тематических локаций более интересны к изучению и прохождению, а если локации еще подчеркнуты соответствующими цветовыми гаммами, то это только дополнительный бонус к общему игровому дизайну: «Фуух! Я наконец-то выбрался из этих депрессивных подземелий, теперь пойдем в позитивную таверну».

Упс... Я случайно увлекся и небольшая сноска о цвета-коррекции в игре вылилась в целую заметку.

Так вот, результат таков, что ламповая мультяшность старых Зомботронов улетучилась, игра повзрослела и взрывы, которые я так долго рисовал, в итоге, получились слишком «картонные». Да, они выглядят очень плоско на фоне того объема, которого удалось достичь. Итого, у меня три проблемы:

  • Взрывы не достаточно красивы;
  • Такие взрывы долго рисовать;
  • Они занимают много места в атласах.

 

Я решил попробовать сделать эффекты по подобию того, как я это делал в Fire Cacther, а вернее так все делают и результат получился куда более интересным и качественным. Вначале я сделал эффект огня.

А потом попробовал и эффект взрыва сделать:

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

Шейдеры

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

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

В общем, к шейдерам можно вернуться отдельно, когда наберусь еще немного опыта в этом вопросе.

А далее самое смешное...

Система частиц 2.0

Где-то осенью я поругал систему частиц Unity и рассказал о том, как я написал свою систему частиц для Unity. Тогда я практически 1 в 1 переписал то, что у меня было для Flash. Для Flash у меня было все просто и расширять ту систему частиц особо некуда было, потому что Flash прямой, как палка. Но с Unity дела обстоят иначе...

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

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

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

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

Такая вот суровая эта штука — разработка игр. Уверен, вы будете смеяться, но не спешите умирать от смеха. Самое смешное еще впереди!

PS: Это 200-й пост в блоге!


Индикаторы: Разработка, Unity3D, Zombotron3
Постоянная ссылка