Трюки в игровой механике, чтобы избежать борьбы с задержкой в ​​сети?

20

Внедрить компенсацию задержки сети сложно, как этого избежать?

Может быть, можно использовать трюки и создавать игровую механику таким образом, чтобы лаги воспринимались как некритические или даже как естественные части игры?

Что это за техника и существуют ли какие-либо игры (MMORPG, Strategies, ...), которые используют такую ​​технику?

ОБНОВИТЬ:

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

Основная причина, по которой я избегаю компенсации отставания, - это простота.

Алексей Петрушин
источник
1
Эта ссылка может помочь: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
Джон Макдональд,
6
Если вы хотите создать игру, в которой задержка не является проблемой; подумайте о том, чтобы построить что-то пошаговое, где приемлемо несколько секунд.
Вон Хилтс
3
Эта ссылка на Valve связана с довольно сложными способами, с помощью которых реализуется компенсация задержки сети - так что это противоположно тому, о чем вопрос задается.
Kylotan
@JohnMcDonald Да, я знаю об этой статье от Valve, и, как уже упоминалось, это противоположно тому, что я спрашиваю :).
Алексей Петрушин
Возможно, вы захотите взглянуть и на GGPO
Порядочность

Ответы:

16

Обычно клиент реализует своего рода обратную связь, чтобы игрок сразу знал, что выбранное действие было зарегистрировано, например:

  • звук интерфейса (например, нажатие кнопки)
  • звук в мире (например, персонаж, говорящий: «Сразу же, командир»)
  • анимация (например, начать размахивать мечом)

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

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

  • заменить механику рулевого управления на механику движения
  • заменить механику прицеливания на механику выбора цели
  • заменить боевые инструкции за раундом на более тактические или стратегические планы
  • заменить непрерывный игровой процесс в реальном времени дискретными / пошаговыми системами
Kylotan
источник
1
Спасибо, Вы формализуете то, о чем меня спрашивают - используйте нечастые, отложенные данные от игрока. Было бы интересно увидеть реальные игры, которые используют это.
Алексей Петрушин
2
Сотни игр используют подобные вещи в некотором роде, но, скорее всего, это было сделано по другим причинам с сокрытием отставания в пользу полезного побочного эффекта.
Kylotan
7

Случайные мысли:

  1. Чит: использовать ракеты . Ракеты взрываются в радиусе, скрывая любые странности.
  2. чит: предопределите результат и заставьте условие визуально возникнуть
  3. чит: атаки требуют времени , скрывают латентность в атк + аним + разрыв в результате
  4. чит: отключить местную обратную связь от сетевого материала
  5. чит: много VFX или экранной активности, которая покрывает любые странности.
  6. использовать дизайн действия-реакции, который требует разрешения, прежде чем продолжить

Так что да, много обманывают.

Патрик Хьюз
источник
4

Ответ довольно прост - просто создавайте игры, в которых нет критических по времени разделов. Вы пытаетесь избежать реализации этих типов интерполяции по определенной причине, я так понимаю, это означает, что вы не беспокоитесь о хитром и быстром игровом процессе. Это вполне приемлемо для многих игр, включая Civilization (стратегическая игра). Тем не менее, понимают , что это не приемлемо для РЕАЛЬНОГО ВРЕМЕНИ стратегии игры , где вам нужно проездом много данных по сети с переменной тайминги. Если вы хотите создать игру в сети с очень высокой задержкой, учтите следующее:

  1. Сборка пошаговых игр. В играх такого типа ввод состояния в режиме реального времени не требуется, и другой игрок может просто передать состояние игры своему клиенту, когда наступает его очередь. Это снижает нагрузку на сеть и допускает задержки даже на несколько секунд, если того пожелают. Цивилизация - это пошаговая игра, которая очень популярна и в стратегическом русле.
  2. Держите решения других игроков влиять на минимум.Если ваша игра является стратегической и не может играть пошагово, рассмотрите возможность уменьшения воздействия задержанных пакетов. Может ли клиент выполнять большую часть симуляции? Примером является стратегическая игра, в которую некоторое время играют в одиночку, а затем, скажем, через 16 минут, симулируют против другого игрока (возможно, это боевая игра, в которой игроки посылают войска каждые x интервалов и отчитываются через каждые y интервалов.

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

Вон Хилтс
источник
4

Вы также можете сделать лаги частью своего игрового процесса ради "реализма". Скажем, ваши игроки должны контролировать некоторых роботов на расстоянии, вы можете сделать так, чтобы задержка составляла не менее 500 мс или 1 с (вам нужно было бы реализовать некоторую динамическую систему заполнения лагов).

Арх
источник
Это хороший поворот
o0 '.
0

Это также хороший трюк, чтобы просто скрыть действия игроков. Многие игры FPS делают именно это. Они не показывают никаких визуальных эффектов большинства пуль, только звуки воспроизводятся, и вы получаете результат в виде урона, нанесенного игрокам.

Я играл в некоторые игры FPS, в которых высокоточное оружие (снайперы и т. Д.) Имело очень четкие визуальные эффекты, и вы могли фактически видеть, что другой игрок стрелял позади вас, но из-за компенсации задержки вы были убиты.

VSZM
источник