пиксельные персонажи с анимацией

Галерея: 10 пиксельных художников-аниматоров

Подборка российских и зарубежных художников, создающих завораживающие пиксельные анимации.

Пиксельная анимация от японского художника Motocross Saito

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

waneella

waneella родилась в Москве и училась во ВГИКе на факультете мультимедиа. Поступила туда с трудом: экзамены она сдала хуже всех, так как преподаватели сомневались в способностях художницы. Но именно это подстегнуло waneell’у развиваться и много рисовать — и уже на третьем курсе начать работать над своими проектами. Художница искала способ отдохнуть от монументального искусства и выбрала пиксель-арт, так как в детстве много играла в приставку и хорошо знала стилистику.

Главный мотив творчества waneell’ы — урбанистическая Япония. В городских пейзажах ее авторства нетрудно угадать Токио. Художница лично ездила туда на выставки и представляла свои работы на Pixel Art Park 5 в 2018 и Pixel Art Park 6 в 2019 годах. Первая персональная выставка waneell’ы в России состоялась в 2020 году. Мультимедийная экспозиция «Поезд «Москва – Токио» открылась в столице в ЦТИ «Фабрика».

У waneell’ы есть совместный проект с музыкантом e.sanchillo: он накладывает музыку на пиксельные анимации художницы. Получаются такие завораживающие видео:


А вот несколько анимаций от художницы:

Yuuta Toyoi

«Пиксель-арт — это уродливая форма искусства в низком разрешении», — говорит Юта Тойой, популярный в Японии иллюстратор. Он начал рисовать пиксель-арт еще в средней школе: перерисовывал любимых персонажей аниме. Художник использовал Paint и даже Excel, заливая каждую ячейку цветом. После школы Тойой переехал из префектуры Вакаяма в Токио. Пока он искал работу, в качестве хобби продолжал рисовать с помощью тачпада на своем стареньком ноутбуке.

Через несколько лет Тойой стал членом творческого сообщества Geek House. Художник начал рисовать анимации, используя программу EDGE2 для создания пиксель-арта и Adobe Lightroom — для коррекции цветов. Несколько лет он проработал иллюстратором в Токио, а потом переехал в горы Кумано, где и сейчас живет вместе с тремя котами. Обычно художник рисует в 32-цветной палитре, но порой использует 128 цветов.

Японский художник APO+ часто изображает одинокого женского персонажа. Иногда — двух героев, пойманных «в объектив» в момент созерцания. Художник говорит, что старается запечатлеть безмятежность, хотя «порой выходит одиночество и печаль». Он одинаково мастерски рисует как меланхоличные, так и динамичные боевые сцены.

APO+ вдохновляется работами студии Гибли и фильмом «Бегущий по лезвию», любит киберпанк и научную фантастику. Например, его серия Future Lantern разворачивается в будущем, где инопланетные захватчики угрожают человечеству. По задумке автора, только девушки с очень редким геном способны нанести вред захватчикам. Тайная организация вербует их, обучает и отправляет на битву с инопланетной угрозой. Фанаты художника надеются, что APO+ разовьет этот проект в игру или мультфильм.

lennsan

Японский художник lennsan рисовал преимущественно городские и природные пейзажи в меланхоличной атмосфере. С 2020 года временно не публикует пиксельную анимацию. Он переехал в Гамбург и занимается 3D-моделированием: начал с отрисовки текстур, а теперь создает локации и освещение в Unreal Engine.

ozumikan

Японский инди-разработчик игр ozumikan выпустил две игры в жанре экшн и разрабатывает третью. Первая игра in:dark — о девушке, которая потеряла воспоминания. Ее тело дрейфует в черном океане беспамятства вслед за душой, ищущей выход из тьмы. Вторая игра parasol drive — о маленькой девочке, которая летает на зонтике и спасает Землю от обломков астероида.

Сейчас художник работает над пиксельной игрой Hate no Machina: занимается всем от визуала до программирования, за исключением фоновой музыки. Сюжет пока держится в секрете. Известно, что игра выйдет как для ПК, так и для мобильных устройств.

valenberg

Valenberg, художник из Нюрнберга по имени Ральф, занялся пиксель-артом благодаря играм Monkey Island и Day of the Tentacle, которые любил в детстве. Ему нравилось додумывать внешность и историю персонажа, нарисованного всего из нескольких пикселей. Сейчас Ральф вдохновляется японскими авторами (например, Харуки Мураками) и своими фотографиями Токио, где был три раза.

Художник признается, что никогда не испытывал серьезный творческий блок, но часто сталкивается с ленью или отсутствием идей. Чтобы справиться с этим, он использует «народные средства»: делает перерывы на несколько часов или дней, ищет вдохновение в рисунках других художников, книгах и музыке, просто встречается с друзьями. С 2014 года Valenberg зарабатывает исключительно пиксель-артом, а в качестве хобби рисует скетчи и моделирует в 3D.

Motocross-Art

Motocross Saito — художник, дизайнер, ди-джей и музыкант из Нагои. Он рисует пиксельные анимации, вдохновляясь культурой и музыкой 80-х и 90-х годов с акцентом на хип-хоп. Многие из анимированных сцен Saito имеют общего персонажа: школьницу с синими волосами, которая любит ритмичную музыку, перебирает виниловые пластинки в магазинах, пишет песни и заботится о немецкой овчарке. Поклонники Saito надеются, что он работает над мультфильмом или игрой.

Заниматься пиксель-артом художник начал 2016 году. Пока Saito лежал в больнице, восстанавливаясь после ДТП, он захотел нарисовать картину. Под рукой не оказалось бумаги и карандаша, поэтому художник «написал» ее в воображении и воплотил в жизнь после выписки. Сейчас на создание одной GIF-ки у него уходит около 3-х дней (или примерно 9 чистых часов): чем больше разрешение, тем больше времени занимает работа над анимацией.

KIROKAZE

KIROKAZE — художник из Лимы, по специальности — графический дизайнер. Он пробовал заниматься цифровой живописью и флэш-анимацией, но признается, что «не преуспел». Художник рисует пиксель-арт с 2015 года, мечтает бросить работу дизайнером и «посвятить себя творчеству». KIROKAZE работает в Adobe Photoshop и Aseprite. На одну пиксельную анимацию он тратит от 4 до 10 часов — в зависимости от сложности.

Художник изучал пиксель-арт самостоятельно и не рекомендует так делать: самообучение занимает много времени. Но энтузиастам советует ознакомиться с руководствами по цветам, анимации и светотени. А еще посмотреть ролик «12 принципов анимации», изучить технику субпиксельной анимации, прочитать книгу Майкла Маттеси Force: Dynamic Life Drawing for Animators и не забывать про технические аспекты работы с кадровой частотой и ключевыми кадрами.

Евгения Гончарова, 22-х летняя художница под ником 6VCR, живет и работает в Калининграде. Она закончила Польско-японскую академию информационных технологий, работала в Варшаве концепт-художником на VR и AR проектах. Евгения оставила должность, чтобы сосредоточиться на пиксель-арте. Сейчас она зарабатывает исключительно творчеством: рисует обложки для альбомов, иллюстрации для печати на одежде, продает свой мерч.

В работах художницы преобладает постсоветская эстетика с характерной архитектурой и бытом. Евгении нравятся брутальные индустриальные пейзажи. Она считает свое искусство меланхоличным и ироничным одновременно, любит изображать печальную и даже «убогую» действительность красивой. Творчество художницы популярно за границей: иностранцам любопытна «русская действительность».

romaincourtois

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

Один из проектов Ромена — это презентация американской компании Lemonade во Франции. Он создал пиксельную анимацию, в которой самолет пролетает высоко над Эйфелевой башней и оставляет за собой дымовой след цвета #FF0083. Художник признается, что «было невероятно захватывающе рисовать Париж с такого необычного ракурса». Посмотреть анимацию целиком можно тут.

Источник

Создание пиксель-арт анимаций

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

Едва ли не самая важная часть всех этих процессов — анимация. Она «оживляет» картинку и с ней оживляет игру.

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

В двух словах о ней для контекста: наша игра будет социальной RPG, действие которой наполовину происходит в небольшом американском городке 60-х годов с множеством активностей, а вторая половина состоит из тактических боев с монстрами в «альтернативном мире».

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

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

Анимации можно разделить на несколько категорий:

В первом представлена обычная анимация бездействия и ходьбы вниз. Хорошая основа для любой игры.

В первом представлена обычная анимация бездействия и ходьбы вниз. Хорошая основа для любой игры.

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

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

Самый характерный пример зацикленной анимации – это передвижение персонажа. Бег главной героини состоит из 10-ти кадров. Зачастую можно увидеть циклы из 8-ми или 16-ти кадров, но мы выбрали средний вариант, т.к. 10-ти кадровый бег получился плавнее 8-микадрового и не требует много ресурсов, в отличие от цикла из 16-ти.

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

Важно учитывать, что каждая деталь персонажа имеет собственный вес. Например, волосы при беге будут двигаться более активно, чем рюкзак героини. Последний, в свою очередь, “отстает на кадр” от амплитуды движения хозяйки. Когда она начинает двигаться вверх, рюкзак всё ещё остается в своем прежнем положении и только в следующем кадре поднимается на необходимый уровень.

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

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

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

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

После удара героиня теряет скорость и её анимация опять становится медленной и более плавной до тех пор, пока она не начнёт двигаться назад на первичную позицию. Стоит отметить, что оказавшись у нужного места, она “проскальзывает” несколько пикселей, уменьшая тем самым скорость и создавая плавность.

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

Но большие вложения в пиксель-арт анимацию имеют шанс окупиться большой “отдачей” – как в смысле востребованности игры, так и в смысле впечатлений, удовольствия игрока. Но всем, кто, как и мы, обращается к пиксель-арту, мы желаем успехов и удачи на этом пути!

Источник

Adobe Photoshop: Рисуем и анимируем персонажа в технике Pixel Art

В этом уроке вы научитесь рисовать и анимировать персонажей в технике Pixel Art. Для этого вам понадобится только программа Adobe Photoshop. В итоге получится GIF с бегущим космонавтом.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

I. Настройка документа и инструментов

Шаг 1

Выберите Pencil (карандаш) на панели инструментов – это будет основной инструмент для нашего урока. В настройках выберите тип Hard Round brush, и установите остальные значения так же как на картинке. Наша цель – сделать перо карандаша максимально резким.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 2

В настройках Eraser Tool (ластик) выберите режим Pencil Mode, и установите остальные значения как показано на картинке.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 3

Включите пиксельную сетку Pixel Grid (View > Show > Pixel Grid). Если в меню нет такого пункта, то зайдите в настройки и включите графическое ускорение Preferences > Performance > Graphic acceleration.

Обратите внимание: Сетка будет видна только на вновь созданном холсте при увеличении масштаба 600% и более.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 4

В настройках Preferences > General (Control-K) поменяйте режим интерполяции изображения на режим Nearest Neighbor (по соседним пикселам). Это позволит границам объектов оставаться максимально четкими.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

В настройках единиц измерения и линеек установите единицы измерения линеек в пикселах Preferences > Units & Rulers > Pixels.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

II. Создание персонажа

Шаг 1

И вот теперь, когда все настроено, мы можем приступить непосредственно к рисованию персонажа.

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 2

Уменьшите масштаб эскиза до 60 пикселей в высоту, используя комбинацию клавиш Control+T, или команду Edit > Free Transform.

Размер объекта отображается на информационной панели. Обратите внимание, чтобы настройки интерполяции были такими же, как мы делали в шаге 4.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 3

Приблизьте эскиз на 300-400%, чтобы было легче работать, и уменьшите прозрачность слоя. Затем создайте новый слой и обрисуйте контуры эскиза, используя Pencil Tool. Если персонаж симметричный, как в нашем случае, можно обрисовать только половину, а затем продублировать и отразить нарисованное зеркально (Edit > Transform > Flip Horizontal).

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Ритм: Чтобы нарисовать сложные элементы разбивайте их на части. Когда пикселы (точки) в линии образуют «ритм», например, 1-2-3, или 1-1-2-2-3-3, набросок выглядит более гладко для человеческого глаза. Но, если того требует форма, этот ритм может быть нарушен.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 4

Когда контур будет готов, можно выбрать основные цвета и раскрасить большие формы. Делайте это на отдельном слое под контуром.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 5

Сгладьте контур, дорисовывая тень по внутреннему краю.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 6

Создайте новый слой для бликов.

Выберите режим наложения Overlay из выпадающего списка на панели слоев. Нарисуйте светлым цветом над теми областями, которые хотите подсветить. Затем сгладьте блик, применив фильтр Filter > Blur > Blur.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 7

Теперь космонавту нужно добавить контрастности. С помощью настроек уровней (Image > Adjustments > Levels) сделайте его ярче, а затем отрегулируйте оттенок с помощью опции Color Balance (Image > Adjustments > Color Balance).

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Теперь персонаж готов к анимации.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

III. Анимирование персонажа

Шаг 1

Создайте копию слоя (Layer > New > Layer Via Copy) и сдвиньте ее на 1 вверх и на 2 пиксела правее. Это ключевой пункт в анимации персонажа.

Снизьте прозрачность оригинального слоя на 50% чтобы видеть предыдущий кадр. Это называется “Onion Skinning”(режим плюра).

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 2

Теперь согните руки и ноги персонажа так, как будто он бежит.

● Выделите левую руку инструментом Lasso
● Используя FreeTransformTool (Edit > FreeTransform) и удерживая клавишу Control, передвиньте границы контейнера так, чтобы рука отодвинулась назад.
● Выделите сначала одну ногу, и немного растяните ее. Затем вторую ногу наоборот сожмите так, чтобы создалось ощущение, что персонаж шагает.
● С помощью карандаша и ластика подправьте часть правой руки ниже локтя.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 3

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 4

Сделайте копию второго слоя и отразите ее по горизонтали. Теперь у вас есть 1 базовая поза и 2 в движении. Восстановите непрозрачность всех слоев до 100%.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 5

Перейдите Window > Timeline чтобы отобразилась Timeline панель, и нажмите Create Frame Animation.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

На временной шкале сделайте следующее:

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 6

Чтобы выбрать нужный слой для каждого кадра нажмите иконку Eye возле названия слоя на панели слоев. Порядок должен быть такой:

Базовая позиция→Бег с правой ноги→Базовая позиция→Бег с левой ноги.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Нажмите на пробел, чтобы проиграть анимацию.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Шаг 7

Теперь сохраните результат. Перейдите File > SaveForWebи выберите GIFформат. Установите значение 300% в графе Размер для лучшего результата, и нажмите Save.

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Поздравляем! Ваш анимированный пиксельный персонаж готов!

Источник

Модульные спрайтовые персонажи и их анимация

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

За последние два месяца я создал целых 9 новых действий игрока (такие забавные вещи как блокировка щитом, уворачивание в прыжке и оружие), 17 новых носимых предметов, 3 набора брони (пластинчатый, шёлковый и кожаный) и 6 видов причёсок. Также я завершил создавать всю автоматизацию и инструменты, поэтому всё уже используется в игре. В статье я расскажу, как этого добился!

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

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

Краткое описание

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

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Я раскопал этот древний GIF моего первого месяца работы с Unity. На самом деле этот модульный спрайт оказался одним из первых моих экспериментов в разработке игр!

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

В то время я создавал всю свою анимацию в Photoshop и не заморачивался автоматизацией процесса, поэтому он был очень скучным. Потом я подумал: «Так, основная идея сработала, позже я добавлю новые анимации и снаряжение». Оказалось, что «потом» — это несколько лет спустя.

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

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Спойлер: всё получилось замечательно. Ниже я раскрою свои ***секреты***

Модульная система спрайтов

I. Познай свои границы

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

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

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

Поделюсь копией моего журнала работы за последние два месяца. Учтите, что это время идёт в добавок к моей обычной работе, где я провожу по 30 часов в неделю:

II. Смена палитры ради светлого будущего

С умом используя цвета в дизайне спрайтов, можно отрисовать один спрайт и создать множество различных вариаций при помощи смены палитры. Можно менять не только цвета, но и создавать различные включаемые и отключаемые элементы (например, заменой цветов на прозрачность).

Каждый набор брони имеет 3 вариации, а смешивая верхние и нижние части, можно получить множество комбинаций. Я планирую реализовать систему, в которой можно собрать один набор брони для внешнего вида персонажа, а другой — для его характеристик (как в Terraria).

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

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

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

Я не буду объяснять всё в подробностях, а вместо этого расскажу о способах реализации этой техники в Unity, и об их плюсах и минусах.

1. Текстура поиска для каждой палитры

Это наилучшая стратегия для создания вариаций врагов, фонов и всего того, где множество спрайтов иеет одинаковую палитру/материал. Различные материалы нельзя сгруппировать в батчи, даже если они используют одинаковый спрайт/атлас. Работа с текстурами довольно мучительна, но палитры можно изменять в реальном времени, заменяя материалы, с помощью SpriteRenderer.sharedMaterial.SetTexture или MaterialPropertyBlock, если вам нужны разные палитры для каждого экземпляра материала. Вот пример фрагментной функции шейдера:

2. Массив цветов

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

Я представил свои палитры как тип ScriptableObject и использовал для их редактирования инструмент MonoBehaviour. Проработав долгое время над редактированием палитр в процессе создания анимаций в Aseprite, я понял, какие инструменты мне требуются и писал эти скрипты соответствующим образом. Если вы хотите написать собственный инструмент для редактирования палитр, то вот какие функции я обязательно рекомендую реализовать:

— Обновление палитр на различных материалах при редактировании цветов для отображения изменений в реальном времени.

— Присваивание названий и изменение порядка цветов в палитре (используйте поле для хранения индекса цвета, а не его порядка в массиве).

— Выбор и редактирование нескольких цветов за раз. (Совет: поля Color в Unity можно копипастить: просто нажмите на один цвет, скопируйте, нажмите на другой цвет, вставьте — теперь они одинаковы!)

— Применение цвета оверлея ко всей палитре

— Запись палитры в текстуру

3. Единая текстура поиска для всех палитр

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

Во-первых, нужно будет упаковать все палитры в одну большую текстуру. Затем вы используете цвет, заданный в компоненте SpriteRenderer (AKA цвет вершины) для определения строки, которую надо считать из текстуры палитры в шейдер. То есть палитра этого спрайта управляется через SpriteRenderer.color. Цвет вершины — это единственное свойство SpriteRenderer, которое можно менять без нарушения батчинга (при условии, что все материалы одинаковы).

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

пиксельные персонажи с анимацией. Смотреть фото пиксельные персонажи с анимацией. Смотреть картинку пиксельные персонажи с анимацией. Картинка про пиксельные персонажи с анимацией. Фото пиксельные персонажи с анимацией

Чудеса замены палитр и слоёв спрайтов. Так много комбинаций.

III. Автоматизируйте всё и применяйте подходящие инструменты

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

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

На стороне Unity серьёзные проблемы у меня возникли в двух местах: в загрузке/нарезке спрайтшита и в построении клипа анимации. Мне бы очень помог понятный пример, поэтому вот фрагмент кода из моего импортёра, чтобы вы не так мучились:

Если вы этого ещё не делали, то поверьте — начать создавать собственные инструменты очень легко. Самый простой трюк заключается в размещении в сцене GameObject с привязанным к нему MonoBehaviour, которое имеет атрибут [ExecuteInEditMode]. Добавьте кнопку, и вы готовы к бою! Помните, что ваши личные инструменты не обязаны выглядеть хорошо, они могут быть чисто утилитарными.

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

Как я перерос возможности Mecanim: жалоба

Со временем прототип системы модульных спрайтов, который я создал с помощью Mecanim, стал самой большой проблемой при апгрейде Unity, потому что API постоянно сильно менялся и был плохо задокументирован. В случае простого конечного автомата было бы разумно иметь возможность запрашивать состояния каждого клипа или менять клипы во время выполнения. Но нет! Из соображений производительности Unity запекает клипы в их состояния и заставляет нас использовать для их смены неуклюжую систему переопределений.

Сам по себе Mecanim не такая уж плохая система, но мне кажется, что ему не удаётся реализовать свою основную заявленную особенность — простоту. Идея разработчиков заключалась в том, чтобы заменить то, что казалось сложными и мучительным (скриптинг) чем-то простым (визуальным конечным автоматом). Однако:

— Любой нетривиальный конечный автомат быстро превращается в дикую паутину узлов и соединений, логика которой разбросала по разным слоям.

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

— Забавно, что в результате вам всё равно приходится писать код, ведь чтобы конечный автомат делал что-то интересное, нужен скрипт, вызывающий Animator.SetBool и подобные ему методы.

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

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

Рассказ о том, как разработчики Firewatch попали в ад визуального скриптинга. Самое забавное в том, что когда докладчик показывает наиболее простые примеры, они всё равно выглядят безумно. Зрители в буквальном смысле стонут на 12:41. Добавьте огромные затраты на обслуживание, и вы поймёте, почему я сильно не люблю эту систему.

Многие из этих проблем даже не вина разработчиков Mecanim, а просто естественный результат несовместимых идей: нельзя создать общую и в то же время простую систему, а описывать логику при помощи изображений сложнее, чем просто словами/символами (кто-нибудь помнит флоучарты UML?). Я вспомнил фрагмент из доклада Зака Макклендона на Practice NYC 2018, и, если найдётся время, рекомендую вам посмотреть видео целиком!

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *