Протокол lockstep - это частичное решение проблемы упреждающего обмана в многопользовательских играх с одноранговой архитектурой , в которых обманывающий клиент откладывает свои собственные действия, ожидая сообщений от других игроков. [1] Клиент может сделать это, действуя так, как будто он страдает от большой задержки ; исходящий пакет подделывается путем прикрепления отметки времени, предшествующей фактическому моменту отправки пакета.
Чтобы избежать этого метода обмана, протокол lockstep требует, чтобы каждый игрок сначала объявил «обязательство» (например, хеш- значение действия); это обязательство представляет собой действие, которое:
- Не может использоваться для вывода о действии; а также
- Легко сравнивает, соответствует ли действие обязательству.
После того, как все игроки получили обязательства, они раскрывают свои действия, которые сравниваются с соответствующими обязательствами, чтобы убедиться, что обязательство действительно является отправленным действием. [2]
Недостатки
Поскольку все игроки должны дождаться получения всех обязательств, прежде чем отправлять свои действия, игра продвигается так же медленно, как и игрок с наибольшей задержкой. Хотя это может быть незаметно в пошаговой игре , онлайн-игры в реальном времени, такие как шутеры от первого лица , требуют гораздо более быстрой реакции.
Это можно получить, установив ограничение на время, в течение которого игрок может объявить свое действие. Если в течение этого периода не было отправлено никаких действий, другие игроки не объявляют о своих действиях этому игроку и игнорируют любые действия, которые происходят слишком поздно.
Асинхронный протокол блокировки
Чтобы преодолеть очевидный недостаток простого протокола блокировки, существует асинхронный вариант протокола, в котором игроки продвигаются во времени без каких-либо переговоров с другими игроками до тех пор, пока не произойдет взаимодействие между игроками, известный как «режим блокировки». Этот режим может быть определен определенной областью вокруг игрока, например сферой, в которой игрок может влиять на игровой мир.
Такое взаимодействие может происходить только тогда, когда, например, области влияния, окружающие двух игроков, пересекаются.
Внешние ссылки
- Лучники на 28.8 , исчерпывающая статья Марка Террано и Пола Беттнера , которые разработали протокол блокировки шага для Age of Empires .
Рекомендации
- ^ Алгоритмы и сети для компьютерных игр , Йоуни Смед и Харри Хаконен
- ^ «Чит-Proof Playout для централизованных и распределенных онлайн - игры» , Боман и Levine, 2001