Всем привет, меня зовут Иван Григорьев, я работаю в компании What Games. 9 июля на Одноклассниках в режиме мягкого старта вышла наша новая игра — «Титаны». Во время разработки такого большого и сложного проекта свежая информация «с полей» обычно оказывается очень полезной. К сожалению, из-за общей закрытости нашей индустрии обмен положительным опытом между разработчиками сейчас крайне затруднен. Серией своих постов мы намерены переломить сложившуюся традицию и в режиме реального времени максимально честно рассказать о разработке современной социальной игры.
Действующие лица
Паша — AS3 программист (ядро, бой, карта).
Женя — AS3 программист (база, интерфейс).
Никита — бэкэнд-разработчик.
Леонид — гейм-дизайнер, менеджер проекта.
Даниил — арт-директор.
Вадим — 2D-художник (интерфейс, эффекты).
Виталий — 2D-художник (дизайн и верстка окон, эффекты).
Игорь — 2D-художник (скетчи, иконки).
Слава — 3D-моделлер.
Дима — креативный директор, штатный специалист по крутизне.
Ваня — продюсер.
Вступление. Январь 2014
Гора концептов на столе уже начинала пугать. Эльфы, машины, жуки, неприступные военные базы, девушки в заманчивых позах, да чего тут только не было. Ребята в задумчивости склонились над столом. После двух подряд неудачных запусков («Братство Огня» и «Генералы Джунглей» в 2013 году) нам больше нельзя было ошибаться. И всё же было совершенно непонятно, как из горы образов выбрать стиль для следующей игры. Все опять погрузились в раздумье. Через некоторое время Дима, очевидно, поймав в глубинах сознания заманчивую мысль, вдруг сказал:
— А знаете, что по-настоящему круто? Огромные человекоподобные боевые роботы!
Эта мысль была настолько простой, что собравшиеся за столом шестеро парней не сразу среагировали на неё. По-киношному красивая и реалистичная картинка, сражения в реальном времени, «подогретый» сеттинг — всё, что нужно для запуска успешного продукта. На дворе был январь 2014 года. За четыре месяца мы решили сделать крутейшую социальную мидкор-стратегию с потрясающей графикой и реалистичными битвами Боевых Роботов. Опоздав на полтора месяца, мы всё-таки добились поставленной цели.
Поиск стиля. Первые скетчи.
Определение базовых правил. Февраль 2014
Пройдя к этому времени огонь, воду и медные трубы социального геймдева, мы знали, что не можем воевать одновременно на всех фронтах. В ближайший месяц нужно было разработать интересные правила для основного игрового цикла. Главная проблема заключалась в том, что мы очень хотели, чтобы сражения Больших Боевых Роботов происходили в реальном времени (а не в пошаговом режиме, что было бы намного проще технически). Такую задачу никому из нас до этого не доводилось решать. Было ясно, что имеющихся в наличии сил (полтора гейм-дизайнера) было недостаточно для придумывания правил с чистого листа. С другой стороны, деваться было некуда. Всё-таки запускать социальную игру без крепкого баланса в 2014 году было никак нельзя. Поэтому мы решили отправиться на рынок в поисках примера успешной реализации реалтаймового боя.
Поискав сначала в денежном топе аппстора (Clash of Clans, карточные баттлеры и покер), заглянув мимоходом в топ ВКонтакте («Правила Войны» в пяти вариациях, скукота), мы наконец дошли до Фейсбука. Там было из чего выбирать, но в итоге наше внимание привлекли игры компании Kixeye. В них бои были красивыми и не очень сложными для освоения, однако оставляли место для применения скилла.
Основной игровой цикл мы определили следующим образом:
- Сбор ресурсов на базе.
- Сбор отряда, выход на карту.
- Нападение на отряд под управлением компьютера или на базу другого игрока либо выполнение задания кампании.
- Сражение в реальном времени с прямым управлением войсками.
- Возвращение отряда на базу и ремонт.
- Запуск исследований на заработанные деньги.
Vega Conflict и эскизы для нашего боя.
Выбор визуального стиля. Март 2014
Итак, наш гейм-дизайнер Леонид занялся созданием подробного диздока. Тем временем художники, получив более жесткие рамки (которые, как известно, намного усиливают креативность), начали прорабатывать возможные варианты внешнего вида игры. Для построек на базе больше всего подошел стиль последних игр серии C&C, реалистичный и яркий одновременно. С роботами, как ни странно, пришлось сложнее. Оказалось, что хорошего современного робота нарисовать не так-то просто. Тут нам очень пригодились навыки Игоря, нашего 2D-художника. До того, как попасть в геймдев, он работал над чертежами кораблей на каком-то секретном заводе, а на досуге занимался живописью. Отличная комбинация! Взяв за основу стилистику современной техники и последние игры серии MechWarrior, он помог нам определить облик Боевого Робота в игре.
К этому времени художники и гейм-дизайнеры набрали приличную скорость, двигаясь в немного разных направлениях. И через некоторое время произошло неизбежное — их интересы столкнулись. «Смотрите, какие крутые картинки! Такой базой по-настоящему хочется управлять!», — говорил арт-директор Даниил. «С такой камерой мы точно не сможем сделать нормальные нападения игроков друг на друга!», — отвечал Леонид. После жарких споров, физики в этот раз всё-таки одолели лириков, и база игрока из очень атмосферной, но жутко неудобной, превратилась в более стандартную, но гибкую. Вопрос стиля был решен.
Ранние наброски для роботов и базы игрока.
«А эта кнопка что делает, напомни?» Апрель 2014
Наша игра получалась довольно хардкорной (по меркам социальных игр), во многом из-за большого количества разных сущностей. Исследования, производство роботов, подбор и улучшение различных компонентов, отряды, защита базы — это всё надо было объяснить игрокам через наглядный интерфейс. По нашим подсчетам, за полтора месяца нам предстояло спроектировать, нарисовать и вставить в игру интерфейс для трех основных экранов игры, 14 окон, а также всплывающие меню и тултипы всех мастей.
Интерфейс «Веги», хоть формально и выполнял все основные задачи, был при этом по-настоящему плохим. Запутанный, непонятный, некрасивый, неудобный — все правила проектирования, которые можно найти в интернете, в нем успешно проигнорированы. Тем не менее, понажимав несколько дней на разные кнопки, мы решили не будить лихо, пока оно тихо. Те, кому по долгу службы доводилось улучшать интерфейс, знают, что чаще всего этот процесс напоминает «сказку с подробностями» — одно изменение всегда тянет за собой пять других. Хуже того: иногда какую-нибудь мерзкую проблему нельзя решить, не исправив перед этим косяк в гейм-дизайне. Поэтому мы разработали план:
- Выбрать общую стилистику интерфейса.
- Спроектировать все необходимые окна в приемлемом виде.
- Собрать из них работающий прототип, запустить игру.
- По ходу разработки постепенно приводить окна в человеческий вид.
Пример изменения одного из окон. Первый рабочий вариант, текущая версия, эскиз следующей итерации.
Облака, технологии и выбор платформы. Май 2014
Дата релиза стремительно приближалась, и надо было определиться с инфраструктурой. Сценарий использования у нас был следующий: есть клиент игры, который периодически (не очень часто) отправляет запросы к серверу на изменение состояния. Кроме этого надо собирать много данных о поведении (чем больше, тем лучше) и потом их как-то анализировать. И ещё мы знали, что нагрузка будет непостоянной. Она будет сильно меняться в течение дня, а также нас ожидают резкие скачки во время маркетинговой активности (покупка рекламы или внезапный фичеринг на платформе). К тому времени наши коллеги уже имели положительный опыт работы с облаком Amazon AWS, поэтому мы решили перенести наш стек технологий туда. То, что со стороны казалось какой-то невероятной технологией из будущего, на деле оказалось невероятной технологией из настоящего. Вот что у нас получилось в итоге:
- Клиент. Flash-приложение;
- Протокол. HTTP, GET-запросы;
- Балансер. Amazon ELB + скрипт для изменения количества инстансов при изменении нагрузки;
- Сервера. Инстансы c3.2xlarge + nginx + PHP;
- База данных профилей. Amazon DynamoDB + скрипт для изменения пропускной способности при изменении нагрузки;
- Кэширующий сервер. Инстанс r3.large + MongoDB + Redis;
- Статистика. MySQL (в виде сервиса Amazon RDS) с последующим переездом на Amazon Redshift;
- Статика. Webzilla, с последующим переездом на CDN Highwinds.
Платить за эту конструкцию в итоге надо чуть больше, чем за те же статические сервера в «Селектеле», но за эти деньги мы получаем гораздо более высокую надежность и гибкость.
Кроме того, пора было определиться со стартовой платформой. Традиционно мы все игры сначала запускали во ВКонтакте, но во время поездки на DevGamm в мае мы пообщались с игровым отделом Одноклассников. Артур и Валя посмотрели наш прототип и сказали: «Ребята, классная игра! У нас взрослая аудитория, средний чек больше, да ещё игра во всю ширину страницы открывается. Давайте к нам!». Кроме того, пообещали помочь с продюсированием после запуска. В доказательство своих слов Валя через некоторое время прислала внутренний анонимный бенчмарк с показателями успешных игр нашего сегмента. Предложение было довольно неоднозначным. С одной стороны, привычный дизайн и удобство Контакта. С другой — живые люди в Одноклассниках на другом конце провода (которые, похоже, и правда хотели, чтобы игра стала успешной) и потенциально более высокие заработки, но совершенно адский дизайн всего сайта. Взвесив все «за» и «против» решили, что мы мужчины и можем ради хорошего чека потерпеть трешовый дизайн. Поэтому сдули пыль со своих аккаунтов и решили сначала запускаться там.
Разработка тем временем вышла на финишную прямую — Паша и Женя, наши клиентские программисты, собирали билд в кучу. Леонид настраивал баланс, регулируя сложность накопления ресурсов и скорость продвижения пользователей по игре. Казалось, что мы готовы к запуску.
Наш Боевой Робот вместо диаграмм бэкэнда.
Релиз. Июнь 2014
1 июня, в день предполагаемого релиза, мы постарались посмотреть на игру непредвзятым взглядом. После четырех месяцев плотной работы сделать это было непросто. Тем не менее, в ходе обсуждения мы установили, что никто из нас в неё по-настоящему не играл, и что в текущем виде запускать игру не можем. Все системы были на месте, но большое количество мелких нестыковок и шероховатостей мешали как следует погрузиться в геймплей. Бюджет и сроки проекта и так уже трещали по швам, но все-таки релиз надо было перенести.
Пришло время резать недоделанные функции. Подумав, решили в первую очередь пожертвовать картой, населенной реальными игроками. С ней была куча проблем на всех уровнях — от гейм-дизайна до нагрузки бэкэнд. С другой стороны, прямая польза для игрового процесса от этой фичи была сомнительной. Нам нужно было что-то простое, функциональное и как можно быстрее. Решили, что сделаем систему, которая будет сама подбирать интересных соперников в зависимости от уровня прокачки игрока и расставлять их на карте вокруг игрока.
Забаррикадировавшись в офисе ещё на месяц, мы принялись агрессивно доделывать игру.
Карта сектора — до и после изменений.
Второй релиз, предварительные итоги. Июль 2014
Сегодня 17 июля, и наша игра уже две недели находится в режиме «мягкого старта». К счастью, при публикации приложения нам удалось довольно быстро продраться через заросли из «анкет приложений», «заявок на размещение приложения», «загрузок договоров» и выбраться на поляну, где нас ждал настоящий живой и довольно отзывчивый модератор Олег. Увидев, что намерения у нас самые серьезные, он довольно быстро нажал на свой рычаг, так что административная часть заняла всего один день.
Вот хронология дальнейших событий:
- 2 июля. Внутреннее тестирование. Нашли кучу багов на клиенте, чиним.
- 11 июля. Купили 1000 инсталлов по 1.8 рубля (мужчины 25+, баннер в «Рекомендованных»). После 200 установок игра перестает работать, чиним.
- 12 июля. Купили ещё 1500. Получили первые платежи. Нашли кучу багов в логе сервера, чиним.
- 13 июля. Купили ещё 1000. Тестируем разные баннеры, лучше всего работают Огромные Боевые Роботы.
- 15 июля. Подвели первые итоги. 1000 человек играет. Возвращаемость на второй день — 35%. Отбили расходы на рекламу.
- 16 июля. Тестовый запуск признан успешным.
В ближайшее время нам предстоит переработать огромную коллекцию накопившихся идей и выяснить, какие из них попадают в категорию «брюк для птиц», а какие по-настоящему могут сделать игру лучше. Кроме этого, до запуска нам обязательно надо интегрировать в игру основные механизмы виральности (с настройкой которых, надеюсь, нам поможет игровой отдел Одноклассников). Без них у нас не будет органического трафика (сейчас мы имеем 20 установок в день).
Показатели у игры оказались вполне приличными, так что полномасштабный запуск (с органическим трафиком из списка новых игр и «взрослыми» маркетинговыми бюджетами) мы запланировали на середину августа.
На этом заканчивается первая серия. Через пару недель расскажу, что было дальше.
Пара скриншотов из финальной игры.
Автор: Odnoklassniki_ru