Приветствую охотник за знаниями.
Сегодня хочу тебе рассказать что такое пинг, лаг и как устроена сетевая часть онлайн игр.
Для начала - онлайн игры сейчас все больше набирают популярность, еще 10 лет назад не было такого огромного разнообразия. Но, к сожалению, разработчики все еще халтурят при разработке и это выливается в неприятные проблемы.
Как устроена сетевая часть любой игры.
Я думаю любой знает что у онлайн игры есть сервера. Твой игровой клиент посылает серверу кучу "пакетов" с данными о твоих действиях и при этом еще больше получает от сервера.
Сам же сервер занят обработкой пакетов и различных расчетов.
Да. да, именно сервер рассчитывает попал ли ты в противника или нет. На самом деле это очень кропотливая работа, так как пакеты надо синхронизировать со всех клиентов и правильно все высчитать.
Тут - то и подключается наш любимый пинг.
Пинг это время за которое пакеты долетают от клиента до сервера и обратно. Из-за пинга происходят различные рассинхроны, т.к. ты попадаешь в голову, а сервер думает что пуля пролетела мимо, т.к. в этот момент (в долю секунды) цель была на другом месте.
Собственно лаги происходят тоже из-за этого.
Долго приходит ответ от сервера - все висит/бегут на месте.
Как разработчики борются со всем этим?
На самом деле правильного подхода к решению этих проблем нет.
Каждый разработчик решает по - разному. Кто-то пытается синхронизировать пакеты с учетом задержки, кто-то тщательно подходит к инфраструктуре, чтобы пакетов летало между клиентом и сервером не очень много.
В общем идеального рецепта в данном случае нету.