Офтоп
Дарья Хохлова

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

0
16 комментариев
Популярные
По порядку
Написать комментарий...
Denis Kuandykov
Ответить
2
Развернуть ветку
Lex Mosolov

http://www.youtube.com/watch?v=r1LU0NGCVHQ

https://www.kickstarter.com/projects/1420158244/power-drive-2000

В альфе они выглядят круче. Подтягивайтесь.

Ответить
3
Развернуть ветку
Denis Kuandykov

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

Ответить
0
Развернуть ветку
Дамир Камалетдинов

музыка из Kung Fury?)

Ответить
0
Развернуть ветку
Сева Nort

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

Ответить
0
Развернуть ветку
Sergey Babaev

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

Ответить
1
Развернуть ветку
Denis Kuandykov

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

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

Ответить
4
Развернуть ветку
Александр Чернов

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

Ответить
0
Развернуть ветку
Sergey Babaev

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

Ответить
0
Развернуть ветку
Рамиль Галиуллин

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

Ответить
0
Развернуть ветку
Ivan Karepov

Стильный сеттинг!

Ответить
1
Развернуть ветку
Антон Петренко

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

Ответить
1
Развернуть ветку
Denis Kuandykov

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

Ответить
0
Развернуть ветку
Evgeniy Yudin

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

Ответить
0
Развернуть ветку
Denis Kuandykov

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

Ответить
2
Развернуть ветку

Комментарий удален

Развернуть ветку
Fast Racer

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

Ответить
0
Развернуть ветку
Читать все 16 комментариев
Платежи в Южной Африке

Несмотря на то, что Южная Африка находится (сюрприз) в Африке, мобильные кошельки или QR-коды там совсем не используются, в отличие от большинства стран континента. И причина тому -- сильная банковская система, доставшаяся стране от Британской империи. Как следствие, в плане банковских услуг и платежей Южную Африку сложно отличить от…

Фоторамка 2.0 или что подарить бабушке на Новый год

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

Чему я учусь у своих детей как предприниматель

Дети смотрят на мир открытыми глазами и у них есть чему поучиться.

Мне отказано в возврате денег за обучение в geekbrains data scientist, которое ещё не началось

Пишу отзыв про geekbrains. Купила в черную пятницу у них курсы по Datsscientist, курсы куплены в рассрочку, были необходимы, чтобы усилить знания по питону для создания торговых ботов. Но так как в группе не нашлось свободных мест, то старт обучения ближайший БУДЕТ только 27 декабря (встреча с деканом), сами платные модули начнутся 10 января, то…

«Битрикс24» достиг отметки в 10 миллионов зарегистрированных компаний

19 ноября 2021 года в сервисе для управления бизнесом зарегистрировалась компания из Индии, город Диу. Она стала 10-миллионным пользователем «Битрикс24»

Увлечение самолётами, которое переросло в бизнес

Предприниматель из Волгограда производит и продаёт по всему миру симуляторы дополненной реальности.

DiDi впервые показал в России электромобиль для водителей такси

Его представили 7 декабря на форуме «Открытые инновации» в Сколково.

Компании, которые только про деньги, живут недолго: мои 10 инсайтов за 10 лет управления digital-агентством

Меня зовут Илья Горбаров, я CEO digital-агентства «Атвинта». Нам исполнилось десять лет — зрелый возраст для IT-компании и время порефлексировать о том, какие решения усилили нас, а какие — нет. Символично собрал десять инсайтов за эти годы: подсказать молодым агентствам и обсудить с более опытными коллегами.

Как и чем сейчас живут московские рестораны, отмеченные гидом «Мишлен»

Узнали и рассказываем, как повлиял звездный статус на рестораны «Деликатессен» и «Паризьен», и за что их сотрудники получают повышенные чаевые.

Сезон подкаста как эксперимент: научили ведущих бегать и отправили на полумарафон. Кейс Sports.ru и adidas
null