Оглавление

  1. Введение

  2. Краткий обзор нейросети

  3. Описание требований

  4. Создание шаблона игральной карты

  5. Генерация карт типа «герой»

  6. Генерация карт типа «предмет»

  7. Результаты


Введение

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

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

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

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


Почему Kandinsky?

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

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

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

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


Опишем желаемый результат

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

Создадим 2 типа карт:

  • Герой

  • Предмет

Герой

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

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

Характеристики героев:

  • Урон

  • Здоровье

  • Мана

  • Удача (не совсем стандартный вариант, но почему бы и да)

Теперь необходимо придумать самих героев. В игре будет 2 героя «война» и 2 героя «мага»:

  • Berserker — воин ближнего боя, имеет повышенный запас здоровья, средний урон, низкий запас маны и удачи

  • Lightning mage — маг, боец дальнего боя, имеет высокий урон и запас маны, но небольшой запас здоровья и удачи

  • Thief — воин ближнего боя, имеет повышенный показатель удачи, средний урон и невысокие значения здоровья и маны

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

Предмет

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

Опишем 4 возможных предмета:

  • Knowledge book — книга знаний, незначительно увеличивающая удачу и запас маны

  • Dagger of faith — кинжал, увеличивающий урон владельца

  • Medallion of life — медальон жизни, дарует владельцу дополнительное здоровье

  • Lucky beer (ну а куда без пива?) — значительно увеличивает удачу на несколько ходов вперёд, но пропадает после использования


Создадим шаблон игральной карты

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

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

Финальный шаблон игральной карты будет выглядеть следующим образом:

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


Создадим карты типа «герой»

Как выбрать стиль?

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

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

Нам показался подходящим стиль художника живописца по имени Дэниел Ф. Герхарц (Daniel F. Gerhartz). Арт в таком стиле отлично впишется в уже заготовленный шаблон игральной карты — в каждом запросе будем добавлять правило, по которому нейросеть будет рисовать арт в стиле работ данного художика.

Как ускорить процесс генерации

На данный момент для генерации можно использовать телеграм бота от Sber AI или платформу Fusion Brain.

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

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

Карта героя «Berserker»

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

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

Full body shot, medieval woman. red eyes, crown on her head, gold hair, spear in the hand, action scene, beautiful painting by Daniel F Gerhartz

По итогу получилось несколько близких к замыслу вариантов:

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

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

Первая карточка для героя "Berserker" готова
Первая карточка для героя "Berserker" готова

Карта героя "Lightning mage"

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

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

И снова не то пальто. Цвет не совсем подходящий, окружение не то. Немного изменили запрос. Ещё раз меняем условия:

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

Конечный запрос выглядит следующий образом:

Half-body portrait shot, diagonal shot, man, medieval mage, magician hat, glasses, lightnings, cloak, elegant, evil, action scene, art by Daniel F Gerhartz

Получаем результат:

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

Выглядит довольно достойно. Чем-то напоминает Рейдена из Mortal Combat.

Вписываем его в шаблон карточки и переходим к следующему герою!

Карта героя "Lightning mage"
Карта героя "Lightning mage"

Карта героя «Pyromancer»

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

Первые результаты вышли такие:

Получилось симпатично, но есть одно но…

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

Пробуем составить запрос с новыми данными:

Half-body shot, frontal shot, medieval woman, mage cloak, an ancient ornate intricate old tome fiery spell book in hands, crown, elegant, kind, action scene, green tone, beautiful painting by Daniel F Gerhartz

Наблюдаем результат:

Получилось, по сути то, что планировалось изначально.

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

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

Итог радует глаз!

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

Подкурить у такой лучше не просить...
Подкурить у такой лучше не просить...

Карта героя «Thief»

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

Первые варианты генераций:

Слишком светло, не то фокусное расстояние, оружие по-прежнему рисуется ужасно.

Генерируем снова изменяя запрос, получаем:

Half-body portrait shot, medieval assassin, silver sword on the back, full of black suit, hooded head, leather belt, night time, beautiful painting by Daniel F Gerhartz

Больше всего понравился второй вариант, мимика и поза такие, какими планировались изначально. А вот меч нарисовался снизу-вверх. Ушло очень много времени на попытки сгенерировать меч в правильно варианте, но по итогу ничего так и не вышло.

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

Dark ancient swort, Daniel F Gerhartz style

Получили вот такой меч:

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

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

Карта вора-убийцы под названием "Thief"
Карта вора-убийцы под названием "Thief"

Соединяем, получаем новую карту:

Последняя карта типа «герой» готова
Последняя карта типа «герой» готова

Создадим карты типа «предмет»

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

Чтож, приступим к генерации изображений наших предметов!

Карта предмета «Knowledge book»

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

Book of knowledge, ancient book, table, pink magic glow, lightnings from book, darkness, dark library, object shot, volumetric light, Daniel F Gerhartz style

На выходе получаем результаты, лучшие из них:

Получилось то, что нужно. Заберём второй вариант и создадим нашу первую карту предмета:

Карта предмета «Dagger of faith»

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

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

Следующие попытки генераций:

Здесь получилось сделать клинки в наклоне, но выглядит это, как будто бы ещё хуже.

Было принято решение оставить клинок в воздухе, но получить-таки уже какой-то результат:

Dark dagger lies in the grass, bloody sword, steel sword, full size sword, sword at 35 degree angle, gorgeous, diagonal angle, art by Daniel F Gerhartz

Делаем игральную карточку:

Карта предмета "Dagger of faith"
Карта предмета "Dagger of faith"

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

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

Первые генерации:

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

Второй подход:

От образа дракона нейросеть решила не отходить. В целом, дракон тоже неплохой вариант, поэтому можно оставить этот момент на усмотрение ИИ.

Эти медальоны получились лучше, осталось добавить сюда зелёное свечение (обычно здоровье ассоциируется с зелёным цветом):

Twisted snake medallion with green eye, metal chain, snake in center of medallion, pendant medallion, dark background, macro, object shot, art by Daniel F Gerhartz

Получаем:

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

Карта предмета "Medallion of life"
Карта предмета "Medallion of life"

Карта предмета «Lucky beer»

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

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

Первая генерация дала следующий результаты (выбраны лучшие):

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

Попробуем снова немного изменив запрос:

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

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

При генерации через платформу Fusion Brain можно выбрать инструмент «Erase», это, грубо говоря, ластик, которым можно стереть ненужные объекты. Работает он очень сомнительно, по итогу эти изображения всё равно не подошли, потому что выглядят они довольно несуразно, но в научных целях было интересно довести их до приемлемого состояния заодно пощупав новый инструмент.

Конечный запрос на генерацию пива:

Painted ancient bottle with golden liquid, strong cork, bottom of the sea, runic symbols, object shot, Daniel F Gerhartz style

Получили довольно-таки симпатичный результат:

Соединяем всё вместе для получения заключительной карты

Карта предмета "Lucky beer"
Карта предмета "Lucky beer"

Результаты и итоги

Подведём итоги и посмотрим чего удалось достичь. В этой статье мы разобрались как:

  • сделать шаблон игральной карты в Figma

  • сгенерировать необходимые изображения по начальному ТЗ используя нейросеть Kandinsky 2.1

  • ускорить процесс генерации в нейросети Kandinsky 2.1

  • сгенерировать изображения в одинаковом стиле

Итоговый результат
Итоговый результат

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

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

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


Спасибо, что дочитали до конца.

Все материалы из данной статьи (макеты, исходники), а также эксперименты и фишки по работе с Kandinsky Вы можете найти в этом телеграм канале.

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


  1. Jury_78
    21.04.2023 11:52
    +3

    Итог радует глаз!

    Декольте должно быть глубже... :)


  1. ABy
    21.04.2023 11:52
    +2

    А на русском оно запросы понимает?


    1. evgenij_byvshev
      21.04.2023 11:52
      +3

      Отлично понимает, например:

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


      1. MountainGoat
        21.04.2023 11:52
        +1

        А кто-то может ответить: это сеть натренирована на русских описаниях, или это переводчик на входе стоит?


        1. AI_Anatomy Автор
          21.04.2023 11:52

          Как утверждает разработчик, модель понимает запросы на 101 языке. Что именно там под капотом сказать сложно...


  1. Andrey_Epifantsev
    21.04.2023 11:52
    +2

    А есть какие-нибудь хорошие руководства по составлению таких детализированных и качественных запросов к рисующим нейросетям?


    1. manukhov
      21.04.2023 11:52
      +1

      Пока что лучшее что видел
      https://youtu.be/VjWGMnp7ZzY


  1. Zara6502
    21.04.2023 11:52
    +13

    Я фанат правильных заголовков, а у вас он абсолютно неправильный, игру ведь вы не создавали с помощью ИИ. Думаю правильнее написать "Нейросеть помогает в создании артов для карточной игры". Просто от заголовка и самой статьи как от покупки машины на рынке как "не бита не крашена", а по факту 4 ДТП, тотал и краска кусками отваливается.

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


  1. ilya-chumakov
    21.04.2023 11:52
    +2

    Нейропортреты сейчас в тренде :) а справится ли нейросеть, например, с генерацией спрайтов для 2D графики?


  1. VirtualProgramer
    21.04.2023 11:52

    На русском тоже может! Статья прекрасна конкретными промтами! И картинки в резуьтате просто отличные. Я бы победу отдал этим картинкам и статье в недавнем конкурс на хабре. Там победители совсем слабенькие.


  1. wantmakegames
    21.04.2023 11:52

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


    1. pilimpimpilim
      21.04.2023 11:52

      mortal kombat?


  1. Sandrian
    21.04.2023 11:52
    +3

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


    1. csharpreader
      21.04.2023 11:52
      +1

      Нет единства стиля

      Даже хуже: все одинаковые. По сути, генерация бутылки ничем не отличается от генерации любого героя.


      1. AI_Anatomy Автор
        21.04.2023 11:52

        генерация бутылки ничем не отличается от генерации любого героя

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


  1. Enfriz
    21.04.2023 11:52

    Если не секрет, почему использовали промпты на английском? Они работают лучше, чем на русском? Сравнивали ли вы? Было бы странно, если бы Сберовская сетка хуже работала с русским.

    Да, я бы почитал и про саму игру тоже )


    1. AI_Anatomy Автор
      21.04.2023 11:52
      +1

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


      1. axe_chita
        21.04.2023 11:52

        Есть разница русский/английский, как минимум русский язык более многозначный. Как пример могу привести реакцию Кандинского на запрос "Баба с косой". Вместо женщины детородного возраста с заплетенными волосами в одну косу, он рисует индуса с длинной бородой и разными средствами смертоубийства в руках;)


  1. Astus
    21.04.2023 11:52
    +6

    Kandinsky создаёт игры

    данная статья не будет касаться игрового процесса и логики игры

    Не надо так.


  1. SadOcean
    21.04.2023 11:52
    +2

    Сама статья полезная и хорошо демонстрирует, как уже сейчас можно использовать последнее поколение нейросетей.

    Отличное подспорье для инди, да и для промышленных художников.

    Но заголовок...

    Хотя бы "как Кандинский помогает создавать игры"

    Или "как Кандинский может создавать хороший арт для игр"


  1. a_artikov
    21.04.2023 11:52
    +1

    Классная статья.

    Подскажите, Кандинский поддерживает inpainting? Эта фича есть в Stable Diffusion. С ее помощью можно выделить часть изображения и сгенерировать заново. Очень полезно, чтоб исправлять проблемы с лицом, руками, оружием и т. д.

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


    1. AI_Anatomy Автор
      21.04.2023 11:52
      +1

      Спасибо!

      В статье есть небольшой кусок информации про это. Если использовать Kandinsky через платформу Fusion Brain - там есть возможность использовать "ластик". С помощью него можно убрать то, что не нравится. Но снова сгенерировать можно только с тем же запросом, что был изначально. Отдельно сделать новый запрос конкретно для той части, которую стёрли - нельзя, к сожалению.


  1. lxsmkv
    21.04.2023 11:52
    +1

    Вот что сделал bing.com/create по тому же запросу
    Вот что сделал bing.com/create по тому же запросу

    Он лежит в траве но стилизация тут не подходит.


  1. horsh1
    21.04.2023 11:52
    +1

    У Кандинского, иногда, какие-то провалы в лексике. Например, категорически отказывается рисовать пионеров, красные галстуки итп. Вместо этого рисует пионеров дикого запада в костюмах с красными галстуками-бабочками. Ну и если можно выбрать из англоязычной культуры или из русской нарисует переводной вариант: священик для него пастор, а не поп. У космонавта будет скафандр NASA и шеврон с американским флагом. Вместо деда Мороза норовит подсунуть Санту. На детском саду упорно пишет kindergarten. Гражданская война, разумеется, янки с конфедератами.