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

Автор оригинала: Supernapie
  • Перевод

Отгремели выстрелы минувшего Ludum Dare 44, но тяга делать игры, оттачивать свое мастерство ещё не покидает меня, да и думаю многих. Проглядывая главную страницу онлайн-мероприятия, я наткнулся на интереснейший пост, где автор задался вопросом составления инструментария, помогающего разработчикам (командам) создавать свои игровые шедевры. В статье автор задался целью собрать в один список набор инструментов, псевдо-случайным образом генерирующих различные ресурсы для вашей игры, начиная от фиксированной палитры цветов, заканчивая простейшей chiptune-like фоновой музыкой и спрайтами персонажей.


Заставка случайной игры на LD 44


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


В своих поисках автор руководствовался несколькими требованиями к инструменту:


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

Генератор названий для игры


Первое, что вам нужно, это название вашего проекта. Это может быть довольно сложно, но Game Title Generator дает вам более 10 миллионов различных предложений. Только не увлекайтесь сильно с кнопкой «Создать», потому что за время Джема вам ведь все ещё нужно успеть создать игру.
Ниже пример нагенерированных названий будущих игровых шедевров:


Infect Of Stipulation

Blast Of Privilege

Rad Godzilla Wranglers

Legendary Math Trivia

Annigilation and City

Coolors


Не используйте скучный черный фон # 000000 для своей игры с белым текстом #FFFFFF и синими игровыми объектами # 0000FF. Вместо этого создайте клевую сбалансированную цветовую палитру с помощью Coolors. Вы можете создать свою палитру из 5 новых случайных цветов, просто нажав пробел. Если вам нравится один конкретный цвет, вы можете зафиксиовать его, а затем сгенерировать 4 новых подходящих ему цвета. Также есть кнопка (значок решетки), которая генерирует все оттенки.


Пример палитр ниже:


Палитра раз


Палитра два


Палитру затем можно экспортировать в несколько разных форматов, включая PNG, PDF, SVG, либо поделиться с знакомым дизайнером прямой ссылкой на палитру.


Pixeldudesmaker


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


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


Анимация бега


Анимация прыжка


Cavegen


Нужна карта пещеры? Почему бы не попробовать выстроить свой сюжет с Cavegen? Приложение использует алгоритмы Клеточных Автоматов для создания пещер, которые вы затем можете экспортировать как json или png.


Интерфейс Cavegen


Jfxr


Игра также нуждается в некоторых звуковых эффектах. Наверное, всем известен классический sfxr, который генерирует звуковые фрагменты в стиле ретро. Но, как оказалось, есть также реализация этого классического инструмента на javascript, называемая jfxr.


Веб-интерфейс Jfxr


Beepster


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


Минималистичный интерфейс Beepster


От переводчика: я сам поигрался с этим инструментом и для своей игры записал треки похожие на то, что приведено ниже по сылке, ведущей на сгенерированный трек, залитый на SoundCloud: https://soundcloud.com/xnfss34b6ajq/dingdungdungdung


Недостающий инструмент


В этом списке отсутствует одна вещь — инструмент для создания tileset-ов. То есть базовых элементов построения уровня (будь то платформер или top-down бродилка). То есть не tilemap-ы, а реальные спрайты тайлов. Автор искал их повсюду, но так и не смог найти ни одного из них, которые также были выполнены как веб-приложения. Так что, возможно, здесь еще на лицо есть "пробел на рынке", и на этой неделе очень хочется попробовать создать такой инструмент. Это не будет чем-то впечатляющим. Это просто идея.


Генератор тайлсетов


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


GitHub: https://github.com/Quinten/random-tileset-generator


Demo-линк: https://quinten.github.io/random-tileset-generator/


Ссылка на itch.io: https://supernapie.itch.io/random-tileset-generator


Лиценизя на генерируемые tileset-ы: CC0


Послесловие (от переводчика)


Это весь список подобранных инструментов. Он вполне может быть расширен, и необязательно применять такие же строгие критерии как наличие веб-версии. Возможно, прочитавшие данный перевод либо оригинал, смогут в комментариях помочь увеличить этот список, делясь своими находками, лучшими инструментами, генераторами ассетов (звуков, анимации, ригов к 3-D моделям, генераторов фонов для игры и так далее). Давайте вместе обогатим инструментарий друг друга, чтобы делать еще более крутые и безбашенные вещи на Game Jam-ах! Также, вы можете поделиться своими наработками (ссылки на GitHub или GitLab к примеру) и идеями, чего еще в плане инструментов не хватает для быстрого прототипирования своей Game Jam игры.

Комментарии 12

    +1
    Хм, очень интересно.Раньше я часто делал маленькие игры просто для развлечения и процентов 80% времени я тратил на поиск хоть каких-то приемлемых текстур. Спасибо за перевод.
      0

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

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

          В итоге купил Pyxel Edit для рисования спрайтов, tileset-ов, tilemap-ов и анимаций, и рисую сам. Процесс с трудом, но идет.
          Самым сложным оказалось рисовать гуманоидного типа персонажей, пришлось раз 5 рисовать с нуля, но в итоге достигнул более менее хорошего результата (для первой версии игры точно пойдет).

          По игре, кратко аналог Bomberman с сетевой составляющей и элементами прокачки. Так же упор идет на освещение, оно будет играть там важную часть.
            0
            Можете поделиться какими-то наработками? Арты, скетчи или мб сама версия игры или её скриншоты? И ещё вопрос: на чем разрабатываете игру?
              +1

              Набросков как таковых вообще нет, рисовалось на живую. Так же поглядывал в качестве примера на такие игры как bomberman, contra и zelda.


              Публичная версия, увы, еще не скоро будет, потому особо показывать пока нечего.
              Разработка идет с использованием таких инструментов: kotlin, libgdx, box2d и box2dlights (но в будущем планирую сам написать raytrace освещения, ибо текущая либа не покрывает все хотелки). Для сетевой составляющей пока в процессе выбора, если у вас есть хорошие варианты, с радостью бы их посмотрел.


              Почему взял эти инструменты?


              1. kotlin — по работе немного имел с ним дело, но недостаточно, чтобы понять его. Сам язык заинтересовал различным сахаром, которого нет в java (основной язык мой). В качестве способа его изучить выбрал писать игру, что тоже впервые, но тема меня эта давно интересует так же.
              2. libgdx, box2d и box2dlights наиболее популярные и внятные инструменты для написания игр на языках JVM. Так же смотрел libktx, но из-за отсутствия нормальной документации не смог его применить. Плюс это просто прослойка libgdx (даже не абстракция для упрощения) и потому решил, что нет смысла тратить в двойне больше времени на изучение двух либ, если можно взять libgdx.

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


              P.S. Так же ссылочка на Pyxel Edit

                +1
                Libgdx это одно из самых нормальных решений, если не тащить Unity или какой-то движок. Сам на нем длительное время работал. На счет освещения это конечно тяжко будет, но если мат. часть позволяет, то это хороший опыт.

                На счет сетевой части, я бы посоветовал Python\Flask (flask для API только). Почему так? В основном из-за скорости развертывания и написания бекенда. Даже если вы будете делать P2P общение, вам где-то нужно регать клиентов. Плюс не составит труда подключиться к апи со стороны Java, тот же okhttp прекрасно все предоставляет.
                  +1
                  SystemXFiles Большое спасибо за развернутый ответ. Я сам тоже из Java-мира, как и вы. Но свои простенькие игры пока что пишу на языке Lua, движок: Love2D. Кстати, позволю себе поделиться тут ссылкой на другую свою статью, где я ставил над собой эксперимент, пробуя различные игровые движки (для затравки, там есть один Java-движок, и это не libgdx ;-) ): habr.com/ru/post/449390

                  Насчет Pyxel Edit любопытно, попробую на него поглядеть, по крайней мере в роликах на Ютубе… А что скажете про Aseprite? Был ли опыт?

                  По сетевой части, если нужна серверная часть (координатор, игровой сервер, юзеры, таблицы лидеров etc.) — сам я бы взял не чураясь Spring Boot, так как просто больше всего набил в нем руку и готов быстро накидать любую бэкенд логику. Оверкилл? Возможно, но его экосистема и куча готовых модулей сразу дают вам все, что только может пригодиться покуда проект эволюционирует: сокеты, REST-общение, TCP/UDP взаимодействия — пожалуйста, персистентность данных в любой известной нынче СУБД, большое сообщество и ворох туториалов, доки и проектов-примеров.
                    0

                    За статью спасибо =)


                    С Aseprite не имел опыта работы, хотя на момент поиска инструмента наталкивался на него. Мне приглянулся Pyxel Edit за его простоту для новичка. Главное что там есть фича рисовать карту в живую, дабы смотреть результат в реальном времени.


                    До этого пытался рисовать в Photoshop и это был для меня АД. Пытался так же для автоматизации изменений использовать Smart Object-ы, но даже на карте 16 на 32 тайла Photoshop наглухо вис и отъедал всю оперативку на ПК (а это 32 гб). После этого психанул и купил Pyxel Edit =))

                      0

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

                        +1
                        Привет, рекомендую посмотреть в сторону Ashley. Это реализация ECS-шаблона в libgdx. Подробнее тут: github.com/libgdx/ashley
            0
            Спасибо, добавил к своему списку генераторов. telegra.ph/Asset-05-05 — в самом конце списка можете найти что нибудь полезное для себя)

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

            Самое читаемое