Полезные инструменты для Unity-разработчика — выбор эксперта игровой студии ComonGames Статьи редакции

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

Сегодня в выпуске — рассказ одного из создателей казуальной RPG Bomberlands Анатолия Малкова о том, как велась разработка проекта и какие инструменты использовала команда.

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

На днях исполняется ровно год с момента создания нашей студии. Тогда перед нами встало два основных вопроса: какой проект делать и на чём? Так как я в то время уже был достаточно близко знаком с Unity (который, в свою очередь, мне посоветовали из-за его кроссплатформенности), его возможностями и преимуществами, о которых я расскажу чуть позже, то наш выбор пал на Unity версии 4.2.

2014 год. В качестве первого игрового проекта наша тогда ещё безымянная команда решила реанимировать одну из старых и незаслуженно забытых игр. Такой игрой была выбрана Minebombers. В 90-х годах в неё с удовольствием «резались» в классах по информатике.

Ключевыми особенностями были полная разрушаемость, широкий выбор бомб и другого оружия, высокий игровой темп, встроенный редактор уровней и возможность устроить эпических размеров Армагеддон на отдельно взятой карте. Также мы надеялись на уже отточенный в оригинале геймплей, который, как мы думали, достаточно будет просто перенести, и ностальгию игроков.

Уже через пару месяцев наша команда окончательно сформировалась и обрела название ComonGames, в неё вошли первоклассные специалисты своего дела — сценарист, моделлер, художники и другие, — первый рабочий прототип был готов, вместе со встроенным редактором карт, биржей обмена и полностью перенесённой механикой. Кстати, эта была не первая попытка реанимации игры. Всего мы встретились с шестью такими попытками, выполненными разными энтузиастами в разное время, широкой публике эти наработки так и не были показаны.

Вот как тогда выглядел наш прототип:

После этого мы убедились, что простого перенесения механики недостаточно. Современные игры отличаются от старых не только более качественной графикой и более полигональными 3D-моделями. Оказалось, что огромную песочницу из оригинала очень трудно перенести в 3D. Даже если заменять объекты на очень простые, их всё равно остаются тысячи. Причём из-за вида сверху все они должны попадать в обзор одновременно. Опять же, для удобной игры нужно видеть всю карту целиком, но при этом 3D-объекты смотрятся даже хуже, чем оригинальные спрайты.

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

Поэтому был переработан сеттинг (мультихайтек), главный герой (миньон-кротан), сюжет, механика, интерфейсы. Были добавлены такие RPG-элементы, как квесты, прокачка скиллов и экипировки героя, создание и прокачка собственной базы. Появились PVP-бои. Главный интерфейс был переработан в виде интерактивной локации, в роли которой выступила лаборатория кротана. Размер карты уменьшен, и из песочницы прототип превратился в RPG-аркаду с большой разрушаемостью объектов.

Была написана предыстория игры, повествующая о нелёгкой жизни последнего «учёного-суперзлодея» в мире, переполненном героями. Но нашим героем становился не он, а один из его верных миньонов. Он был снабжён высокотехнологичным экзоскелетом или роботом. Были нарисованы и замоделированы концепты его игровых врагов.

Перейдём к технической части.

Все это мы начали делать на Unity 4. Начать воплощать на этом движке свои игровые концепты можно практически сразу — за счёт простоты разработки, большого количества статей, видеоуроков и локализованных справочных материалов. Благодаря этому вокруг движка образовалось обширное сообщество разработчиков, каждый из которых вносил свой посильный вклад в наполнение магазина плагинов и расширений Asset Store.

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

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

Несмотря на низкий порог вхождения, который неизбежно порождает немало низкокачественных или очень простых игр, что, в свою очередь, вызывает пренебрежительное отношение к движку среди некоторых разработчиков, четвертая и в особенности пятая версии Unity позволяют создавать игры AAA-класса. Недаром разработчики оригинального Fallout при разработке Wasteland 2 выбрали именно его.

Кстати, у нас переход на пятую версии произошёл на удивление гладко. Раньше, как правило, многие скрипты приходилось править вручную из-за изменений, вносимых в новую версию движка. Так, многие плагины, разработанные на Unity 3.x, отказывались работать в четвертой версии, пока сам не исправишь их скрипты. Разработчики движка учли это, и теперь автоапдейтер решает 95% проблем , возникающих при переходе на пятую версию.

Перед началом разработки советую всем хорошенько прошерстить Asset Store. Наверняка вы найдёте с десяток полезных инструментов, которые сэкономят вам от 50% до 90% времени разработки.

Первый по важности — инструмент по созданию интерфейсов. С ним у Unity были проблемы вплоть до последних релизов четвертой версии движка, поэтому неудивительно, что в магазине появился с десяток различных GUI-инструментов. Какие-то лучше, какие-то хуже, но в большинстве случаев выбор обусловлен личными предпочтениями. Если вы научились работать с каким-то инструментом, и он может решить 90% ваших задач, то нет особенного желания разбираться с их конкурентами.

Сейчас многие задачи можно решить и встроенными средствами, но мы всё ещё остаёмся верны NGUI. Этот плагин был в своё время революционным. На нём построен практически весь наш 2D-интерфейс. Хорошая производительность, удобная работа с атласами, событиями, вызовами программ, к тому же у популярных сторонних плагинов считается хорошим тоном иметь интеграцию с NGUI.

Как я уже упоминал, главный интерфейс у нас представлен в виде интерактивной локации. Что-то вроде корабля «Нормандия» из Mass Effect. Локации, активные зоны, интерактивные объекты, плавно двигающиеся камеры, управление персонажем, анимации событий и сцен — на этих элементах держится большинство квестов. Неудивительно, что в Asset Store появилось немало инструментов по их созданию.

Для меня бесспорным лидером стал Adventure Creator. Именно он отвечает за нашу лабораторию.

Если вы хотите использовать квесты в своей игре, то перед вами встаёт проблема: в Unity нет встроенного квестового движка. Как вести учёт персонажей, квестов, диалогов, как, в каком порядке и в каком случае их выводить, как менять состояния квестов, как их прохождение будет влиять на игровое окружение?

Написание такого самодельного квестового движка — задача нетривиальная. К счастью, это уже сделали за нас. Вариантов таких движков тоже немало, но наш выбор остановился на Dialogue System for Unity.

Он состоит из нескольких элементов: квестовая БД, квестовый интерфейс и квестовые триггеры. БД можно заполнять как внутри Unity, так и импортируя квестовые БД из других широко распространённых инструментов (Aurora (Neverwinter Nights), articy:draft, Chat Mapper). Для вызова диалогов и квестов или изменения их состояния достаточно установить соответствующие триггеры в игре, после попадания в которые будет вызвано нужное меню.

В комплект входит множество примеров интеграции с другими плагинами, начиная от NGUI и Daikon и заканчивая MasterAudio И PlayMaker. Именно он используется у нас для создания квестов.

Одним из небольших, но важных элементов хорошего интерфейса являются HUD-элементы. Хотя указание расстояния и направления до цели кажется простой задачей, порой оно отнимает уйму времени. Вместо того, чтобы изобретать велосипед, лучше воспользоваться готовыми решениями, вроде Waypoint System. Так, у нас в игре при использовании некоторого оборудования игроками появляются указатели на ближайшие ресурсы или на врагов, что очень удобно.

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

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

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

Такими кубмапами создаются скайбоксы. Но одно дело — нарисовать кубмап неба и горизонта. А если вам требуется создать кубмап определённого помещения? Редкий художник сможет нарисовать такой.

И тут нам на помощь приходит утилита Cubemapper. Достаточно поместить объект с нужным скриптом в нужную точку, нажать на клавишу — и кубмап готов, а проблема с отражающими поверхностями вроде бы решена, и всё хорошо.

Но выпускается очередная версия движка, и оказывается, что кубмапы теперь не нужны. Отражающие поверхности делаются гораздо проще и удобнее.

Впрочем, труд автора не остался бессмысленным. С помощью этой утилиты всё ещё можно создавать прекрасные скайбоксы.

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

Тут на помощь приходят плагины вроде Crafty. Билды сортируются по папкам, а для создания патча достаточно выбрать начальную и конечную версии игры. Конечно, необходимо иметь сервер, где будут храниться актуальная версия игры и набор патчей, а также список возможных обновлений, но в остальном работа по обновлению версий существенно упростится. Именно так на данный момент происходит обновление версий у нас в игре.

Exploder — это не то чтобы необходимое каждому, но очень интересное расширение. Для нас оно оказалось очень полезным.

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

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

В общем, теперь наши объекты не просто исчезают, а раскалываются на несколько частей и постепенно исчезают. Конечно, фрагментация объектов отнимает существенное количество процессорного времени, что раньше вызывало лаги в игре, но теперь разработчики вынесли эти вычисления в отдельный процесс и добавили такую замечательную вещь, как ограничитель процессорного времени. То есть можно разрешить тратить на такие вычисления не больше 5 мс на кадр, таким образом избегая лагов. Честь им и хвала.

Ну и, наконец, стоит упомянуть про Mixamo. Это не просто плагин, это сервис по анимации со множеством полезных инструментов, тесно интегрированный с Unity. На мой взгляд, инди-разработчики должны молиться на этот замечательный, хоть и не бесплатный сервис.

Создание 3D-моделей персонажей, создание их скелетов (рига) и их анимация является одним из наиболее затратных процессов при разработке игры. Но данный сервис позволяет сделать это даже закоренелому программисту, который не очень хорошо рисует.

Mixamo Fuse позволяет легко создавать гуманоидных персонажей и в несколько кликов анимировать их. Причём анимации на весьма достойном уровне, и их при этом можно ещё и калибровать. Более того, с помощью утилиты Face Plus того же самого разработчика можно даже создавать собственные лицевые анимации, дома с помощью обычной веб-камеры или, если всё совсем плохо, то с помощью своего смартфона.

И хотя Mixamo Fuse позволяет создавать только людей, он также умеет импортировать ваши модели и автоматически создавать их скелет. Если вы занимаетесь разработкой, то должны понимать, насколько это круто и как это экономит время.

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

Конечно, авториг работает тем лучше, чем гуманоиднее модель. Конечно, хороший специалист сделает эту работу лучше, но этот сервис позволяет создать нормальную игру (в определённом жанре), с нормальными персонажами, взятыми из открытого доступа или из того же магазина, анимация которых не будет вызывать отвращения. И сделано это может быть человеком, ничего не смыслящим в 3D-моделировании. На мой взгляд, это очень большой плюс в пользу Mixamo. Собственно, большая часть анимации в нашей игре создана именно с помощью Mixamo.

Есть и другие плагины, которыми мы пользовались при разработке, но, думаю, на этом стоит остановиться.

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

0
4 комментария
Михаил Шунько

ого

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

Пойду пилить игру ... ПС - знаю. Языком владею.
Кто нибудь хочет присоединиться а?
Айда в команду инди )

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

Есть классное видео "Как создать игру Angry Birds на Unity3D" - https://www.youtube.com/watch?v=pWRKhQMiMms&list=PLvItDmb0sZw-gX24alTESntEHT6narOu0&index=3

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

Спасибо интересная статья. Заинтерисовался Crafty, жаль только, что он не развивается больше. Приходится все на бандлах делать, как и раньше)

Ответить
Развернуть ветку
1 комментарий
Раскрывать всегда