Хочу в геймдев! Основы игровой разработки для начинающих - Вячеслав Николаевич Уточкин
Шрифт:
Интервал:
Важно помнить, что создаваемые эффекты предстоит совместить со звучанием, и это не самая тривиальная задача – хотя бы потому, что звук имеет источник, громкость и другие свойства. Чаще всего студии берут звуки из готовых библиотек, где можно найти что угодно: от предсмертных криков до взрывов. Если есть необходимость, можно делать самостоятельные записи.
ОСОБЕННОСТИ РАЗРАБОТКИ МОДЕЛЕЙ ДЛЯ ИГР
Итак, мы создали вертолет, анимировали его, добавили текстуры, обозначили локаторы, где что взаимодействует, «прикрутили» все эффекты и добавили озвучку. Но игровая модель динамична, она взаимодействует с окружением и другими моделями, поэтому так важно заранее продумать все эти взаимосвязи, чтобы грамотно поставить задачу.
Следующий вопрос – ФИЗИКА ВЗАИМОДЕЙСТВИЯ объектов игрового мира. Допустим, мы обозначили, что в наш вертолет нужно попасть ракетой, чтобы его сбить. Так как мы сделали качественный, фотореалистичный, многополигональный вертолет, расчет столкновения с ним ракеты будет занимать слишком много вычислительных мощностей.
Здесь нужно упомянуть о коллизии. Термин «коллизия» уже по своему названию дает общее представление о том, что это такое. Английское слово collision переводится как «столкновение» и в целом достаточно точно описывает суть дела.
Все мы знаем, что в физике столкновение – это некий процесс, при котором происходит взаимодействие частиц или объектов. И если в реальности оно может быть обусловлено, например, действием электромагнитных сил электронов, то в играх это, очевидно, симуляция реального процесса. Как и любая симуляция, она может иметь разную точность и степень приближения к оригиналу.
У большинства может возникнуть впечатление, что коллизии – нечто, присущее в первую очередь трехмерным играм. Но все то же самое актуально и в 2D. Давайте посмотрим на примерах.
Допустим, вы играете в свой любимый Overwatch или PUBG. В этом случае вы управляете поведением некоего объекта, который визуализируется трехмерной моделью. Если это человек, то расчет движения его конечностей с учетом всех суставов и мышц представляет собой непростую задачу, так же как и пересечение его частей с другими моделями на экране. Загружать процессор просчетом таких коллизий было бы нерационально. В этой ситуации модель персонажа в расчетах упрощают до некой зоны пространства – цилиндра, шара или эллипсоида. И во время игры считывается лишь приближение друг к другу цилиндров с заданным радиусом и известными координатами оси симметрии, находящейся в центре цилиндра. Такая геометрия выглядит гораздо проще.
Когда же дело касается 2D, все в целом имеет схожую логику. Иной может быть лишь реализация. Сравнение зоны вокруг объектов в тех же платформерах может сводиться к сравнению пересечения прямоугольника с окружающей локацией. Это как зона кликабельности вокруг кнопки: мы ее не видим, но она есть. Такую зону иногда называют коллайдером. С физическими ускорителями у них общее только одно: и там, и там происходят столкновения.
Другой пример – это коллизии элементарных частиц, математических точек. Такое можно представить себе, посмотрев на шарики, которые летят в популярных бабл-брейкерах, арканоиды или расчеты попадания патрона в противника.
Для регистрации таких попаданий в игровую сущность добавляют так называемые ХИТБОКСЫ. В большинстве игр это просто невидимая коробка, грубо покрывающая модель снаружи и регистрирующая столкновение с другими игровыми сущностями. Это важно, потому что, например, стрелять, учитывая реальную геометрию, очень затратно.
Классическое дизайнерское решение: есть мускулистый воин и миниатюрная эльфийка. Очевидно, что попасть выстрелом в более крупный объект легче. В старых играх можно найти примеры, когда из-за разницы в хитбоксах имело смысл всегда играть за самого маленького персонажа. Если персонажи больше ничем не отличаются, чтобы эльфийка не имела геймплейных преимуществ, часто им делают одинаковые хитбоксы. Например, в шутере Apex Legends персонажи имеют разный размер хитбокса, поэтому те, у кого он меньше, получают повышенный урон; так компенсируется сложность попадания. Для генерации хитбоксов обычно используют готовые решения в 3D-редакторах.
Рис. 26. Визуальный пример хитбоксов
Следующая непростая задача – реализация удара по объекту. Вы наверняка замечали, что во многих MMO, когда персонаж бьет мечом по своему сопернику, он даже не попадает по модели: просто машет оружием, а с противника списывается XP. Дело в том, что адекватно показать удар холодного оружия по телу непросто. В жизни довольно странно представить себе ситуацию, что ты про-ткнул кого-то мечом, а он остался стоять, как стоял. Поэтому многие дизайнеры скрывают такое соприкосновение за столпом искр, чтобы не было заметно, что оружие не касается персонажа. Для огнестрельного оружия такой ширмой часто служит эффект разлетающихся брызг крови.
RAGDOLL – процедурный вид анимации в рамках физики, заданной в игровом движке, или же законов эволюции, которые написал программист, – при этом художник не задает параметров движения. Персонаж ведет себя как тряпичная кукла, которую уронили (отсюда и название). Теперь каждая кость и сустав отдельно подчиняются только физике. Представьте себе, что в персонажа выстрелили из оружия или он подорвался на мине. Пока у него есть XP и он жив, заданная анимация определяет, что будет происходить с его телом в этот момент. После смерти же он превращается просто в еще один физический объект, который может красиво отлететь в сторону или эпично врезаться в стену.
Рис. 27. Ragdoll
Есть программы для анимации одежды, волос, пролитой жидкости, ведь сделать ее для всех вариантов движения невозможно. Например, плащ не может просто висеть, его движение как минимум напрямую зависит от движений персонажа. Но даже такие готовые решения необходимо соединять со своими моделями, что уже требует определенной квалификации. Поэтому начинающие разработчики нередко предпочитают делать, например, пиксельную графику, чтобы не связываться со сложностями физики взаимодействия, рэгдоллами и прочими сложными сущностями. Тем не менее опытный художник в состоянии справиться со всеми этими задачами даже в одиночку.
ПОСТПРОЦЕСС, ИЛИ ПОСТОБРАБОТКА, – это метод обработки изображения, когда на уже готовую картинку с моделями накладывают определенные эффекты. Их очень много, и применяют их для разных целей: например, мы хотим, чтобы готовые модели были стилизованы под рисунок от руки; если игрок едет на танке, можно создать ощущение, что он смотрит сквозь танковую оптику – с потертостями, определенным искажением картинки и так далее. Если игрока пугает монстр и экран в это время дрожит, это тоже постобработка, добавленная для атмосферы страха и напряжения. Или при тяжелом ранении экран игрока окрашивается красным, символизируя, что персонаж на грани смерти. Обычно наложение таких эффектов – задача
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!