Сокеты на примере игр
Вы задумывались, что когда вы играете в Доту, Кс или Apex, то вы видите у себя на компьютере то же, что и другие игроки в режиме реального времени? Расположение на карте, когда кто-то стреляет или использует способности - все эти данные синхронизированы между всеми игроками одновременно.
Как это работает?
Всю информацию об игре знает сервер, это центральное хранилище текущего состояния игры. С ним связаны все компьютеры игроков и он передает и получают обновление об этом состоянии по сокетам. Что же такое сокеты? Давайте по порядку.
Есть два основных взаимодействия сервера с компьютером игрока - или же клиента:
Первое - “запрос-ответ” (request-response), то что используется на всех сайтах, клиент сам спрашивает сервер о наличии новых данных, дешевое взаимодействие по мощности, но медленное по синхронизации, поэтому часто используется большими сайтами и практически никогда играми, представьте что пинга в кске всегда бы была не менее 300мс, не удобно, правда?
И второе - сокетное (socket) взаимодействие, его ключевое отличие от первого в том, что не клиент спрашивает есть ли обновления у сервера, а сервер сам напрямую сразу шлет все обновления на клиент, из минусов- это взаимодействие требует много ресурсов, и например поддержать даже 100 клиентов таким образом крайне сложная задача, поэтому во всех играх, где критично важна минимальная задержка - вы не встретите количество игроков на одном сервере больше 100, как например PUBG/APEX/FORTNITE и другие.
это взаимодействие требует много ресурсов, и например поддержать даже 100 клиентов таким образом крайне сложная задача, поэтому во всех играх, где критично важна минимальная задержка - вы не встретите количество игроков на одном сервере больше 100
Майнкрафт вышел из чата.
Статья ни о чём. Я думал, что-то интересное, но тут вообще ничего, кроме рекламы.
На майнкрафте как раз не большой тпс на сервере и не критична важна синхронизация, тк то же копание блока занимает около секунды в серверу нужно обработать все два события, начало копания блока и окончание, когда в той же кс или же доте за 1 секунду может улететь до 10-20 событий, стрейфанулся, присел, получил выстрел, сам стреляешь очередью и тд