Важно: Расчеты, представленные ниже, сделаны на основе допущения, что скорость смены кадров равна 30 кадрам в секунду. Это среднее значение fps при игре в For Honor на всех платформах.
TIME SNAP
С самого начала в основу игрового процесса For Honor была положена система "Искусство войны". Поэтому для нас всегда было очень важно, чтобы анимация ударов и блокирования в разных стойках четко отображалась. С этим связаны некоторые трудности, с которыми мы столкнулись в ходе разработки. Вот один из примеров:
Video 1
На первом видео видно, что смена стойки позволяет успешно блокировать удар, при этом обороняющийся игрок нажимает кнопку в последний момент.
Video 2
Мы решили сравнить это с ситуацией, когда попытка блокирования не удалась, а обороняющийся игрок выполнил смену стойки на 33 мс позже. Но, как нам кажется, на втором видео разница в этих условиях не слишком заметна, и это может сбить с толку обороняющегося игрока. Мы решили, что для большей прозрачности разница между нажатиями кнопки при успешном и безуспешном блокированиях должна составлять не менее 100 мс.
Именно для этого мы создали систему Time Snap, благодаря которой все действия игрока, совершенные в течение 100 мс, считаются одновременными. Теперь, даже если первый игрок проведет атаку на 33 мс раньше, чем второй, будет считаться, что эти удары нанесены одновременно, и урон получат оба героя.
НЕДОСТАТКИ СИСТЕМЫ TIME SNAP
Самый существенный недостаток Time Snap заключается в том, что при работе этой системы может возникнуть задержка ввода, длительность которой составляет 0 мс, 33 мс или 66 мс в зависимости от того, когда зафиксировано время нажатия. В ходе работы над новой функцией разработчики посчитали, что этот нюанс не окажет серьезного влияния на игровой процесс, но вскоре оказалось, что это не так.
Пока шла работа над балансом и оптимизацией, был получен отклик от тестировщиков: изменения негативно сказались на том, как в игре регистрируется смена стойки. Было решено отменить эффект Time Snap для смены стойки, что частично решило проблему регистрации действий, однако серьезно ослабило положительный эффект от новой системы.
После официального выхода игры мы решили полностью отказаться от Time Snap, чтобы избежать несоответствия при регистрации действий. Эта система позволяла частично скомпенсировать возникающую задержку, хотя полный отказ от нее привел бы к другим существенным изменениям игрового процесса.
Сейчас мы рассмотрим конкретные примеры, чтобы продемонстрировать эффект от работы этой системы. Для простоты восприятия условимся, что задержка между действиями атакующего и обороняющегося составляет 100 мс
Во второй ситуации атакующий нажимает кнопку через 400 мс, то есть атака начинается сразу же. До обороняющегося сигнал доходит через 100 мс, то есть у атакующего появляется преимущество в 100 мс.
В третьей ситуации атакующий наносит удар через 366 мс, но атака все равно регистрируется через 400 мс. 33 мс можно считать компенсацией задержки сигнала. Атакующий получает преимущество только в 66 мс.
Наконец, в четвертой ситуации атакующий наносит удар спустя 333 мс, и атака регистрируется через 400 мс. Задержка составляет 66 мс, поэтому сигнал доходит до обороняющегося спустя всего лишь 33 мс.
Мы посчитали, что подобный способ скомпенсировать задержку сигнала привносит слишком большой элемент случайности, а потому его нельзя считать надежным. Так игрокам было бы гораздо сложнее адекватно реагировать на происходящее. При работе данной системы в каждом третьем случае компенсации задержки сигнала для атакующего не происходило, поэтому мы посчитали, что отказ от Time Snap существенно не затруднит способность игроков реагировать на происходящее. Но, ознакомившись с откликом сообщества, мы поняли, что системе Time Snap требовалось найти замену, ведь отказ от ее использования в некоторых ситуациях затруднил получение информации.
РЕАЛИЗАЦИЯ НА ДАННЫЙ МОМЕНТ
Предлагаемые меры представляют собой гибридный подход к проблеме задержки ввода: все действия, считающиеся агрессивными (список вы найдете ниже) будут отложены на 33 мс. Выбранное время не оказывает слишком большое влияние на "отзывчивость" игры, поскольку откладываются лишь агрессивные действия, выполнение которых требует довольно много времени. Как вы можете видеть на изображении 5, если игрок начинает атаку из состояния бездействия, то игровой клиент выполнит ее не сразу, а через 33 мс. Таким образом, скрытая от обороняющегося часть атаки будет уменьшена на значение задержки ввода (со 100 до 66 мс), что даст ему больше времени для ответной реакции.
Итак, что же считается агрессивным действием?
- Слабый удар всегда считается агрессивным действием
- Мощный удар считается агрессивным действием, кроме случаев применения для парирования, если оно не отложено
- Пробивание защиты считается агрессивным действием, кроме случаев применения в обороне для противодействия пробиванию защиты, если оно не отложено
- Смена стойки, выполненная во время слабого или мощного удара, откладывается до начала атаки
- Уворот и замена удара или финт, выполненные во время отложенного агрессивного действия, также считаются агрессивными действиями для предотвращения инвертирования ввода, которое может привести к проблемам отображения индикаторов
- Пробивание защиты, слабые и мощные удары также считаются агрессивными действиями, поскольку могут активировать атаки некоторых героев (например, "Штормовой вихрь" ороти)
ДАЛЬНЕЙШИЕ ШАГИ
По итогам внутреннего тестирования, а также тестирования с участием членов сообщества, мы решили, что эти меры помогут улучшить отзывчивость игры во время боев. При этом будут затронуты некоторые действия, к примеру, серии атак, переходы между ударами и их замена на другие: вам придется начинать на 33 мс раньше. В настоящее время мы исследуем и другие пути борьбы с задержками в сетевой игре, но сейчас мы решили внедрить в игру первые изменения, чтобы как можно быстрее улучшить игровой процесс. Как и всегда, мы будем держать вас в курсе всех изменений по данному вопросу.