Получен неверный пакет перемещения игрока майнкрафт

Обновлено: 01.07.2024

При написании сервера возникла одна сложность. Есть большая локация, около километра по обоим размерностям. По ней перемещаются игроки. Понятно, что показывать ВСЕХ игроков на локации мало того, что нет смысла, но и связано с нагрузкой. Принято решение отображать игроков только в радиусе 100 метров от игрока. Вот в связи с этим и вопрос - как максимально быстро определить, что другой игрок появился в зоне видимости текущего игрока и вышел из зоны видимости, что бы передать текущему игроку пакет с новыми данными. Как вообще подобные вещи делаются? Я делаю так - игрок кликнул на карту, персонаж начал движение, в это же время всем в зоне видимости рассылается команда - ид игрока, начальные координаты, куда кликнул, скорость перемещения. И у всех этот персонаж начинает движение. Ну и так по всем дествиям.

карта локации делится на прямоугольные ячейки.
когда игрок бежит, он записывает себя в ту ячейку, где он в данный момент.
Также игрок имеет прямоугольную зону видимости, проверяется - какие ячейки попали в прямоугольник видимости.
если размер ячейки больше размера зоны, то попадет максимум 4 ячейки.

Подбирая размер ячейки, можно отсылать всех игроков в ячейках, попавших в зону видимости, если размер ячейки близок к зоне видимости. Либо, если размер ячейки велик, так что игроков там будет много, проверять игроков из этих попывших ячеек на попадание в зону видимости.

везде прямоугольники, т.к. - они способны без пробелов покрыть территорию и проверка пересечения между прямоугольниками - 4 if'а, попадание точки в прямоугольник тоже 4 if'a

Я бы сделал так:
1. На сервере считаем игровой мир
2. Объект попал в зону видимости игрока:
2.1. Отсылаем игроку _полное_ состояния объекта. Добавляем объект в список видимых объектов игрока (Дабы в дальнейшем слать только частичные пакеты).
2.2. Отсылаем игроку _частичные_ данные о каждом объекте в зоне видимости.
3. Если Объект вышел из зоны видимости игрока шлём оному мол ОбъектВышелИзЗоны видимости. Клиент в таком случае может убить или спрятать объект.
3.1. Удаляем объект из списка видимых объектов игрока.

Это вариант для бесшовного мира. Можно делить мир на зоны как предложил Серый крокодильчик

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Необходимо обновить браузер или попробовать использовать другой.

Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.


Minecraft

Какое решение этой ошибки?

Давайте начнем решать эту проблему с некоторых основных решений, которые работают практически при любой ошибке.

Не пропускайте их, если вы еще не пробовали их, потому что это самые простые решения, которые занимают минимум времени!

  1. Включите и снова включите роутер, отключив его на минуту, а затем снова подключив, чтобы начать играть.
  2. Перезагрузите компьютер.
  3. Перезапустите Майнкрафт.

Это основные шаги, которые позволят нам выяснить, является ли ваша проблема временной или возникла из-за более серьезной проблемы, которая потребует дополнительного устранения неполадок. Если это не помогло, пора попробовать более сложные шаги.

Расширенный поиск и устранение неисправностей

Если описанные выше базовые шаги не помогли вам, возможно, пришло время рассмотреть более сложные решения.

Удалите и переустановите свежую версию Minecraft.

Одним из главных виновников проблемы с Minecraft является… сам Minecraft. Прежде чем делать что-либо слишком сложное, чтобы попытаться решить эту проблему, попробуйте удалить игру и заново установить ее. Пока не переустанавливайте никакие пакеты текстур, моды или Optifine. Попробуйте подключиться к серверу с базовой игрой и посмотрите, решит ли это вашу проблему.

Включение собственной песочницы Java

Собственная песочница Java позволяет запускать приложения Java, такие как Minecraft, в ограниченной среде, которая может обойти все, что вызывает проблему с вашим подключением к серверу. Вы можете включить его, выполнив следующие действия:

  1. Перейдите к строке поиска на панели задач Windows, обычно в нижней части экрана, введите «Панель управления» и щелкните появившуюся запись.
  2. Найдите раздел с заголовком «Программы» и щелкните этот заголовок.
  3. На следующем экране вы должны увидеть значок «Java». Щелкните заголовок. Мы отметили заголовок Java и значок красным на рисунке ниже.
  4. Теперь у вас должно появиться небольшое всплывающее окно с надписью «Панель управления Java». В нем переключитесь на вкладку «Дополнительно» и начните прокрутку вниз, пока не увидите раздел с надписью «Дополнительные параметры безопасности». Мы отметили этот раздел красным на рисунке выше.
  5. Здесь вы найдете параметр «Включить ограниченную среду операционной системы (собственная песочница)». Убедитесь, что он отмечен галочкой, затем нажмите «Применить», а затем «ОК».
  6. Очень важно перезагрузить компьютер , чтобы изменения вступили в силу.

После перезагрузки компьютера снова запустите Minecraft и посмотрите, сохраняется ли соединение с сервером. Если это не так, не стесняйтесь снова отключить собственную песочницу, чтобы не добавлять дополнительные параметры к проблеме, которую вы пытаетесь отследить.

Смена DNS на вашем роутере на DNS-серверы Google

У вашего интернет-провайдера могут быть временные проблемы с DNS-сервером, из-за которых ваш компьютер не может найти сервер, к которому вы подключаетесь. Вы можете найти настройки DNS в панели администрирования вашего маршрутизатора / модема, и обычно они устанавливаются автоматически.

Почти все маршрутизаторы позволяют переключать DNS-серверы на те, которые вы указываете вручную, обычно два из них. Вам следует ввести следующие значения:

  • Первичный DNS-сервер: 8.8.8.8
  • Вторичный DNS-сервер: 8.8.4.4

Новые настройки DNS-сервера будут подключаться к собственным серверам Google всякий раз, когда он пытается подключиться к чему-либо с вашего компьютера, и со временем это будет намного надежнее, чем то, что вам даст ваш местный интернет-провайдер. Даже если это решение не сработает, вероятно, вам стоит сохранить новые настройки.

Читайте также: