Отгремели выстрелы минувшего Ludum Dare 44
, но тяга делать игры, оттачивать свое мастерство ещё не покидает меня, да и думаю многих. Проглядывая главную страницу онлайн-мероприятия, я наткнулся на интереснейший пост, где автор задался вопросом составления инструментария, помогающего разработчикам (командам) создавать свои игровые шедевры. В статье автор задался целью собрать в один список набор инструментов, псевдо-случайным образом генерирующих различные ресурсы для вашей игры, начиная от фиксированной палитры цветов, заканчивая простейшей chiptune-like фоновой музыкой и спрайтами персонажей.
Под катом перевод данной заметки, с небольшими комментариями и примечаниями от себя.
В своих поисках автор руководствовался несколькими требованиями к инструменту:
- он должен делать контент случайным, по возможности неповторимым и уникальным;
- он должен запускаться в браузере;
- инструмент можно использовать с любым движком без каких-то препятствий.
Генератор названий для игры
Первое, что вам нужно, это название вашего проекта. Это может быть довольно сложно, но 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
.
Jfxr
Игра также нуждается в некоторых звуковых эффектах. Наверное, всем известен классический sfxr
, который генерирует звуковые фрагменты в стиле ретро. Но, как оказалось, есть также реализация этого классического инструмента на javascript
, называемая jfxr.
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 игры.
loony_dev
Хм, очень интересно.Раньше я часто делал маленькие игры просто для развлечения и процентов 80% времени я тратил на поиск хоть каких-то приемлемых текстур. Спасибо за перевод.
zugzug Автор
Спасибо, что ознакомились с переводом. Я разделяю вашу боль. Можете кратко поделиться опытом, как вы решали данную проблему? Мб какие-то стоки ресурсов или поиск по картинками со свободной лицензией? Заранее спасибо.
loony_dev
На тостере нашел вопрос, где набросали не много сайтов. Вообще, еще часто юзал «паки». В целом найти их в инете можно, но с такими паками на маркет не выйдешь)
SystemXFiles
Я вот недели полторы пишу игру, до этого ни разу не писал и сразу же столкнулся с подобной проблемой. Перерыл и попробовал просто тонну паков и ни один не подошел по стилистике.
В итоге купил Pyxel Edit для рисования спрайтов, tileset-ов, tilemap-ов и анимаций, и рисую сам. Процесс с трудом, но идет.
Самым сложным оказалось рисовать гуманоидного типа персонажей, пришлось раз 5 рисовать с нуля, но в итоге достигнул более менее хорошего результата (для первой версии игры точно пойдет).
По игре, кратко аналог Bomberman с сетевой составляющей и элементами прокачки. Так же упор идет на освещение, оно будет играть там важную часть.
zugzug Автор
Можете поделиться какими-то наработками? Арты, скетчи или мб сама версия игры или её скриншоты? И ещё вопрос: на чем разрабатываете игру?
SystemXFiles
Набросков как таковых вообще нет, рисовалось на живую. Так же поглядывал в качестве примера на такие игры как bomberman, contra и zelda.
Публичная версия, увы, еще не скоро будет, потому особо показывать пока нечего.
Разработка идет с использованием таких инструментов: kotlin, libgdx, box2d и box2dlights (но в будущем планирую сам написать raytrace освещения, ибо текущая либа не покрывает все хотелки). Для сетевой составляющей пока в процессе выбора, если у вас есть хорошие варианты, с радостью бы их посмотрел.
Почему взял эти инструменты?
Стараюсь по максимуму избегать велосипедостроения, дабы на заниматься поддержкой своего добра, от того так же много времени уходит на поиск инструментов и изучение примеров игры на libgdx в связке с box2d.
P.S. Так же ссылочка на Pyxel Edit
loony_dev
Libgdx это одно из самых нормальных решений, если не тащить Unity или какой-то движок. Сам на нем длительное время работал. На счет освещения это конечно тяжко будет, но если мат. часть позволяет, то это хороший опыт.
На счет сетевой части, я бы посоветовал Python\Flask (flask для API только). Почему так? В основном из-за скорости развертывания и написания бекенда. Даже если вы будете делать P2P общение, вам где-то нужно регать клиентов. Плюс не составит труда подключиться к апи со стороны Java, тот же okhttp прекрасно все предоставляет.
zugzug Автор
SystemXFiles Большое спасибо за развернутый ответ. Я сам тоже из Java-мира, как и вы. Но свои простенькие игры пока что пишу на языке Lua, движок: Love2D. Кстати, позволю себе поделиться тут ссылкой на другую свою статью, где я ставил над собой эксперимент, пробуя различные игровые движки (для затравки, там есть один Java-движок, и это не libgdx ;-) ): habr.com/ru/post/449390
Насчет Pyxel Edit любопытно, попробую на него поглядеть, по крайней мере в роликах на Ютубе… А что скажете про Aseprite? Был ли опыт?
По сетевой части, если нужна серверная часть (координатор, игровой сервер, юзеры, таблицы лидеров etc.) — сам я бы взял не чураясь Spring Boot, так как просто больше всего набил в нем руку и готов быстро накидать любую бэкенд логику. Оверкилл? Возможно, но его экосистема и куча готовых модулей сразу дают вам все, что только может пригодиться покуда проект эволюционирует: сокеты, REST-общение, TCP/UDP взаимодействия — пожалуйста, персистентность данных в любой известной нынче СУБД, большое сообщество и ворох туториалов, доки и проектов-примеров.
SystemXFiles
За статью спасибо =)
С Aseprite не имел опыта работы, хотя на момент поиска инструмента наталкивался на него. Мне приглянулся Pyxel Edit за его простоту для новичка. Главное что там есть фича рисовать карту в живую, дабы смотреть результат в реальном времени.
До этого пытался рисовать в Photoshop и это был для меня АД. Пытался так же для автоматизации изменений использовать Smart Object-ы, но даже на карте 16 на 32 тайла Photoshop наглухо вис и отъедал всю оперативку на ПК (а это 32 гб). После этого психанул и купил Pyxel Edit =))
SystemXFiles
Кстати, быть может вы знаете хорошие туториалы по libgdx в плане архитектуры приложения? Сейчас то что пишу пугает тем, что придется рефакторить сильно. Хочется понять как лучше всего организовать код, чтобы было проще дорабатывать в будущем.
waxtah
Привет, рекомендую посмотреть в сторону Ashley. Это реализация ECS-шаблона в libgdx. Подробнее тут: github.com/libgdx/ashley