Пытаюсь в мультиплеерные веб игры и рассказываю об этом.
Для поверхностного понимания действительно можно просто примерно понимать что есть сервер и клиент и есть пинг и вот там с задержкой данные как то бегают. Но для разработки, мне нужно с абсолютной уверенностью понимать каждое перемещение данных от клиента к серверу и что в какой момент времени с ними делать.
Приведу пример. Вот игрок нажал кнопку W и пошел вперед. Клиент отправил на сервер инфу что мой игрок двигается. Сервер рассчитал новое положение и отправил мне эту инфу обратно. Я сверяюсь со своим передвижением, которое клиент сделал на упреждение для бесшовности перемещения. И если данные расходятся то корректирую персонажа. Но стоп. Я щас, скажем, на тике 623, а сервер же присылает инфу с задержкой. И он говорит что положение другое. Мне просто применить эту корректировку и отменить последние перемещения? Или как то по другому? И вот я начинаю понимать что надо присылать тики, скажем за последнюю секунду. И сервер присылает тики с 615 по 622. я сверяю со своей локальной историей положений в эти тики и вижу что на тике 620 было расхождение. И я от тика 620 начинаю пересчет положения и таким образом не отменяю своих перемещений а немного их корректирую.
Для меня это была неочевидная концепция и я рад что для других ребят это прям все просто и очевидно :)
фронтендер - это как приговор об инвалидности в моем случае :) приходится читать чтобы стать человеком :)
Пока мне интересен сам путь. Потом после некоторых попыток сделать что то свое, я может действительно возьму готовую либу или вообще перейду на годот.
Возможно умозаключение не совсем корректно, но кто из нас не ошибался в процессе понимания каких либо концепций :) Бросать дело из за некоторых ошибочных допущений довольно странно :) Лучше их исправить. Как будет уже конкретная практика с моей стороны, смогу подтвердить или опровергнуть данное умозаключение.
Возможно после пары лет попыток самому сделать мультиплеер, я действительно все пошлю куда подальше и сделаю все на Годот :)) Но сейчас мне важен скорее сам путь, нежели результат :)
Про компенсацию задержек и предсказание и про постоянное отматывание времени и сверку положений и попаданий игроков я уже тоже читал, но пока не совсем это осознал без практики и поэтому не стал писать, чтобы не перегружать статью.
Супер! Спасибо большое, послушаю!
Да, это интересная аналогия :)
Спасибо большое! По Apex почитал уже. Там есть пара интересных упоминаний про компенсацию задержек и предсказание. Буду разбираться подробнее как это работает)
о спасибо, почитаю обязательно!
Хватит меня пугать :) Я уже и так думаю бросить программирование! Пойду в сварщики.