{ "author_name": "Vladislav Khromov", "author_type": "self", "tags": ["unity","leveldesign","art"], "comments": 5, "likes": 25, "favorites": 9, "is_advertisement": false, "section_name": "blog", "id": "12830", "is_wide": "" }
Vladislav Khromov
628
Блоги

e-Ro: модульность, анимация и дизайн уровней в Unity

Французский дизайнер уровней Pierre-Henri Paitre в подробностях рассказал сайту 80.lv об удивительном проекте на Unity. e-Ro - красочный стелс-платформер с забавным дроидом, который бродит по улицам Венеции. Художник поделился некоторыми техниками при разработке дизайна уровней, создании главного героя и других аспектах разработки игры.

Поделиться

В избранное

В избранном

Введение

Меня зовут Pierre-Henri Paitre, я из Франции, а сейчас живу в Монреале. Я недавно закончил учебу в ISART Digital Montreal как 3d artist. До этого я изучал кинематограф и пост-продакшен и работал моушен-дизайнером на большие студии в разных проектах - кино, реклама, тв, живые мероприятия. 3 года спустя я решил вернутся к учебе, поскольку мне потребовалось больше знаний в 3D, ведь чем более разносторонний набор навыков у тебя, тем больше у тебя клиентов. Я играл с тех самых пор, как мои пальцы могли справится с Gameboy, так что для меня было абсолютно естественно изучать 3D в школе посвященной играм. Одновременно мне была интересна Канада, так что со моей женой мы оставили Францию и отправились в новое приключение. Буквально за пару месяцев я увидел весь художественный потенциал игр и мои цели целиком ушли от моушен дизайна к игровому арту.

e-Ro

В последний год обучения в ISART, гейм-дизайнеры и художники сформировали 3 группы и нам надо было с нуля сделать игру за 8 месяцев. В прошлом ноябре, я присоединился к команде с 2 двумя художниками и 3 гейм-дизайнерами с прототипом "Black Prague". Питч был очень прост: ты инфицированная крыса и тебе необходимо найти возможность для заражения людей. Ключевая механика была в том, чтобы запустить цепную реакцию для решения задачи. Ты заражаешь яблоко, его съедает NPC, который распространяет заражение дальше. Так что изначальный жанр прототипа был stealth-puzzle-platformer.

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

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

Меня очень вдохновляли игры вроде INSIDE из-за камеры, захватывающей прекрасные виды, The Wither 3: Blood and Wine за красочный город Тусан, и разумеется Assassin’s Creed 2 за архитектуру старой Венеции. Но референсы никогда не могут ограничиваться только играми, так что контрастные картины Караваджо и Рембранта были отличной основой для работы с тенями. А технику перспективы мы почерпнули из работ да Винчи, где он создавал плавный переход красок и оттенков. Так же мы собрали множество реальных фотографий, Google Street View современной Венеции и кое-какие старые картины средневековой эпохи. Референсы - основа успешного пре-продакшена!

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

Создание

Прежде чем начать мы потратили достаточно много время на разработку концептов и общего стиля. Как художник по окружению (environment artist) проекта, я сделал несколько базовых моделей домов и небольшой квартал города. Именно на этом этапе стоит утрясти все вопросы по стилистике. Нельзя приниматься за разработку, если до сих пор есть некоторые сомнения по стилизации или моделингу. Вообще это время для многих попыток и ошибок. Много раз я был доволен моделью, но на следующее утро я начинал заново, поскольку она не согласуется с остальными ассетами.

Но еще более важная часть пре-продакшена - проработка текстур. Нам повезло работать с Jeff Huard, который хочет стать художником по текстурам (surface artist) и проделал впечатляющую работу над проектом. Он часами занимался подбором материалов в Substance Designer. Предварительная проработка текстур очень важна еще и потому, что позволяет заранее знать, что придется моделить и/или скульптить, а что можно оставить нормали. Но больше всего времени мы потратили пытаясь найти нужный баланс между реалистичностью и стилизацией.

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

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

Мир

Как художник по окружению, я старался работать настолько "модульно" , насколько возможно. Я не мог создать целый город моделируя каждый отдельный дом. Так что важной вещью стало масштабирование. Я много общался с гейм-дизайнерами, чтобы полноценно понять ограничения и цели левел-дизайна. Если дизайнеры задавали определенный параметр герою для прыжка, то тебе приходится моделировать ящик, стену или любой другой ассет, который мог быть платформой, оглядываясь на эту цифру. Я сделал несколько ошибок случайно задавая пропорции и размеры, так что часто приходилось переделывать модели и терять драгоценное время. Мой совет всем кто учится: не начинайте делать модульный набор, пока не утвердите все пропорции на 100%. Геймплей всегда будет в основе всего и неважно насколько прекрасным получился ассет, если он не служит целям геймдизайна.

Масштабирование было полезным, так что я пытался оптимизировать модульность как только возможно. Я задавал себе следующие вопросы:

  • Будет ли этот ассет часто использоваться?
  • Смогу ли я использовать несколько сторон этого объекта?
  • Насколько он будет далек от камеры?
  • Может ли он быть использован с другой целью?
  • Будет ли это важный элемент дизайна уровня или объект фона?
  • Подходит ли он в общий стиль уровня?

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

Мой пайплайн обычно был таким: я делал базовые формы в Modo, после скульпт в Zbrush, ретопология обратно в Modo и запекание в Marmoset Toolbag 3. В конце текстурирование в Substance Painter.

Наиболее сложная часть была посреди производства, когда количество ассетов начинает резко расти. Когда у тебя сотни файлов, FBX, hi-poly, текстуры, etc. Все ли правильно названы? UV, вертексные карты, polycount, модульность, snapping. Все ли готово для импорта в движок? Мы были достаточно организованы с самого начала, так что мы обошлись лишь небольшими проблемами.

Текстуры

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

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

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

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

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

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

Little Droid

Ни я, ни кто другой в команде не художник по персонажам. Но я сам вызвался сделать дроида, но говоря откровенно, это был выход за зону комфорта. Я знал примерную цель - милый робот, готовый к приключениям, но неловкий, как некий микс между R2D2 и C3PO. И во время причитаний "Омойбог, я не умею работать с персонажами, мну нужно вдохновление", я наткнулся на работы Rafael Amarante. Его мехи были настолько выразительны, что я буквально влюбился в его насекомо-подобную стилистику.

Я набросал несколько концептов и попробовал найти базовые формы дроида в Modo. На основании нескольких рефересов животных и роботов, я старался создать впечатление курицы/раптора, так чтобы у игрок чувствовал вес бака на спине героя. Было необязательно сильно детализировать дроида, так как большую часть времени он занимает всего одну десятую вертикальных размеров экрана. Шейдеры Modo помогли округлить углы и создали впечатление hi-poly и запекания.

После этого работа продолжилась в Maya, с целью сделать риг и гораздо более приятную для меня вещь - анимация. Мой опыт в моушен-дизайне помог мне. Я никогда не работал с 3d-персонажами, но понимание основ движения, форм, ритма и пространства не сильно отличается в разных дисциплинах. Я подобрал несколько референсов "подлой" анимации, например как у Розовой пантеры. Тем не менее это не было просто и мне приходилось переделывать несколько раз, прежде чем я был доволен результатом. После этого анимация оправлялась в Unity, где гейм-дизайнеры настроили стейт-машину, чтобы пустить анимацию в дело и все работало гладко.

Когда все были довольны дроидом, мы назвали его e-Ro и это имя стало официальным названием проекта.

Освещение

Главный источник свет один - направленный, играющий роль солнца. Ничего особенного плюс несколько ламп и факелов. Но при видимой простоте я потратил на этот единственный источник времени больше чем на модель дроида. Одна из главных вещей, которые я вынес из туториалов, конференций и подкастов, что свет это не то, чем можно заниматься в последний момент. И главный источник света был в игре начиная с самых первых блоков уровня. Стоит повернуть свет на 4 градуса по оси X и вместо раннего утра получается полуденное солнце. Поверни на 7 градусов по Y и ты изменишь композицию и геймплей всего уровня, ведь тени - это безопасные места на уровне. Цвет источника света так же очень важен. По началу мы хотели чтобы действо проходило на закате с сильными тенями в оранжевом свете. Но мы получили очень плоскую картинку, потеряв всю палитру в 50 оттенках оранжевого. Добавляя его к синей воде и ты получаешь уродливую зеленую жидкость. Я пытался добавить немного белого, но картинка потеряла остатки правдоподобности и ощущение заката.

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

Создание живого мира

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

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

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

После я принялся за камеру. Я использовал сторонний плагин Pro Camera 2D, который дает мне полный контроль за кадром и использует простую систему триггеров. Моя цель была подчеркнуть паззлы, усилить перспективу и соединить игрока с персонажем, чтобы тот чувствовал хрупкость дроида и переживал его приключение. Камера грозный инструмент для создания драматургии. Стоит приблизить её в темном и узком месте и игрок начинает чувствовать свою беззащитность. Откатить обратно и игрок увидит значительную часть уровня, что позволит ему отдышаться, выявить шаблоны поведения AI и проработать стратегию для решения. Все ради задания нужного ритма. Стоит пробовать играть с разными планами камеры - другая расстановка света, перспектив, тяжелых и легких моментов в игре. Это непрекращающееся действие, когда ты хочешь передать историю, ведь все служит для создания приятного игрового опыта для игрока.

Post-production

Когда пришло время для финальных настроек, мне не пришлось делать многого, ведь мы уже достаточно поработали над цветами и материалами. Я использовал базовые AA и AO и небольшой плагин-градиент Beautify. Он очень удобный во всех тех вещах, которые обычно подразумеваются под пост-продашеном: bloom, резкость, градация цветов, DoF, виньетка, etc. В Unity 2017.1 много улучшений, которые касаются пост-продакшена и его оптимизации.

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

Выводы

Работа над e-Ro помогал мне понять полный пайплайн разработки игр и хотя это лишь очень малая часть всего того, что происходит в индустрии, но это очень солидный пример. Я приобрел скорость, уверенность, много технических навыков и сейчас я могу назвать себя с уверенностью 3d-artist. Впереди еще очень долгая работа, чтобы стать хорошим специалистом, но я уже могу дать совет будущим студентам: работайте со всех сил! Создание e-Ro потребовало работы примерно в 60 часов в неделю на протяжении 8 месяцев. Мне пришлось пожертвовать многим: я едва мог поиграть, выходных у меня не было и даже новости я читал по минимуму. Ничто не приходит просто так, приходится много практиковаться. Учеба в школе волшебная возможность, не упускайте её. А работа в итоге оплатит всё.

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

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

Интервью взял Artyom Sergeev

#unity #leveldesign #art

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

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

Популярные

По порядку

0

Прямой эфир

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

Подписаться
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } } ]