Как мы разработали инди-игру со сложным геймплеем, которую практически невозможно пройти
Нетипичная боль клиента – страшно умная команда. Рассказываю, как мы создавали игру по мотивам внутренней корпоративной культуры компании. А потом ещё и заказ DLC получили.
Привет! Я Серёга Шилов, фронтмен IT-аутсорс компании We Wizards. Мы умеем делать игры для бизнеса, в которых хочется залипнуть не только на корпоративах, но и в повседневной жизни.
Рассказать много о клиенте не могу, NDA не позволяет, но поверьте на слово: ребята потрясающие
Это крупная IT-компания с развитой корпоративной культурой: каждый год они организуют выезды, где совмещают хакатоны с отдыхом. Играют в кикер и большой теннис, проводят турниры по киберспорту.
Беда была в том, что любая такая деятельность быстро теряла смысл: они мгновенно всё осваивали и становились лучшими. Когда клиент увидел нашего дракончика для GlowByte, то решил, что инди-игра — именно то, что нужно.
Просто сделать игру было недостаточно
Она должна была заставить команду заказчика пострадать. Во-первых, чтобы разжечь их интерес. Во-вторых, за прохождение игры полагался обалдеть какой приз — полностью оплаченный отпуск в любую точку мира.
И вот собрались мы нашим геймдев юнитом, прямо как в передаче West Coast Customs, и стали думать что делать.
Вы смотрели фильм «Куб» ?
Это интеллектуальный триллер о выживании: герой оказывается в замкнутом пространстве, и его главная цель — выбраться.
Не буду вдаваться в детали и раскидываться спойлерами, просто скажу — изначально мы вдохновлялись именно им. Мыслили вот как: раз команда такая эрудированная, надо брать интеллектуальным геймплеем и сделать что-то вроде очень сложного квеста.
Созвонились с клиентом, воодушевленно об этом рассказали, и получили неожиданную реакцию — идея скучная, не зацепило. Я даже растерялся. Решил, что нечетко выразился, и попробовал донести мысль еще раз, но всё безрезультатно.
Тогда мы начали докапываться до запроса клиента и поняли, что мыслили вообще не в ту сторону…
…они не хотели «думать», они хотели страдать
Оказалось, что клиент ожидал не интеллектуальный квест, а сложный геймплей. Команда должна была возненавидеть каждый пиксель игры, чтобы хотя бы понять, как в нее играть.
Например, в качестве референсов приводили I wanna be the boshy или Flappy bird в некоторых случаях Cuphead.
Ушли на неделю в бешеный креатив
Перебрали несколько вариантов жанров и решили остановиться на комбинации двух — платформер и bullet hell.
Платформер — это игры, где нужно прыгать, бегать и преодолевать препятствия.
Bullet Hell — это поджанр шутеров, в котором на игрока со всех сторон летит огромное количество пуль, лазеров или других снарядов. Его задача — избегать этих атак, но при этом продолжать сражаться с мобами и собирать разные предметы.
В рамках этих жанров было проще всего реализовать нужные нам игровые механики.
Набросали эскиз и пошли его защищать
Идея была очень простая: на маленькой арене игрока постоянно атакуют мобы, снаряды летят со всех сторон. Нужно продержаться и отражать атаки какое-то время, пока не появится босс. Если игрок справлялся и с ним, то он переходил на следующую арену, которая сложнее предыдущей. И так до самого финала.
Заказчику идея понравилась, мы защитили концепцию и перешли к формированию ГДД.
Перешли к дизайн-концепции
Действия разворачиваются в выдуманном офисе компании. Мы представили, что обычно есть в офисах таких крупных компаний, и выделили 4 биома:
- офис;
- фуд-корт;
- экспериментальная лаборатория;
- чилл-зона.
Собрали референсы к каждому, чтобы стилизовать их в рамках сеттинга биопанк.
Показали их клиенту, ему всё понравилось и мы пошли рисовать.
Попали в ожидания с первого раза
Пиксель-арт – фирменный почерк We Wizards, и все локации игры отрисованы в этом стиле. У нас это здорово получается, именно наши кейсы привлекли клиента по стилистике.
P.S. Если увидите где-то у крупных брендов пиксель арт игру, с вероятностью 99% ее делали мы ;)
Чтобы быстро формировать уровни и создавать там окружение, мы выбрали программу Tiled. Независимо от разработчиков, ГД и дизайнер могли собирать окружение и лить его в репозиторий отдельно.
Игра получилась очень личной ( добавили туда кучу пасхалок, которые не можем вам показать). Например, некоторые мобы связаны с воспоминаниями клиента и команды))
Деталями делиться не будем, но показать как выглядят биомы можем:
Вернемся к нашим референсам: I wanna be the boshy и Flappy bird
Концепция этих игр основывается на том, что чем дальше игрок проходит, тем лучше его мышечная память запоминает, как это делать. Соответственно, тем легче становится проходить уровень снова — игрок просто интуитивно понимает, как лучше это сделать.
Продумали игровые механики
Игрок переходит на следующий уровень только после того, как убьет босса. Каждое новое убийство усиливает мобов и усложняет прохождение уровня. Жизни не восстанавливаются. По геймплею каждый новый уровень сложнее предыдущего, а к четвертому уровню играть становится практически невозможно.
Усложнили задачу тем, что отделили ходьбу от прицеливания, и сделали так, чтобы каждый залп отталкивал (отдача от выстрела из рельсотрона или магнетронной киберпушки) персонажа от места выстрела. Это дало разнообразие геймплейной мехиники в стиле прохождения.
Выяснилось, что обычных арен недостаточно и нужен полноценный level-дизайн
Мы продумали игровые механики, показали прототип клиенту — он остался доволен, но…
Прямо в ходе разговора выяснилось, что все фичи и пасхалки, которые хотел реализовать клиент, не помещались на наши арены.
Он начал спрашивать такие вещи, которые они просто не предусматривали: какова длительность одной игровой сессии, какая формула набора очков, при каких условиях появляется босс, восстанавливаются ли мобы после убийства?
И когда мы стали на эти вопросы отвечать, то поняли, что нужно спроектировать статичный линейный уровень, расставить мобов, пасхалки, ловушки — и только тогда задача считалась бы полностью выполненной.
Это не входило ни в сроки, ни в изначальный дизайн, но наш геймдизайнер Джон взял на себя ответственность и спроектировал эти уровни. Из-за этого мы задержали презентацию — по плану уже должны были идти альфа-тесты. Но так вышло, что клиент не ожидал, а мы не предусмотрели, что придется проектировать дополнительные уровни. В итоге нагоняли, кранчили, старались выдать максимум.
Он нарисовал первый прототип, мы показали его клиенту, получили «ок» и пошли рисовать еще три таких же.
Признаюсь, лично мне этот концепт сначала не понравился и показался пустым. В большом уровне дизайн казался ненасыщенным. В рамках небольшой арены плотность декора была достаточной, а когда пишешь большой уровень, его надо уже делать нелинейным, наполненным, логичным, мы такого не делали.
И мы, не утверждая это с клиентом, нарисовали еще по несколько десятков декоративных предметов на каждый уровень.
Тут подключился сам собственник компании
Он начал погружаться во все детали проекта и накидывать какое-то невообразимое количество классных фичей, а мы — все это реализовывать. Это случилось за дне недели до дедлайна, когда мы показали ему почти готовую игру.
Игра стала настолько сложной, что не все могли её пройти
Но у нас еще осталось время, чтобы это решить. Рейтинговый режим мы оставили для хардкорных ребят, а для всех остальных ввели лор-режим с обучением, диалогами и упрощенными мобами.
Так все гарантированно могли поиграть в игру и пройти её. А самые мотивированные — потренироваться в лор-режиме и перейти в рейтинговый.
Мы прописали новые механики диалогов и теперь персонаж игры обрел личность. Выкатили первую версию и показали клиенту — он остался доволен.
Параллельно заказали у нашего дизайнера кат-сцены. История была в том, что произошла сингулярность пересеклись параллельные миры и в офис компании интегрировалась cамая биопанковая нечесть, которая начинает поглощать все вокруг.
Потом этой нашей сингулярностью было удобно все что угодно объяснять. Почему в офисе компании висит сувенирная пушка, которая в итоге оказалась настоящей? Нуу…сингулярность)))
Джон закончил с проработкой уровней, и начал писать саундтреки
Он написал демо, Даня (разработчик игры) добавил гитару. В итоге получился мощный индастриал-рок саундтрек.
В какой-то момент Джон шутки ради сделал трек для одного из боссов. Клиенту так эта шутка понравилась, что мы потом всем боссам свой трек прописывали))
И это ещё не все. Самая интересная часть проекта только начиналась
Мы показали клиенту все, что наделали в лор-режиме. Ему все понравилось и он стал накидывать еще больше и больше идей.
Мы ввели еще пасхалки, которые можно разделить на две группы:
- просто хорошо спрятанные;
- те, которые должны быть выбиты при помощи какого-то алгоритма действий — квесты.
Теперь на каждом уровне появился персонализированный квест, выполнив который, игрок получал пасхалку.
Но это не работает как в World of Warcraft
Никаких вам восклицательных знаков и указаний куда идти — никто не знал как выполнить квест. Да и случайно сделать это тоже не вышло бы.
Например, в одном из уровней игрок должен был догадаться, что чтобы получить пасхалку — надо вернуться в самое начало.
А на другом убить шесть бариста подряд. И единственный способ это узнать — по намекам через диалоги. Ну или код игры дешифровать.
Много внимания уделили рейтинговому режиму
Вы помните обещанный приз за первое место? Это буквально золотая карта в любую точку мира) Поэтому желание клиента заставить игроков попотеть за такой приз — вообще неудивительно.
Раньше выставляли баланс по дефолту, но теперь этого стало недостаточно
Вынесли в админку переменные величины всего, что может иметь какую-либо динамику и влиять на геймплей: урон пушки, жизни главного героя, скорость мобов, границы перехода в фазы.
Конфигурировали значения, где одна десятая величины меняла весь геймплей. Также добавили в админку функционал хранения логов игр каждого пользователя и общую статистику по пользователям.
Боролись с вероятностью того, что команда взломает игру
Я уже говорил, что нетипичная боль клиента — слишком умная команда. Существовала реальная угроза того, что кто-то просто взломает игру, пропишет себе очки или создаст бота, который будет проходить игру за него.
Очки начислялись на фронтенде, затем отправлялись на сервер и записывались в рамках одной сессии. Этот процесс не был защищен, и мы не знали, как его обезопасить. Подняли этот вопрос на звонке и нас связали с начальником службы безопасности компании. Он посмотрел код и предложил решения.
Вот что мы сделали для защиты данных:
- внедрили анти-спам и анти-чит: анализировали триггеры, чтобы определить, играет человек или бот;
- запретили любое вмешательство в код: если пользователь открывал DevTools, очки обнулялись, а игра начиналась заново;
- запутали и сжали код, использовали шифрование при передаче данных;
- настроили логирование и отслеживали, на какие клавиши нажимает игрок;
- нашли и подчистили чизовые тактики.
Титры и финальные кат-сцены
Их мы, конечно же, тоже не планировали.
К титрам нужно было написать саундтрек и это тоже сделали своими силами. Я позвонил другу, который хорош в мат-метале, и заказал у него трек в стиле Мика Гордона.
Он за один день выдал демку, она вышла потрясающей. За два дня он доделал трек и мы показали его заказчику.
Наступает день Х. Начинается турнир
Мы дико переживали за нагрузку на сервер — сотни сессий запускались одновременно. Но, к счастью, всё прошло штатно.
Две недели мы поддерживали игру, и это само по себе стало отдельным испытанием. Что-то могло сломаться в три часа ночи, и мы тут же вставали, разбирались и чинили.
В это время СЕО компании не спал сутками и играл в игру — это был его личный челлендж.
Из 150 человек лишь 5 прошли игру в рейтинговом режиме
Но что значит пройти игру?
- Пройти все 4 биома.
- Убить всех боссов.
- Вернуться на первый уровень.
После этого запускалась кат-сцена, крутые титры, а затем открывался гипер уровень — абсолютный хаос. Всё начинало глючить: изображение искажалось, появлялся снег, кровь. Сингулярность в чистом виде)) Шанс пройти этот уровень был практически нулевым. Мобы стреляли сразу и убивали игрока мгновенно. Вдобавок к этому, по таймеру мы насильно отнимали жизни у игрока.
В какой-то момент игра так всех поглотила, что стали формироваться «кружки по интересам»
Они соревновались, выменивали и выторговывали информацию, не спали ночами. В общем, главный запрос клиента («заставить их попотеть») был выполнен на все сто.
Среднее время вовлеченности составило 2 часа — и это не суммарное время, а средняя длина одной сессии. Проще говоря, топ-разработчики проводили в нашей игре до 10 часов в день.
Это был абсолютный фурор. Клиент получил намного больше, чем ожидал, а именно невероятный импакт от взаимодействия с игрой.
И вот что в итоге вышло
Меньше чем через неделю мы получили запрос на дополнения. Сейчас продолжаем активно работать над специальным выпуском.
Отзыв
Работа с ребятами — это не просто сотрудничество, а настоящее партнерство. За какие-то 2-3 месяца мы вместе с нуля создали игру с мощным геймплеем и крутой детализацией, которая зашла даже нашим самым требовательным игрокам. Видно, что они сами горят играми — это чувствуется в подходе, вовлечённости и желании сделать проект максимально крутым.
Команда
Александра Ермилова
Даниил Сарабьев
Джонатан Бдоян
Сергей Шилов
Разработка
Во-первых, движок. Для нас это стал полюбившийся Phaser.js. Во-вторых, нативный Javascript + Typescript. В-третьих, высочайшая оптимизация (60 FPS). В-четвертых, он имеет базовую поддержку созданных карт в Tiled.
А ещё там можно добавлять кастомные объекты с любыми данными, что очень полезно при конструировании уровней. Утвердили прототип, софт и стек и перешли к созданию функционала по добавлению и загрузке разных карт, уровней и их тайлсетов.
После проведения этих работ дальнейшие задачи делились на 5 типов:
- реализация фичи в самой игре;
- реализация управления фичей через карту;
- интеграция ассетов этой фичи;
- написание документации в нашу базу знаний (для левел дизайнера);
- связь с баланс-листом на бэке (если необходимо).
Параллельно этому шли работы по бэкенду и по интерфейсу игры. На бэкенде использовали WordPress, так как там есть готовый механизм авторизации (наработки из предыдущих игр) и в целом очень быстрая разработка.
FIN!
Спасибо всем, кто дочитал до конца) Оставляю ссылку на наш суперский сайт:
И на тг-канал, там мы делимся буднями, рассказываем о проектах и ищем людей в команду:
А если нужны руки для разработки – пишите лично мне в телеграм @olivoin или на почту hello@wewizards.ru