Начинающий
- Статус
- Оффлайн
- Регистрация
- 8 Мар 2024
- Сообщения
- 910
- Реакции
- 3
Deepseek solutionБро, ты пытаешься считать ротации 60 раз в секунду, когда сервер принимает раз в тик
Давай разберемся с этим моментом максимально подробно, так как здесь часто путают две разные вещи: скорость отправки данных клиентом и частоту обработки входящих пакетов сервером.
Короткий ответ
Ты прав в том, что твой клиент (FPS) может отправлять данные (в том числе поворот головы) хоть 60, хоть 144, хоть 1000 раз в секунду (во время каждого отрисованного кадра). Но сервер по умолчанию не успевает (и не хочет) обрабатывать их так часто.
«Еблан» имел в виду ограничение со стороны сервера, и он (возможно, грубо, но по сути) прав насчет цифры «20».
Почему так? Разбор полетов (Tech Side)
1. Как клиент шлет данные (то, что делаешь ты)
Когда ты двигаешь мышкой в Майнкрафте, твой клиент (игровая программа) пытается отправить информацию о новом положении головы (Yaw/Pitch) на сервер.
· В ванильном Майнкрафте это происходит в методе sendMovement().
· Частота отправки жестко не ограничена по времени, а привязана к отрисовке кадров (FPS). Если у тебя 60 FPS — ты шлешь 60 пакетов в секунду. Если 144 — шлешь 144. Твой клиент кричит серверу: «Я смотрю сюда!», — 144 раза в секунду.
2. Как сервер принимает данные (то, что имел в виду собеседник)
Сервер — это программа, работающая в цикле (тики). Один тик сервера длится ровно 50 мс (миллисекунд) в идеальных условиях (20 тиков в секунду).
· В течение одного тика (этих 50 мс) сервер получает от тебя кучу пакетов движения (например, все 60 или 144, которые ты наслал).
· НО! Сервер не обрабатывает каждый пакет отдельно. В момент обработки тика (Tick) он смотрит: «Какое последнее известное положение игрока?». Он берет только последний пакет движения, полученный за этот тик, и применяет его. Остальные 59 или 143 пакета просто игнорируются (выкидываются в мусор), так как они устарели еще до того, как сервер до них дошел.
Аналогия
Представь, что твой компьютер — это сумасшедший фотограф, который делает 60 кадров в секунду.
Сервер — это медлительный художник, который рисует портрет по этим фотографиям.
· Фотограф (клиент) кричит: «Вот новая фотка!», «А вот еще новее!», «А теперь вот так!» — 60 раз в секунду.
· Художник (сервер) работает медленно. Он слышит все крики, но берет в руки карандаш только 20 раз в секунду. И когда он берет карандаш (начинается тик), он берет последнюю фотку из тех, что накопились в стопке, и рисует по ней. Остальные он выкидывает в корзину, даже не глядя.
Итог
· Твоя правота: Ты действительно отправляешь данные 60 раз в тик (при 60 FPS).
· Его правота: Сервер применяет (делает ротацию видимой для других и для физики) только 20 раз в секунду (при стандартном TPS = 20).
Спорить тут бесполезно, это архитектура многопользовательской игры. Чтобы поворот был максимально плавным для других игроков, используется интерполяция (сглаживание) на стороне их клиентов, но это уже другая история.
Вывод: Вы оба правы, просто говорите о разных этапах одного конвейера: ты — о входном потоке, он — о выходном результате обработки.
Иди пиши свой недо ач , а я под него обходы))Это технологии ты не понимаешь