Перейти к содержанию
Авторизация  
Akumu

Компенсация Лагов

Рекомендуемые сообщения

А знали ли вы.. что в клиент л2 встроена система компенсации лагов со стороны сервера? :)

Дисклеймер: Данная тема не несёт никаких технических деталей процесса, и если вы ожидали инструкцию по её реализации - вы здесь её не найдете.

 

Допустим представьте всем известный CS, и представьте, каким же образом сервер отрабатывает попадания пуль игроков при учете разного пинга?

Ну представьте ситуацию: два игрока на линии с ощутимыми/средними пингами. Первый игрок начинает идти прямо, а второй готовится выстрелить ему в бок. Таким образом, игрок В увидит что игрок А начал движение через "(пинг игрока А) + (пинг игрока В)" миллисекунд. Здесь мы получаем небольшую проблему: Игрок В стреляет в то место, где игрок А был (пинг игрока В) миллисекунд назад, и как бы точно он не стрелял, он не попадет, ибо игрока по серверу там больше нет.

 

Как же тогда сервер определяет все эти вещи верно? Вот для этого и разработана был пресловутая система компенсации лагов, принцип которой сводится к "отматыванию" времени сервера на (пинг игрока В) миллисекунд и сравнивая расположение игрока А в то время когда выстрелил игрок В.

 

И мало кто знает что подобная система имеется в клиенте с незапамятных времен (на С3 точно была, ниже не смотрел). Реализация есть в Л2ОФФ и ещё паре частных проектов.

 

Простите за столь много воды, надеюсь вы её осилили и вам было так же интересно как и мне :)

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо тут ещё нет людей интересующихся подобными вопросами, прискорбно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно,ток непонимаю смысла делать это в ла2,там же нет нон таргет системы:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В л2 это есть и используется, но в синхронизации движений персонажа. Всем надоели провалы под землю, не так ли? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Not Bad. Демон пропьется, и поковыряем эту тему :D

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Not Bad. Демон пропьется, и поковыряем эту тему :D

 

Я вот только расковырял :D Теперь у меня полная синхронизация движений как на л2офф

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дапм с Т0:

 

C-> A8=NetPing:d(kID)d(PING)d(dta)
S-> D3=NetPing:d(kID)

инициатор S

 

От плюсов не откажусь :D

Изменено пользователем Akumu
  • Upvote 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пингер видел у многих, но он только кикал если ответ не приходил и пинг не использовался. что хранит dta?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу конечно ошибаться.

Сильно какашками не кидайтесь. :)

На Оверх пакет ExShowTrace?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу конечно ошибаться.

Сильно какашками не кидайтесь. :)

На Оверх пакет ExShowTrace?

 

Нет. Оно ни в одной сборке (из тех что в паблике) не реализовано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проверять на максимальное отклонение относительно нетпинг и если больше посылать валид.лок? заметил что если ничего не делать пинг = 1, значит не всегда нужно учитывать его)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если ничего не делать пинг = 1

 

Это не пинг вам приходит, а дельта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще многие java сервера ведут себя не совсем корректно. Отправляют многие информационные пакеты когда им вздумается, а пакеты клиента с запросом этой информации игнорируют. К примеру ни в фрозене, ни в линках пакет RequestSkillCoolTime не реализован. Не говоря уже о подобной системе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще многие java сервера ведут себя не совсем корректно. Отправляют многие информационные пакеты когда им вздумается, а пакеты клиента с запросом этой информации игнорируют. К примеру ни в фрозене, ни в линках пакет RequestSkillCoolTime не реализован. Не говоря уже о подобной системе.

 

И такого больше, чем вы можете себе представить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С какой переодичностью сервер посылает пакет NetPing? Intrelude 30 секунд или 60?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сервером шлем в пакете System.currentTimeMillis.

Клиент нам отвечает своим System.currentTimeMillis.

Делаем разницу и дальше что с ней, а так же что делать с третьим параметром пакета?

У меня стабильно шлет третий параметр пакета 6144.

Изменено пользователем xINVIZIBLx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реверсим тот же GF сервер и получаем нужные данные. В этом топике лишь теория, рабочий код вам никто не даст :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...