Infinity: Как это было (Making Of)

Анонс конкурса и тема

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

Всего я делал кажется лишь в двух своих играх боссов — Vzerthos и Криста фон Графф. Посчитал, что это хорошая возможность попрактиковаться в их создании.

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

По классике надумал идеи в бумагу:

r8KKfda

Было около 6−8 идей от весьма простых, до как мне кажется интересных и сложных. Зная себя старался в итоге выбрать что будет проще. А вот какие мысли были по идеям:

  1. Играем за компьютерщика против вируса, который портит файлы.
  2. Мы школьник, а боссами выступают учителя и контрольные работы.
  3. Босс в стиле дарксоус и собственно игра в 3д.
  4. Бой с боссом в изометрии. Тут было главное как представить т. е. визуал.
  5. Босс стрелялка в космосе то есть шмап.
  6. Как 4. но босса мы выращиваем как в тамагочи и выступаем менеджером.
  7. Игрок собирает и строит, а босс здоровенный паук раздражает и мешает.
  8. Схожа с 6. Побеждаем босса и выбираем ему улучшение.

Две недели раздумий

Творческий этап конкурса 3 недели. Я хотел поучаствовать, но ничего не приходило в голову. Помимо тех 6−8 идей, но я понимал, что вероятно не осилю это. Идеи не вдохновляли так сказать.

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

Собственно получилось так, что придумалась 9-ая идея, которая является комбинацией трёх других — 5, 7 и 8. Записал задумку в текстовый файл сначала на пару строк, а потом это всё разрасталось и вышло 2 файла по 5 страниц с оформлением (файлы прикреплены для ознакомления).

Если очень кратко, то новая идея звучит так:

«Летаем в шмапе, наваливаем боссу и выбираем улучшение и куда лететь, а там „астероид“, где добываются ресурсы и „воюем“ с боссом ещё раз. Когда снова победили, то улучшаем себя. И так несколько раз.»

Идеей загорелся и решил исполнить задумку.

Осталась неделя (с поворотом)

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

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

Прикинул примерно такой порядок:

  • первый день делаю режим shoot-em-up,
  • второй доделываю и начинаю делать top-down,
  • третий доделка top-down,
  • четвёртый это соединение этих двух режимов и создание системы апгрейдов, пятый делаю графику,
  • шестой делаю музыку и звуки,
  • седьмой день доводка до ума, оформление, заливка заявки.

План как швейцарские часы. Но я был бы не я, если бы не двойной-половинный дедлайн*, который к тому же в последнее время стал иметь коэффициент не 2, а 3 или даже 4 и поймёте почему так.

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

Инструментарий

Конечно же я выбрал движок GameMaker, который уже перестал быть Studio 2, но для меня останется таковым. Хорошо знаком с движком, поэтому предположительно никаких сюрпризов не будет, что важно при лимитах времени. Однако, взять и сделать что-то на неизвестном движке это тоже весело и полезно, одобряю.

Первые 2−3 дня всё шло очень даже по плану. Учитывая, что я заранее расписал даже список объектов (хоть он потом и пополнялся), то всё прям было чуть ли не в голове, потом в доке, а затем в движке. Было достаточно приемлемо так работать вместо сумбура.

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

Начал понимать, что есть вероятность не успеть доделать, хотя идея была простая. НО по традиции Gaminator-ов классическое продление конкурса на неделю! Ура! Но могло его бы и не быть.

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

Для интересующихся вот такая git-история у меня есть:

co4o0Ec
hawy7d7

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

Глазастые уже могли заметить, что в описаниях есть одно слово, а может и не заметили его смысла, но …

Генерация нейро-графики

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

Sd5IAex

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

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

Некоторые (большая часть) графики была сгенерирована гибридным методом (на самом деле называется img2img), а дальше обработка в Photoshop.

Вот такой вот пример:

xqyK8iK

Спрайты представляю из себя такую логику: сгенерировать картинку (обычно 512×512), используя особенность ФШ под названием Smart Object* уменьшаю спрайт до 64×64 (например) и кидаю на этот LowRes со смешиванием overlay и прозрачностью в 10−15% особый паттерн пиксельный, а дальше пастеризация на 4−8 цветов.

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

9YfghNH

Какие-то спрайты куда сложнее по своей структуре, чем просто накинуть фильтры, например, Босс или игрок для режима Top-Down.

zLXag9z

nrHCoBF

Mi1xuQp

А здесь игрок. Каждый кадр это группа слоёв, а слой это смарт объект, который сделан из вырезки-результата нейросети, такого вот астронавта.

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

EWRLoqO

Интересно, догадались ли вы, что графика создана не человеком? А СЛАВНЫМ РОБОТОМ!

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

Звуки и музыка

Время поджимало, а игра никак не звучала. И поступил я примерно как на всякие свои старые проекты — взял звуки из своей библиотеки, а вернее со старых своих игр. Здесь есть звуки из Бумажного Подземелья, Взертоса и КОД проектов сайта Gamin.me.

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

Взял ли я чужую музыку? Нет. Написал свою? Нет же! Откуда тогда? Вновь помогли СЛАВНЫЕ РОБОТЫ то есть нейросети! Посидев какое-то время и вбивая запросы я не получал того, чего именно хотел, но пара тройка треков оказалась удовлетворительными для проекта, как мне кажется и я поставил их временно, но как известно — нет ничего более постоянного, чем временное.

CA76q2W

И тут я понял, что хорошо бы для истории в исполнители, альбом, название вписывать проект, чтобы потом знать откуда этот звук. Что собственно было сделано с некоторыми, видно что они от Vzerthos 1.

Что не реализовал

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

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

  1. Мы побеждаем корабль-игрок — возвращаемся монстром или парадокс.
  2. Даём уничтожить себя корабль-игроку — возвращается корабль игрока и типа хорошо.
  3. В прошлых этапах терпим поражение и это гамовер

Каноничной концовкой был бы вариант 2 конечно же, а 1 давал бы петлю или вроде того.

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

Sty8Maz

Итоги

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

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

Для себя понял, что зря опять ввязался в мульти-жанровость. Это была ошибка и надо было сделать простой Shoot’em up, без ненужного режима Top-down.

Как показывают стримы и комментарии стримеров\игроков снова у меня вышла медленная, скучная игра, где даже босс нудный!

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

Спасибо всем поигравшим и\или прочитавшим! В комментариях делитесь своим мнением об этом всём!