Лого vc.ru

Разработка игровой карты War Commander: Rogue Assault на движке Unity — рассказ одного из разработчиков игры

Разработка игровой карты War Commander: Rogue Assault на движке Unity — рассказ одного из разработчиков игры

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

Сегодня в выпуске — рассказ одного из разработчиков игры War Commander: Rogue Assault Луиса Касла о создании карты для захвата мирового господства на движке Unity.

Благодарим за помощь в подготовке материала эксперта рубрики Unity Святослава Панкратова.

Поделиться

Миссия

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

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

Теоретически эта задача казалась относительно простой. Работать крупными мазками, быстро пройти несколько итераций, а затем постепенно наводить глянец. Но на практике очень трудно предвидеть количество работы, если у вас нет времени на предварительную визуализацию и планирование игры в целом. Мы знали только одно: наша цель будет меняться. Сильно.

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

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

Инструменты

Первым делом мы исключили все лишние клики и телодвижения.

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

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

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

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

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

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

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

Три в одном

Чтобы создать наилучший обзор, мы работали с нашей библиотекой как с единой сущностью. Мы не фокусировались на том, чтобы довести до совершенства каждый конкретный объект, а старались сделать всю библиотеку в целом однородной по качеству.

В этом нам очень помогло создание в Maya мастер-файлов со всеми похожими объектами. Если ваш 3D-пакет поддерживает эту возможность, воспользуйтесь ей: это гораздо удобнее для поддержания равномерной детализации объектов, нежели просто записывать какие-то цифры в DOC-файле, который никто никогда не откроет.

Итак, сказано — сделано, мы разместили всю нашу библиотеку в трёх атласах по 1024х1024 пикселя. Два из них мы использовали для непрозрачных объектов, а третий — для прозрачных (прозрачность мы старались использовать крайне экономно: у нас даже листва непрозрачная).

Так выглядит наша библиотека арт-окружения: слева сгруппированы растительные ассеты (Lush), в центре — общие ассеты, справа — сухие ассеты (Arid). Причём эти три атласа используются для текстурирования всей нашей библиотеки

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

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

Фундамент

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

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

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

Окончательный вид локации

Вид сверху

Наша стратегическая карта мира прошла несколько визуальных итераций. Созданная на базе изображений со спутников? Реалистичная? Стилизованная? Векторная? В виде игрового поля в настольной игре?

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

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

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

Финальная композиция двух зон в нашей карте мира. Нам удалось смоделировать спутниковую карту без атмосферы и следов присутствия человека

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

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


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

Статьи по теме
Руководитель игровой студии Krivorukoff об истории компании и проекте Real Tank Battle — танковой игре «в реальном мире»29 октября 2015, 14:59
Оптимизация сцены и работа со светом в Unity 5 — советы 3D-художника студии Rammen Speed23 октября 2015, 17:25
Анонс рубрики Unity04 июня 2015, 16:31
Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

Отличная статья для начинающих, спасибо большое. Интересно было бы узнать по какому принципу реализована тулза которая находила и заменяла "прокси префабы"

Могу предположить, что использовался [ExecuteInEditMode] аттрибут для изменений в редакторе. Можно пробежаться по всем объектам в сцене, по определенному признаку выявлять деревья и перезаменять их новыми.

0

идеи не новы, много раз встречал подобные теории и реализации да и сам использовал
результат у вас отличный... пару моментов для себя подцепил ... спасибо!

Игрушка очень похожа внешне на Call of Duty: Heroes (lenovoz.ru/?j=call-of-duty-heroes-android&t=mn&imn=170&icr=1), похоже и там Unity используют. А вообще, обращаю внимание, что этот движок уже даже для аркад используют!

ну вроде Unity уже давно и для Аркад используют )))
эм, ну как бы вот пример vk.com/star3d#vc
... а вообще и не только, используют вообще для чего угодно

0

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

Сейчас обсуждают
Shtadler Anton

потому что хочется) У каждого свой фан.

Ашот Габрелянов представил приложение Magic для создания индивидуальных стикеров на основе эмоций
0
Дмитрий Каулькин

Язь это ещё норм. Хорошо, что не дратути.

«Вжух»: реакция российских компаний на мем с котом и волшебной палочкой
0
Maga Abdurakhmanov

1. Google Authenticator на часах, очень удобно, что всегда под рукой. За телефоном обычно надо лезть
2. SMS коды, тоже самое что Google Authenticator
3. Нотифаи, настроенные в соответствии с важностью, не надо лезть за телефоном ты сразу видишь, особенно удобно с встречами
4. Не отвлекает людей вокруг звуки твоего телефона (я его всегда на тихом режиме держу теперь)
5. Будильник в часах будит только тебя виброй
6. Если забыл телефон дома и ушел, часы напомнят виброй
7. Управление музыкой, не надо искать телефон, погромче или на паузу поставить
8. Когда едешь на велосипеде, а тебе пишут смс/в телеграм, можно голосом ответить с часов, не доставая телефон
9. Тречит сон и шаги, так-как часы всегда на запястье (7 дней на зарядке)

Есть на рынке другие часы, которые это могут?

От $740 млн до $40 млн за один год
0
Nikolay Kachev
Tredwear

Как будто балтику 9 рекламируют, а не напиток для интеллектуалов. Типа наебенься с нами чувачок

Компания «Альянс» показала на бутылках своего сидра героев знаменитых картин в состоянии опьянения
0
Sp Soul
ITSys

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

Штаб-квартира: Петербургский офис игровой студии Playkot
0
Показать еще