Техническое искусство за бурным цветом I See Red

В этом гостевом посте Whiteboard Games рассказывает о истории первого коммерческого релиза студии, Я вижу красный, и делится техническими размышлениями о уникальном подходе игры к цвету.
Мы – Whiteboard Games, студия разработки, основанная в 2021 году в Буэнос-Айресе, Аргентина, пятью выпускниками колледжа, которые хотели прокладывать свой собственный путь в игровой индустрии. С тех пор Whiteboard вырос до команды из 30 молодых профессионалов, и вы читаете это введение, потому что мы собрались здесь сегодня, чтобы поговорить о нашем первом коммерческом релизе: Я вижу красный.
Я вижу красный – это безумный шутер с двумя джойстиками в жанре roguelite, который полностью посвящен ярости, бою, мести, крови, трагическим прошлым и – да, это в названии – КРАСНОМ. Его несложно выделить среди других игр, не только из-за научно-фантастических окружений и камеры сверху, но и из-за важной эстетики: Вам будет сложно найти больше цветов, чем черный, белый, серый и красный. Это решение было принято на раннем этапе и тесно связано как с нарративными, так и с игровыми аспектами. Конечно, это связано с определенными трудностями: Создавать (и играть) в игру с такой ограниченной палитрой не для всех. Как же мы к этому подошли? Продолжайте читать, чтобы узнать.
Давайте начнем с краткого исторического отступления, чтобы рассмотреть, как внешний вид эволюционировал со временем и какие ключевые решения привели к тому, чем Я вижу красный является сегодня.
Все началось с дипломного проекта для курса «Дизайн и программирование видеоигр» в школе мультимедийного искусства Да Винчи в Буэнос-Айресе. Из этой работы родилась игра, которая должна была быть менее требовательной с художественной точки зрения, так как у студентов не было много финансирования. На этом этапе цвет красный еще не захватил все. В игре был синий, даже зеленый, но не привязывайтесь слишком сильно, потому что дополнительные цвета не задержатся надолго.
После завершения курса наша основная команда не могла отпустить проект, увидев в нем реальный коммерческий потенциал. Мы решили продолжить разработку вне колледжа и собрать команду, что привело к созданию Whiteboard Games как студии. (Забавный факт: Некоторые из наших профессоров тоже увидели потенциал и, когда их попросили помочь, решили присоединиться к команде.)
На этом этапе основы игры уже были заложены: динамичный научно-фантастический шутер о красной, яростной мести.
Прошло несколько месяцев и даже лет. На фоне переговоров с издателями и инвесторами, I See Red вырос до множества взаимосвязанных уровней – теперь не только с человеческими врагами, но и с инопланетянами, а также с огромным количеством пассивов, кат-сцен и еще более отточенным художественным стилем. С достаточным количеством исправлений ошибок, тестирования, контента и улучшений производительности (все в порядке, не нужно нас благодарить), игра готовилась увидеть свет.
Время наконец пришло для демонстрации игры. Мы участвовали в нескольких мероприятиях и конкурсах и гордились тем, что создали. На этом этапе мы решили запланировать возможный релиз на консоли, переходя с HDRP на URP и меняя четкое HD на еще более стилизованную эстетику. Мы также добавили легкий холодный оттенок к градациям серого (да, синий вернулся... но никому не говорите) для более металлического ощущения и еще больше отшлифовали все. Этот переход означал, что нам пришлось обратным образом реализовать некоторые функции HDRP в URP, но мы уверены, что усилия того стоили.
Добавив к инопланетным уровням предыдущего этапа, I See Red теперь также имел роботизированных врагов, нескольких боссов, сюжет, QA, локализацию и многое другое "сделано". Пришло время нажать на большую зеленую кнопку.
Это определенно было долгое путешествие с множеством вызовов и изменений на протяжении всего пути, не говоря уже о годах работы. Мы считаем, что это выглядит и ощущается потрясающе; и, если Реджи Филс-Эйм и другие из "самых опытных руководителей в индустрии" так говорят, мы не можем быть сумасшедшими. В любом случае, мы это сделали и выпустили. Но вопрос о том, как, остался. Хорошие новости для всех вас, фанатов технического искусства: Время заняться техникой. (Предупреждение о содержании: Мы не скупились на кровь.)
Мы потратили много времени на кровь, потому что это главный визуальный сигнал, который вы получаете, когда попадаете в врага или получаете удар в игре. Этот элемент должен был быть ясным и удовлетворительным, а красный цвет — самый важный цвет в игре, поэтому не было места для лени.
Мы хотели окрасить мир в красный цвет, поэтому нам нужен был сильный контраст между серым цветом окружения и кровью, а также вариации для декалей. Мы могли бы использовать текстуры для маскировки декалей, но с количеством, которое нам нужно, это было бы слишком повторяющимся. Конечно, мы этого не хотели.
То, что мы придумали, — это сочетание шума, проектора декалей URP и мировых координат, так что в зависимости от того, где мы размещали декали, форма менялась. Используя эту технику, мы сделали так, чтобы ширина, высота, гладкость краев и шероховатость крови могли изменяться с плавной анимацией. Это удобно, когда нам нужно создать, например, лужу крови под поверженным врагом.

Изменяя цвета альбедо и свойства масок шума, мы также могли генерировать разные типы крови для инопланетян и роботов, у которых есть что-то, напоминающее масло. Это было не только для достижения эстетической разницы между врагами. Также было важно с точки зрения игрового процесса знать, какая кровь какая, так как игроки могут получить пассивную способность, с помощью которой они могут «абсорбировать» оставшуюся кровь с разными эффектами: человеческая кровь нейтральна, инопланетная кровь наносит урон, а кровь роботов лечит.
Помимо декалей, также есть много частиц крови, используемых в I See Red. Подумайте о пассивной способности, о которой мы только что говорили: Нам нужен был способ сообщить игрокам об абсорбции. Результат, конечно, мини-кровяные торнадо.

Эти жуткие вихри были достигнуты с помощью как прокручиваемой текстуры, так и эффекта частиц. Эффект частиц - это 3D-моделированная лента (полоска полигонов) плюс шейдер, который прокручивает текстуру вверх, используя основной UV. Делая это, мы смогли использовать пользовательские данные из системы частиц, чтобы изменить скорость, поток и форму на сетке, а также добавить затухание для полос, чтобы эффект мог плавно появляться и исчезать вверху и внизу торнадо. Возьмите это, добавьте немного кровяных нитей для дополнительного сока, и у вас получится обратное кровяное торнадо, которое поглощает кровь в игрока.
Говоря о частицах, мы не можем забыть о эффектах частиц при попадании, когда игрок или враги получают урон. Эти частицы появляются в том же кадре, что и кровяная лужа/декаль, о которой мы говорили, обе анимируются для бесшовного перехода через корутину кода. Они появляются в направлении, в котором летела пуля, обычно противоположном игроку.
Делая это через код, оказалось очень полезным для персонализации эффекта, увеличивая его, если урон был больше, или если враг был ближе, или даже если эффект был близко к стене. Мы использовали трассировку лучей, чтобы определить, насколько длинной может быть декаль и частицы, прежде чем они пройдут сквозь стену, и каков должен быть наклон декали (если она должна быть на стене, например). Затем мы передали эти значения анимации, и произошло волшебство.

Это много крови. Много красного. Поскольку игра использует ограниченную палитру, нам нужно было убедиться, что читаемость не теряется ни в одном аспекте. Ограничения нашего фирменного стиля означали, что нам нужно было проявить креативность и использовать множество инструментов и приемов. Например, красные вещи не всегда красные.
Вы можете заметить дверь с красной рамкой и сиянием, но, как только вы пройдете через нее, она станет серой. То же самое происходит с врагами, которые красные, пока они враждебны, и серые, когда они... ну, больше не враждебны. С помощью этих сигналов игра использует свои отличительные цвета, чтобы сообщить, какие вещи представляют интерес: неизученные области, важные объекты, опасные препятствия и многое другое. В некотором смысле, это как если бы у игрока была "детективная видимость", постоянно включенная и постоянно обновляющаяся, чтобы показывать только то, что актуально в данный момент.
Но что если вы не видите красный цвет так, как мы? Что если кто-то, кто хочет сыграть в I See Red, не может различать красный и серый цвета? Мы определенно хотим, чтобы каждый мог испытать "Ярость", и именно поэтому I See Red доступна на 13 языках. Конечно, многие носители этих 13 языков могли бы воспользоваться функциями доступности. Представляем наш пользовательский режим цветовой слепоты URP.
Создавая I See Red, мы знали, что вселенная в черном, белом и красном может быть нечитабельной для всех, поэтому мы придумали решение для реализации различных режимов цветовой слепоты, чтобы каждый мог играть. Лучший способ сделать это - использовать функции Scriptable Render в Unity и простой шейдер. Основная идея заключается в том, чтобы преобразовать каждое значение в различных каналах, используя своего рода таблицу поиска внутри SRF, которая затем переводит эти значения в шейдер для финального прохода рендеринга. Поскольку эффект должен был выполняться как финальный проход над каждым другим объектом, который рендерился в мире, этот проход выполняется после рендеринга пользовательского интерфейса и является финальным проходом в каждом кадре в I See Red.
После изучения различных типов цветовой слепоты и того, как мы могли использовать Scriptable Render, чтобы удовлетворить их, понимая, как каждый человек может воспринимать цвета в I See Red, мы смогли создать различные режимы для уточнения или изменения цветов соответственно: Протанопия, Протанопия, Дютаранопия, Дютаранопия, Тританопия, Тританопия, Ахроматопия и Ахроматопсия. В зависимости от того, кого вы спрашиваете, красный цвет игры может выглядеть не так красно под этими условиями, но это нас устраивает: В конце концов, самое важное - это то, что каждый может наслаждаться игрой. Существует много других систем, чтобы сообщить всю ярость, которая вам понадобится.
Наконец, наша кровь красива и для всех... по крайней мере, пока им больше 14, 15, 16 или 17 лет, в зависимости от того, где вы живете. Но кровь определенно не все, что составляет эстетику I See Red. Не будем забывать, что красный бывает во многих вариантах, оттенках и формах, как и серый.
Нам нужно было придумать способ создания цветовой схемы, которая могла бы адаптироваться к новым моделям без переработки текстуры с нуля, что занимает много времени. На этом этапе мы должны признаться: I See Red на самом деле не черный, белый и красный, а на самом деле красный, зеленый и синий, как и большинство других игр. Мы солгали в начале (извините), но это все равно не совсем похоже на большинство других игр. Это потому, что мы использовали пользовательский шейдер, который применяет сплэтмап, который является текстурой, объединяющей несколько градаций серого или масок в одну, используя отдельный канал (красный, зеленый, синий или альфа) для каждой текстуры.

Это позволяет нам лучше контролировать цвета в игре, управляя значением каждого канала индивидуально внутри движка, и экономить ресурсы, загружая меньше текстур. Это также значительно помогает с временем итерации.

У нас есть кровь. У нас есть враги. У нас есть окружения. У нас есть нужные цвета. Это приятно. Далее мы могли бы поговорить о пользовательских туманах, освещении и математике камеры, тональном отображении или о той классной вещи с фальшивой перспективой в кат-сценах…
Да, можно было бы сказать гораздо больше, но мы могли бы здесь быть часами (и на это нужно время, чтобы написать), так что нам лучше завершить это. Больше никаких технических деталей. Просто идите и испытайте это: Играйте I See Red сами и сообщите нам, если заметите что-то, связанное с тем, о чем мы здесь говорили. Последнее, но не менее важное, не стесняйтесь обращаться к нам или к прекрасным людям из Unity, если хотите узнать больше.
Спасибо за чтение, до следующего раза!
Вы можете скачать I See Red в Steam сегодня. После игры откройте для себя больше историй от разработчиков Made with Unity.
