Всем привет! Меня зовут Денис Ланин, я один из старших дизайнеров в Юзтехе. В этой статье я поделюсь опытом проектирования своей криптоколлекции Angry!Kids. Хотя она пока так и не увидела свет (и, скорее всего, никогда не увидит), этот проект подарил мне бесценный опыт и прокачал навыки. Здесь расскажу о пути проектирования, возникавших проблемах, способах их решения и том, как всё это повлияло на меня как на специалиста.

Статья будет полезна продуктовым дизайнерам, digital-художникам, NFT-разработчикам, а также всем, кто работает с цифровыми коллекциями или интересуется созданием похожих цифровых проектов. Приятного чтения!

Основные понятия

Генеративная криптоколлекция — это набор уникальных цифровых объектов (например, персонажей или картинок), которые автоматически создаются с помощью специальных алгоритмов, чаще всего на языках JavaScript или Python. Эти алгоритмы случайным или заранее заданным образом комбинируют различные элементы (атрибуты), благодаря чему получается множество уникальных вариантов с разным внешним видом и уровнем редкости.

Этапы создания

Процесс создания коллекции состоит из нескольких этапов:

  1. Сначала создаётся набор базовых атрибутов — например, причёски, глаза, одежда, аксессуары и т.д. Такие элементы ещё называются ассетами;

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

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

  4. Завершающий этап — «минтинг» (чеканка). Это процесс записи каждого сгенерированного изображения с метаданными в блокчейн.

    Созданные токены можно размещать на специализированных маркетплейсах (OpenSea, Rarible, Unique Market и других), где их могут покупать и продавать.

Когда мы немного разобрались с основными понятиями, переходим к практике.

С чего всё началось

В 2021 году я подписался на дизайнерский канал «Мамкин дизайнер» в Telegram, и так получилось, что подружился с его создателем, который позже стал моим арт-директором — Евгением Шевцовым. Именно в этот период я впервые познакомился с криптоколлекцией Chelobricks, которую Женя всего за четыре вечера нарисовал специально для Unique Network (подробный кейс можно найти на Dprofile). С этого момента у меня и появилась мысль нарисовать что-то своё.

Генеративная криптоколлекция Chelobricks
Генеративная криптоколлекция Chelobricks

Идея

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

Инструмент

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

  • Компоненты с их свойствами. Они сэкономили массу времени в процессе работы. Очень удобно править что-то в одном месте, а не искать копии по всему файлу и редактировать каждую;

  • Страницы. С их помощью удобно организовывать пространство. Например, страница draft для черновой работы, а страница done — для уже готовых элементов;

  • Стили. В Illustrator и Photoshop тоже можно создавать цветовые стили, но они не так удобны в управлении. Тем более что стилей в моём случае исчислялось десятками;

  • Интерфейс. Более дружелюбный и приятный;

  • Массовое переименовывание слоёв.

В результате Figma оказалась идеальным инструментом для организации рабочего процесса и отрисовки персонажей. Именно благодаря этому я выбрал её вместо Illustrator или Photoshop.

Первые наброски

Всё началось с этой болванки:

Первая отрисованная болванка
Первая отрисованная болванка

За основу я взял квадратный фрейм размера 1100×1100px и нарисовал манекен. Без глаз, носа и прочего. Ни о каких правилах распределения болванки во фрейме я тогда не думал. Мне понравилось, что получилось, и я решил отрисовать ещё варианты добавив детали: нос, глаза, причёску, соску:

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

Атрибуты

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

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

Тип атрибута

Идеи

Фоны

Сплошной

красный, жёлтый, оранжевый, чёрный, белый, синий, голубой, фиолетовый, розовый

Градиенты

двухцветные

Уникальный

сплошная золотая рамка по периметру; паттерны (сердечки, ножи, кресты и прочее)

Персонаж

Голова

Волосы

без волос; с волосами (чубчик, пушок, ирокез, косичка, длинные волосы, взъерошенные и прочие)

Головной убор

без головного убора; с головным убором (бейсболка, панама, ободок, нимб, рога, корона и прочее)

Глаза и брови

плачущие (слёзы), озадаченные, злые, закрытые, полуоткрытые, с прищуром, удивлённые, подмигивающие (справа/слева)

Уши

без серёжек; с серёжками на одном ухе (крест, сердечко, листочек, кинжал, капля, колечко); с серёжками на обоих ушах (крест, сердечко, листочек, кинжал, капля, колечко)

Нос

без серёжек; с серёжками (крест, сердечко, листочек, кинжал, капля, колечко)

Рот

без мимики, соска во рту, зубочистка, злость, почти плачет, крик, ухмылка, показывает язык, удивление и прочее

Мейкап

без мейкапа; с мейкапом (лейкопластырь, царапина, прыщ, бородавка и прочее)

Очки

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

Шея

Шея

без украшений; с украшениями (шарф, платок, золотая цепочка, серебряная цепочка, верёвочка с крестиком и прочее)

Одежда

Майка

без принта; с принтом (череп, кинжал, надпись «f@#k you!», капля крови, средний палец, палец вниз, цветочек и прочее)

Футболка

без принта; с принтом (череп, кинжал, надпись «f@#k you!», капля крови, средний палец, палец вниз, цветочек и прочее)

Рубашка

с галстуком; с бантом; с бабочкой

Кофта

без принта; с принтом

Костюм

Платье

без принта; с принтом

Именно эта таблица легла в основу будущей цветовой дизайн-системы и системы нейминга в коллекции.

В процессе работы с атрибутами иногда приходилось искать вдохновение. В такие моменты для меня выручал Pinterest: благодаря ему удавалось быстро находить интересные референсы для новых атрибутов:

Иллюстрации для вдохновения из Pinterest
Иллюстрации для вдохновения из Pinterest

Сетка

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

Зачем понадобилась сетка

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

Как устроил сетку

Я оставил размер фрейма 1100×1100px и разделил его на сетку по 100px. Затем подогнал болванку персонажа под новую разметку, чтобы основные части совпадали с линиями сетки. Это помогло понять, как разместить разные элементы, чтобы не было случайных перекрытий.

В процессе работы над сеткой было сформулировано правило: «Атрибут не должен выходить за пределы своей области».

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

Нейминг

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

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

После нескольких попыток я вспомнил про свою таблицу атрибутов и взял её за основу, что позволило мне выстроить удобную и понятную систему наименования:

Наименование

Семантика

Где применялось

1

Тип атрибута

attribute_type

Например, прическа, нос, рот и т.д

2

Имя атрибута

/attribute_name

Для глаз, например, грустные, веселые и т.д

3

Раса

/all; /white; /black

Для всех рас; для белых; для черных

4

Пол

/all; /girl; /boy

Для всех полов; для девочек; для мальчиков

5

Цвет атрибута

/attribute_color

Сплошные цвета и градиенты

6

Редкость

/attribute_rarity

Указывалось в проценте (%) — шансе выпадения при генерации

Пример нейминга для причесок: Hairstyle/Long_loose/White/Girl/Light_brown/20%

Гораздо позже, когда коллекция претерпела изменения, о которых расскажу ниже, я изменил классификацию редкости и вместо процентов стал использовать варианты common, uncommon, rare, epic, legendary.

Массовое переименование слоёв

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

  1. Match. С её помощью удобно искать совпадения по словам и символам в именах выбранных слоях. Например, заменить в слоях, в названии которых присутствует слово frame, на любое другое за раз. Важно! Поле Match чувствительно к регистру. Если текущее имя слоёв frame, а в поле написать Frame с большой буквы, то поиск не сработает;

  2. Rename to. Полностью переименовывает выделенные слои, заменяя их старые имена на новые. Используется, когда нужно задать одинаковое имя сразу нескольким объектам;

  3. Replace with. Работает только в связке с заполненным полем Match. Заменяет найденный текст из Match на новый во всех выбранных слоях. Пример: выделены слои с именем button/primary, нужно заменить primary на secondary. В поле Match пишете primary, в поле Replace withsecondary. Все слои с названием button/primary станут button/secondary. Т.е., меняются только те части имени, которые совпадают с шаблоном из поля Match.

  4. Current name. Позволяет добавлять текст до или после текущего имени слоя с помощью спецсимволов $&. Это полезно, если нужно дополнить имя, не теряя его основу. Например, выбраны слои с именем primary и слева надо добавить button/. По нажатию кнопки Current name в поле Rename to добавляются символы $&. Ставите каретку перед $& — получается |$&. Вводите текст: button/$&. В результате имена слоёв изменятся с primary на button/primary. Если каретку поставить справа от символов, то результатом будет primarybutton/.

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

Дизайн-библиотека

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

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

Но если появляется потребность в новом, уникальном элементе — я сразу делаю его компонентом. То же самое касается и стилей. В этом подходе есть два больших плюса:

  • Когда интерфейс и количество элементов в нём быстро множится, мне не придется создавать новый компонент и искать его копии по всем макетам, чтобы заменить;

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

Дизайн-библиотеку Angry!Kids я начал собирать как только отрисовал первый манекен персонажа. Для начала я обернул в компоненты все основные части: голову, уши, шею и глаза:

_core-компоненты
_core-компоненты

Цветовые стили

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

Библиотека стилей

BG_color

Solid

Black, White, Red, Orange, Yellow, Green, Blue, Dark_blue, Purple

Gradient

Red-Orange, Orange-Yellow, Yellow-Green, Green-Blue, Blue-Dark_blue, Dark_blue-Purple, Purple-Red

Skin

White

Ears, Head_primary, Head_shadow, Neck, Neck_shadow

Black

Eyebrows, Head_primary, Head_shadow, Neck_shadow, Ears

Hairstyle

White

Silver-01, Gold-01, Brown-01, Brown-02, Brown-04, Brown-05, Brown-06, Violet-01,Orange-01, Orange-02, Orange-03, Red-01, Red-02, Black-01, Green-01, Blue

Black

Dark_brown, Black, Red

Eyes

Eyeball, Hilight, Brown_light, Drown_dark, Green, Gray, Blue, Close_white, Close_black, Cry

Eyebrows

Wight, Brown, Brown_dark, Eyebrows_&_eyelashes, Black

Nose

Nose_white, Nose_black

Mouth

Mouth_inside, Mouth_close_White, Mouth_close_Black, Teeth, Tongue_hilight

Tongue

Tongue_hilight, Tongue_main, Tongue_shadow

Nipple

Clothes

Head

Primary, Secondary, Shadow_1, Shadow_2, Primary, Shadow, Black, Primary_2, Shadow, Shadow_2

Body

Red, Orange, Yellow, Green, Blue, Dark_blue, Pink, Kant, Red_intence, White, Transparent_30, Light_gray, Dark_gray, Deep_black

Make-up

Freckles, Blush, Pimple_hilight, Pimple_body, Bandage_light_gray, Bandage_body, Bandage_white, Scar, Black

Material

Chamomile

Primary, Secondary, Yellow

Glasses

White, Hilights

Emerald

Emerald_Hilight, Emerald_primary, Emerald_Shadow, Emerald_Deep_shadow

Gold

Gold_hilights, Gold_primary, Gold_shadow

Sapphire

Sapphire_Deep_shadow, Sapphire_hilight, Sapphire_primary, Sapphire_shadow

Silver

Silver, Silver_shadow), Steel (Black_steel

Rubin

Rubin_Hilights, Rubin_primary, Rubin_Shadow, Rubin_Deep_shadow)

Head

Bandage

Primary, Shadow

Rim

Primary

Horns

Horns

Компоненты

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

Новый вектор развития

На момент, когда коллекция была готова, я уже работал в Юзтехе как раз над проектами Unique Network. Я показал коллекцию своему руководству, и она им понравилась. Мы начали обсуждать планы по генерации и публикации, но вскоре у команды появились более важные задачи, и приоритеты сместились. Я отнёсся к этому спокойно — так часто бывает в работе над продуктами. В конечном итоге коллекция ушла в «стол», и даже я о ней постепенно забыл.

Шло время. Меня перевели на другой проект. И вот, когда меньше всего ожидал, мне написал бывший продакт-менеджер из Unique Network с интересным предложением. Оказалось, команда решила реализовать новый функционал — Customizable NFTs.

Customizable NFTs в Unique Network — это такие NFT, внешний вид которых можно менять, добавляя к ним другие NFT, так называемые Wearables (носимые аксессуары). Всё это работает через технологию вложенности (Nesting), т.е. в один NFT можно было вкладывать другие.

Как это работает:

  • Пользователь может, например, «надеть» аксессуары на цифрового персонажа (базовый NFT), просто вложив в него другие NFT (аксессуары);

  • Изображение такого NFT динамически обновляется в кошельке или маркетплейсе. Ссылка на картинку хранится on-chain, а сервис динамически рендерит внешний вид в зависимости от вложенного содержимого;

  • Все элементы (базовые персонажи и вложенные предметы) полностью управляются через блокчейн: их можно свободно продавать, передавать или использовать в приложениях и играх;

  • Можно создавать серии коллекций. Например, опубликовать основную коллекцию с базовыми персонажами, а затем — коллекцию с дополнительными аксессуарами для них.

Это давало авторам намного больше свободы и открывало новые горизонты для творчества. Мне предложили адаптировать Angry!Kids под этот новый функционал, и я с удовольствием взялся за задачу.

Задача №1. Причёски

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

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

До модернизации
До модернизации

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

После модернизации
После модернизации

Задача №2. Размеры персонажей

Когда в самом начале проектирования коллекции я рисовал персонажей, меня не покидало чувство, что мне что-то не нравится. И только на этапе модернизации четко стал понимать, что персонажам «тесно». Особенно это бросалось в глаза у девочек: их причёски были объёмнее, чем у мальчиков, а отдельные элементы буквально упирались в границы формата:

До масштабирования атрибутов
До масштабирования атрибутов

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

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

  1. Я создал новые фреймы такого же размера, как исходный — 1100×1100px;

  2. Вставил в каждый из них слои с атрибутами;

  3. Использовал инструмент Scale (горячая клавиша K), чтобы уменьшить размеры всех элементов прямо внутри новых фреймов;

  4. Выровнял уменьшенные атрибуты по центру и по нижней стороне внутри нового фрейма.

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

До и после масштабирования
До и после масштабирования

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

Задача №3. Превью для аксессуаров

С появлением нового функционала Customizable NFTs стало возможным добавлять к аксессуарам миниатюры-превью. Это заметно оживляло коллекции: теперь вместо просто висящего в воздухе аксессуара можно преподнести элемент более креативно и интересно.

Атрибуты без превью
Атрибуты без превью

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

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

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

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

Я нарисовал первый вариант. Стало интереснее, но пока выглядело сыро:.

Первый вариант превью для атрибутов
Первый вариант превью для атрибутов

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

Итоговый вариант превью для атрибутов
Итоговый вариант превью для атрибутов
Превью для common
Превью для common
Превью для uncommon
Превью для uncommon
Превью для rare
Превью для rare
Превью для epic
Превью для epic
Превью для legendary
Превью для legendary

Порядок слоёв

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

  1. Нос;

  2. Очки;

  3. Рот;

  4. Глаза;

  5. Мейкап;

  6. Цепочка;

  7. Одежда;

  8. Серьги;

  9. Причёска;

  10. Фон.

Масштабирование

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

Уникальные персонажи

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

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

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

Часть коллекции уникальных персонажей
Часть коллекции уникальных персонажей

Телеграм-стикеры

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

Первый набор стикеров Angry!Kids
Первый набор стикеров Angry!Kids

Технические нюансы. Одним из главных вызовов стала светлая обводка вокруг персонажа — она была нужна, чтобы чётко отделять стикер от любого фона чата. В Figma реализовать такую обводку оказалось непросто, из-за сложности конструкции персонажей. Поэтому я выгрузил изображения в формате PNG и доработал их в Photoshop.

В Photoshop создал новый файл с артбордами размером 512×512px (это рекомендуемый размер для стикеров в Telegram), разместив на каждом по персонажу. Эффект обводки протестировал на одном из персонажей — результат устроил, и я просто продублировал этот стиль на остальные стикеры.

Всё остальное было делом техники — экспортировал готовые стикеры в формате PNG и опубликовал их через стандартные Telegram-инструкции.

Разделение стикеров. Поначалу в одном наборе стикеров были и мальчики, и девочки, но, попользовавшись ими какое-то время, понял, что что их нужно разделять. Так появились два новых набора — Angry!Boys и Angry!Girls — «для него» и «для неё» с одним и тем же набором реакций:

Ещё одной идеей стала серия стикеров для влюблённых Angry!Talks.Boys и Angry!Talks.Girls с тематическими фразами:

Набор стикеров Angry!Talks.Boys
Набор стикеров Angry!Talks.Boys
Набор стикеров Angry!Talks.Girls
Набор стикеров Angry!Talks.Girls

Обновление коллекции

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

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

Эксперимент

В декабре 2023 года Dprofile объявил конкурс стикеров для дизайнеров «Стикервёрс», где каждый мог испытать свои силы и проявить творческий потенциал. Я внимательно следил за этим событием, но не участвовал в нём.

Ради интереса решил ещё раз протестировать свою коллекцию и создать набор стикеров просто «по фану», вне конкурса, тем более, что к тому времени он уже закончился. В качестве главного героя выбрал дизайнера Александра Лагуту — сооснователя платформы Dprofile. За полчаса собрал небольшой концепт, и вот что получилось:

Концепт стикеров
Концепт стикеров

Статистика по коллекции

Немного статистики. На сегодняшний день криптоколлекция Angry!Kids включает в себя:

  1. 10 типов атрибутов;

  2. 769 атрибутов отрисовано во всех типах;

  3. 274 атрибута подготовлено к генерации: причёски (100), фоны (32), одежда (40), глаза (22), носы (10), рты (15), цепочки (10), макияж (9), очки (27) и серьги (9);

  4. Из подготовленных атрибутов можно сгенерировать 9 237 888 000 000 уникальных комбинаций.

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

Опыт и уроки, которые я получил

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

  2. Стандартизация. Чёткая структура проекта помогает избежать путаницы и упрощает масштабирование.

  3. Осознанное использование инструментов. Массовое переименование слоёв в Figma — must have при работе с большим количеством элементов. Это существенно экономит время и минимизирует ошибки ручного переименования.

  4. Компоненты и стили — база. Создание компонентов и стилей для повторяющихся элементов позволяет быстро вносить правки и дорабатывать проект в библиотеке, не меняя каждый экземпляр отдельно.

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

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

P.S.: Для тех, кто дочитал до конца

Не могу не рассказать про свою вторую коллекцию, которую начал делать почти сразу после Angry!Kids. Эта идея появилась всё в том же 2021 году, когда я трудился над проектом для Департамента здравоохранения Москвы. Одной из задач было придумать аватар для чат-бота. В качестве референса прислали робота Валли из одноимённого мультфильма. Нужно было уловить его типаж и эмоции, но оформить всё в собственном стиле. Так родился этот малыш:

Аватар для чат-бота
Аватар для чат-бота

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

В итоге родилась коллекция Just Robots:

Коллекция Just Robots
Коллекция Just Robots

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

Статистика по коллекции

  1. 7 типов атрибутов;

  2. 1222 атрибута отрисовано во всех типах: фоны (17); тело (162); люки (12); голова (432); глаза (540); аксессуары для головы (33); стикеры (которые позаимствовал из Angty!Kids) (26);

  3. Из подготовленных атрибутов можно сгенерировать 6 614 697 323 520 уникальных комбинаций.

P.P.S.

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

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

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

Комментарии (0)