Дизайн камеры от третьего лица с зоной свободного движения

Разработка игр | |

Введение

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

Для игр с упором на стрельбу такая камера вряд ли будет самой удачной, она скорее подойдёт для платформеров и игр про исследование мира.

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

Отдавая должное, нужно отметить, что данный дизайн частично основан на нескольких существующих системах из игр серии Assassin’s Creed, Lego City Undercover и серии Infamous.

Базовые установки

Базовые установки – это положение камеры «по умолчанию», когда игрок не управляет камерой и она работает в «стандартном» режиме следования.

Параметры:

  • Высота от земли (единицы)
  • Расстояние до персонажа (единицы)
  • Вертикальный наклон (единицы)
  • Горизонтальный угол обзора (градусы)
  • Горизонтальное смещение (единицы)

camera3rd basicSetup

Под единицами понимаются единицы расстояния, используемые в проекте (чаще всего метры).

Зона свободного движения

Это зона, в которой игрок может двигаться без какой-либо реакции камеры. Таким образом, игрок чувствует себя свободнее и картинка становится более «кинематографичной».

В данном случае она представлена в виде цилиндра.

Этот цилиндр – нечто вроде «ребёнка» камеры, «пристёгнутого» к ней (то есть, всегда расположенного по центру экрана), только он постоянно остаётся вертикальным по отношению к игровому миру (иными словами, камера вращается по вертикали вокруг точки, расположенной в центре цилиндра).

Параметры:

  • Высота от земли (единицы)
  • Расстояние до персонажа (единицы)
  • Вертикальный наклон (единицы)

camera3rd freeMoveCylinder

Управление свободной камерой

С помощью мыши или стика на геймпаде игрок может вращать камеру в двух плоскостях вокруг персонажа, всегда глядя на него.

Для этого движения камеры используются особые значения ускорения/максимальной скорости.

Движение камеры по вертикали ограничено определённым углом.

Параметры:

  • Радиус свободного движения (единицы)
  • Предел свободного движения вверх (градусы)
  • Предел свободного движения вниз (градусы)

camera3rd freeCam

Следование

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

На выбор новой позиции влияют дополнительные правила/ограничения в зависимости от направления следования (вертикального/горизонтального) и использования игроком свободной камеры.

Параметры:

  • Инерция плавности следования (коэффициент)
  • Горизонтальный угол возврата в стандартный режим (градусы)
  • Максимальный угол вертикального наклона (градусы)

Да, первый параметр не совсем понятный. Причина в том, что вычисления, стоящие за поведением следования всегда довольно сложны, если вы хотите добиться ощущения плавности/упругости (что настоятельно рекомендуется для современных игр). Итак, я считаю, что дизайнеру лучше всего настраивать это с помощью одного единственного значения «инерции»: при низких значениях камера реагирует резко, при высоких плавно.

Горизонтальное следование

Стандартный режим

В стандартном режиме для сохранения персонажа в пределах цилиндра камера только смещается вперёд/назад и вращается по горизонтали.

camera3rd horizontalFollow

Свободный режим

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

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

camera3rd freeCamMode

Вертикальное следование

Стандартный режим

При вертикальном следовании камера работает как прицеп.
Под этим понимается вертикальное вращение вокруг точки в центре цилиндра и смещение вверх-вниз.

У вращения имеется предельный угол, достигнув которого, камера использует только смещение.

camera3rd verticalFollow

Когда персонаж снова оказывается на земле, камера принимает положение согласно базовым установкам (если не находится в свободном режиме).

Свободный режим

Если игрок дотрагивается до правого стика в воздухе, камера переходит в свободный режим:

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

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

Скорость и отдалённость камеры

Параметры:

  • Минимальная скорость для начала увеличения дистанции (единицы в секунду)
  • Максимальная скорость для прекращения увеличения дистанции (единицы в секунду)
  • Максимальное расстояние от персонажа (единицы)

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

Преграды/столкновения

Параметр:

  • Минимальное расстояние от зоны свободного движения (единицы)

Граница камеры (сфера вокруг неё) не может сталкиваться с цилиндром или двигаться вплотную к нему. Это правило приоритетнее всех остальных.

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

Если персонаж расположен за препятствием, камера проверяет его видимость, предпринимая действия в следующем порядке:

  • Вращение в «сфере свободной камеры» с приоритетом горизонтального вращения.
  • Приближение с учётом минимальной дистанции.
  • Приближение с учётом минимальной дистанции и вращение.
  • Приближение без учёта минимальной дистанции (должно применяться в качестве крайней меры и в очень редких случаях).
Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить