{ "google": "UA-81119751-1", "yandex": "38620795" }
Редакция DTF
3 179
pro

История разработки мобильного гоночного раннера Traffic Nation на движке Unity

Вместе с Unity ЦП публикует истории разработки игровых проектов, созданных на базе популярной технологии. Расскажите о своём кейсе, чтобы попасть в рубрику.

Сегодня в Unity — рассказ ведущего разработчика студии LaikaBOSS Games о процессе создания гоночного раннера Traffic Nation.

Поделиться

В избранное

В избранном

Мы любим гонки. Мы смотрим гонки, мы играем в гонки, следим за обзорами новых автомобилей. Даже на столе с незапамятных времен постоянно стоят модели игрушечных гоночных автомобилей. И, конечно же, делаем про гонки игры.

Всё началось примерно полтора года тому назад. У нас была сформированная команда из трёх человек, был успешный опыт разработки на Unity. Мы тогда закончили разработку игры Road Smash (на эту тему был доклад-постмортем на конференции DevGAMM) и думали, что же делать дальше. Вопрос выбора технологии не стоял — Unity был, и на данный момент остаётся самым лучшим игровым движком в отношении скорости разработки к качеству.

В топах гонок Google Play и App Store был Traffic Racer и такие мастодонты, как Asphalt и Need for Speed. Наш прошлый опыт показал, что надо делать простые «залипательные» игры — пользователям это нравится. Поэтому мы решили сделать бесконечный раннер по аналогии с Traffic Racer, добавив физическое поведение автомобилей. Чтобы поведение тачек было реальным и можно было делать заносы.

Быстро подняли Continuous Integration Server для автоматических билдов, в качестве рабочего названия выбрали NextRace. И каждый принялся делать своё дело. Денис начал моделлить тачки и окружение, Юрий занялся прототипом игры.

Я же начал писать внутреннюю архитектуру. Кстати, про архитектуру приложения стоит сказать отдельно: в прошлый раз у нас был авторитарный сервер, который в случае обнаружения читеров (время не совпадает или денег больше, чем надо), откатывал прогресс игрока назад. И если по какой-нибудь причине сервер не запоминал прогресс, а это случалось довольно часто, то ли баг какой или запросов слишком много — сервер исполнял «колесо отката» и сбрасывал текущий прогресс. Игроки плакали, кричали «Разраб, верни галду!», писали в саппорт пачками.

В этот раз мы решили, что сервер будет только для восстановления прогресса игрока и хранения лучших результатов — топов, а также для подгрузки новых элементов — машин, красок, винилов. Серверу предстояло играть лишь вспомогательную роль, и он никак не мог причинить вреда пользователям. Это означало, что локально читеры могли читерить сколько угодно, но никак не влияли на других игроков. Локально 95% читеров отсекает ассет от нашего соотечественника Дмитрия Юханова — CodeStage Anticheat Toolkit.

Теперь мне надо было написать максимально гибкую сериализацию, чтобы новые фичи, новые объекты легко было интегрировать, а прогресс из версии к версии игры восстанавливался без проблем.

За первые три недели мы получили прототип геймплея. Физику поведения машины купили в Unity Asset Store, слегка её подтюнили и начали искать удобное управление автомобилем в рамках сеттинга «гонка-раннер». Изначально управление было двух типов — кнопки и гироскоп. Позднее мы добавили руль.

Больше всего проблем было с генерацией мира. Как известно, сразу огромный мир создать невозможно в силу трудозатратности. В мире без физики бесконечный раннер сделать довольно-таки просто, есть две техники:

  • ты как центральный объект стоишь на месте, а все объекты «достраиваются» и бегут вокруг тебя;
  • ты бежишь по миру, а мир «достраивается» по мере движения.

У каждого решения есть свои плюсы и минусы, но в случае использования физики всё становится сложнее — надо синхронизировать физическое состояние мира. Хотелось, чтобы не только своя, но и остальные машины вели себя адекватно. Решили сделать следующим образом:

  • Мир создаётся из кусков дороги, которые подходят друг другу.
  • Авто едет по трассе, и мир «достраивается» спереди. Сзади мир уничтожается.
  • У трафика есть свой определённый путь — линия, по которому он едет. При переходе из одного куска дороги к другому он находит соответствующую линию и продолжает по ней движение, в соответствии с законами физики. Для создания путей мы использовали Spline Editor.

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

Ещё через две недели был готов гараж и основные элементы UI для него. Денис уже вовсю выдавал новый контент, я же старался оперативно встраивать его в текущую версию. Благо, у нас уже был опыт в этом деле, и мы заранее автоматизировали импорт основных типов объектов в Unity. Так, например, экспорт или импорт автомобиля из 3D-пакета в Unity занимал не более минуты.

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

Постоянно пользовались Asset Store: для интерфейсов использовали NGUI, для платёжной системы — Unibill, звук проигрывали с помощью MasterAudio.

20 июня 2014 года мы выпустили первую версию в СНГ в открытый бета-запуск (софт-лонч). Игру назвали XRacer. Целью софт-лонча было собрать статистику, оценить показатели.

За один месяц без бюджетов на рекламу и маркетинг мы получили чуть меньше 40 тысяч установок. Выяснили, что игроки проводят в игре довольно продолжительное время, приглашают друзей, и платят очень мало денег. Это было ожидаемо, потому что мы не прибегали к помощи геймдизайнеров, и наш посчитанный баланс был слишком простым для пользователя. Пользователям не нужно было платить. Более того, игрокам не была очевидна цель игры — её там и не было.

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

Далее призвали нашего старого друга-геймдизайнера, он определил игровые цели, посчитал баланс. Все держали в Google-документе, получилось очень много цифр. Поняли, что при каждом изменении перевбивать цифры вручную будет слишком долго, научились импортировать данные с помощью плагина Google Doc Connector.

Изменения делали итерациями, результат получали довольно быстро. В этом очень помог CI-server: у нас всегда под рукой были самые свежие билды, с помощью логов мы оптимизировали потребление памяти на девайсах. И да, мы уложились в 50 МБ.

И только после нескольких итераций, экспериментов и доводки баланса до хорошего уровня мы выпустились. Изменения были глобальные, и их оказалось так много, что мы решили выпустить тайтл как новую игру — Traffic Nation. Надеемся, что старым игрокам изменения понравятся, а новые игроки станут нашими фанатами.

Спасибо за внимание.


Если вы работаете на технологии Unity, хотите рассказать о своём опыте разработки или задать вопрос экспертам — оставьте заявку нашим менторам с помощью специальной формы.

Материалы PRO выходят
при поддержке Riot Games
Мы ищем лучших
We are Rioters
Материалы PRO выходят
при поддержке Riot Games
Популярные материалы
Показать еще

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

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться