Лого vc.ru

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

История разработки мобильного гоночного раннера 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, хотите рассказать о своём опыте разработки или задать вопрос экспертам — оставьте заявку нашим менторам с помощью специальной формы.

Статьи по теме
Разработка приключенческой игры в Unity 4 и Unity 5 — опыт создателей The Uncertain04 августа 2015, 12:33
Создание реалистичной модели дракона с помощью Unity — опыт разработчиков Time of Dragons30 июля 2015, 16:26
Анонс рубрики Unity04 июня 2015, 16:31
Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

Как раз нужная инфа, сами сейчас раннер гоночный делаем

перспективненько смотрится по части арт-стиля, геймплея конечно пока не разглядеть.

Суть в том что мир генерируется случайно и бесконечно.
А вот геймплей заключается в том что если игрок остановит машину/получит сильные повреждения или слишком долго будет ехать с медленной скоростью то игра будет закончена с надписью "Сердце девушки остановилось + время сессии игры"

Факт в том что перед игрой идет небольшой вступительный ролик, где в темном переулке плохие парни укрываясь за своими красными "Ламборджини" ведут перестрелку с хорошим парнем который прикрывает телом свою девушку в белом платье.
В итоге, девушку ранят в сердце. Хороший парень сажает ее в машину, где AI машины говорит что девушка умрет, но смерть можно отсрочить если подключить двигатель машины к сердцу девушки и не останавливаясь ехать вперед. Далее кадр где машина дает по газам и уходит в закат который плавно переходи в игровой процесс.
Игра уже окончена, смерть девушки неизбежна.
Однако сколько она проживет, сколько еще красивых берегов знойных пляжей или гор она увидит перед смертью зависит от игрока. И ошибка игрока опять же будет причиной смерти девушки.
Вот такой вот геймплей.
Из механик будет нитро/дрифт/система повреждений/трафик машин/агрессивный AI машин плохих парней на красных "Ламборджини"

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

0

Мигните в личку с пребетой, плз

0

господи, эта игра просто впала в душу, обязательно позалипаю в нее, сюжет у вас реально крут)

0

Напомнило много чего: и Kavinski, и фильм "Драйв", и Hotline Miami.
Хотелось бы увидеть конечную игру.
Удачи в разработке!

Да именно этим и вдохновлялись. Спасибо!

0

Вдохновлялись очень скромно звучит. Тут настолько явная эксплуатация трендовых образов ретрофутуризма 80-ых что аж скулы сводит. Неужели нельзя разбавить все это чем-то своим?

0

Пытаемся, однако в случае с генерацией окружения это сложней.
В PW2000 дизайн уровней постановочный как никак.
В видео что я снял генератор захотел сделать много прямых и 2 города подряд, хотя умеет делать пляжи, горы, тоннели и пустыни.

0

Да, тож об этом подумал)) потом специально включил - она)))

0

Только местом создания :)

0

Возможность комментирования статьи доступна только в первые две недели после публикации.

Сейчас обсуждают
Дмитрий Трипалюк
hyper weapon

Идея неплоха. Я бы поюзал, если бы мне это дало N единиц новой лояльной аудитории ;)

«ЧатКвест» — инструмент для создания маркетинговых квестов в мессенджерах
0
Татьяна Бочкарева

Есть мысли о тезисе номер два. Очень скоро грядет революция в области перевозок людей. Люди будут перемещаться на воздушном метро, стоимость строительства которого в 100! раз дешевле подземного, а скорость до 500 км/ч при цене строительства путевой структуры в $5 млн за 1 км. Причем перемещаться люди будут почти бесплатно, так же как мы сейчас бесплатно звоним через Скайп. Окупаемость будет за счет попутных грузов. Как вам такое - ездить на каждые выходные на свою дачу с Москвы до Анапы за 3 часа?
Уже сейчас можете увидеть этот транспорт в движении (он запущен 29 ноября 2016г). Поддерживайте этот проект воздушного метро (струнный транспорт). Ещё можно успеть стать инвестором данного проекта. Увидеть его в движении и подписаться на новости можно на сайте проекта: goo.gl/qlfD2z

«Через 50 лет стран не будет — останутся только города»: основные тезисы лекции Кьелла Нордстрема о будущем
0
조냐 박

Если я пользуюсь только этими бесплатными 15 ГБ, то мне не о чем волноваться?

Google предупредила российских пользователей о повышении цен с 2017 года из-за «налога на Google»
0
Amar Ak

500-200? И даже не принято? В какой развитой стране такое есть? Так проще всем онлайн магазинам перенестись в юрисдикцию Гонконга и торговать, никаких пошлин, никакого НДС, раб сила по 200usd/месяц... и цены будут хорошие, правда в россии будет еще меньше рабочих мест и налоговых сборов...

Власти России намерены снизить беспошлинный порог для ввоза интернет-посылок до 500 евро с середины 2018 года
0
Johnny Vorony

Мне очень стыдно, коллеги, но до этой статьи я не знал кто такая Алена Владимирская.

Алёна Владимирская и оператор Wi-Fi в московском метро запустили проект с бесплатными карьерными советами
0
Показать еще