Официальный релиз игры Uncharted 4 уже состоялся, и теперь я могу рассказать вам, что именно я разработал для этого проекта.
В основном я был занят созданием ИИ для неигрового персонажа (NP) в одиночной игре и для ботов в многопользовательской игре, а также работал над некоторой игровой логикой.
Я не буду вдаваться в подробности, которые не вошли в окончательную версию, или второстепенные особенности, о которых можно было бы писать слишком долго.
Эта статья является частью серии публикаций под названием Моя карьера .
Система баллов
Сначала я хотел бы поговорить о системе баллов, используемой для навигации по НП.Я не разрабатывал основную логику, но помог написать клиентский код, использующий систему.
Точки — это своего рода позиции, разбросанные по всему доступному для движения пространству.
Как правило, они создаются и размещаются с помощью специальных инструментов, но в некоторых случаях дизайнеры добавляют их вручную.
Мы создали несколько различных селекторов, которые идентифицируют эти точки (например, селектор боевых точек или селектор точек восхождения) и оценивают их по-разному.
Точки с наибольшим количеством очков используются для указания NPC, как двигаться.
Система следования игроков
Система слежения за игроком была взята из The Last of Us. По его принципу НП выбирают определенную позицию из нескольких возможных за игроком, за которым следуют. Система учитывает только те позиции, которые проходят серию проверок на зазор вперед: прямо от игрока к позиции, от позиции к непосредственно проецируемой позиции и от непосредственно проецируемой позиции к игроку.
В The Last of Us нет возможности взбираться по вертикальным поверхностям.
Чтобы правильно реализовать это в Uncharted 4, мы добавили переключатель точки подъема.
Он выбирает точки восхождения, по которым NPC могут подняться, следуя за игроком.
Но все оказалось сложнее.
Вы не можете просто дать команду следовать за игроком во время его ходьбы и использовать точки лазания при подъеме на стену.
Если игрок быстро меняет плоскость движения с горизонтальной на вертикальную, НП начинают двигаться рывками, не имея возможности выбрать одно из двух состояний.
Поэтому мы добавили в логику поведения НП небольшой лаг, чтобы они меняли свое состояние только после того, как сам игрок меняет состояние и таким образом преодолевает определенное расстояние.
В целом техника задержки помогает справиться с рывками в поведении НП.
Система управления игроками
В некоторых эпизодах нам нужно было, чтобы игрок следовал за НП, а не наоборот. Для этого мы позаимствовали систему управления игроками из The Last of Us и немного ее изменили.Маршруты движения транспорта по НП обозначены сложными кривыми.
На уровнях с более чем одним маршрутом дизайнеры разместили несколько кривых, которые включаются и выключаются с помощью скрипта.
Положение игрока проецируется на кривую, а ведущий ориентир размещается впереди на заданном дизайнерами расстоянии.
Когда этот ориентир пройдет контрольную точку на кривой, отмеченную как точка ожидания, NP перейдет к следующей точке ожидания.
Если игрок пойдет в противоположном направлении, НП вернется за ним только тогда, когда ведущая точка ориентира окажется слишком далеко от самой дальней точки ожидания, преодоленной на последнем участке.
В этом случае мы также добавили лаг в логику поведения NP, чтобы избежать упомянутых рывков.
Мы также реализовали динамическую скорость движения.
Учитывая расстояние между НП и игроком, мы разбили кривые маршрута на скоростные отрезки.
НП могут передвигаться в трех скоростных режимах: ходьбе, легком беге и быстром беге.
В зависимости от того, на каком скоростном участке находится игрок, НП выбирает соответствующий режим движения, чтобы держать определенную дистанцию впереди.
Дизайнеры могут включать и отключать эти сегменты скорости по своему усмотрению.
Кроме того, скорость анимации движения НП может незначительно меняться в зависимости от расстояния до игрока.
Это необходимо для минимизации резких изменений скорости движения НП при смене режима движения.
Поведение в укрытии
Система поведения укрытий в The Last of Us имеет интересную особенность: игрок может беспрепятственно ходить возле НП, и при этом они оба останутся в укрытии.
Это удобно еще и тем, что позволяет Джоэлу прижиматься к стене, как бы прикрывая Элли и Тесс, которые намного меньше.
Но в Uncharted 4 это выглядело бы не так хорошо, потому что у Нейтана, Сэма, Салли и Елены схожие типы телосложения.
Кроме того, темп этой игры намного выше, и если бы Нейту пришлось точно так же прижиматься к стене, уходя в укрытие, это нарушило бы плавность его движений.
Поэтому мы сделали так, чтобы НП просто прижимались к стене, когда Нейт хочет пройти мимо:
Логика очень проста: если проецируемая позиция игрока, основанная на его скорости, укладывается в прямоугольную границу вокруг точки укрытия НП, персонаж меняет свое поведение и быстро прижимается к стене, как на картинке ниже.
В следующей части статьи мы поговорим об управлении транспортом, поведении НП во время диалогов и локализации игры на китайский язык.
Теги: #игры #Игровой дизайн #искусственный интеллект #ИИ #разработка #дизайн #Компьютерная анимация #CGI (графика)
-
Золото И Экономика
19 Oct, 24 -
8 Июля – День Семьи И Супружеской Верности!
19 Oct, 24 -
Идея Для Стартапа
19 Oct, 24 -
Антикварная Игрушка №07, 8-Битный Парцанц
19 Oct, 24