Как происходит подбор предмета?

  • Автор темы Автор темы Ission
  • Дата начала Дата начала

Ission

Старожил
Девелопер
Пользователь
Баллы
173
Уважаемые, в силу своей лени и нежелания продолжать копать исходники ядра без какого-либо осмысления, прошу откликнуться тех, кто знает.
Суть в заголовке. Как происходит подбор предмета на уровне общения клиент<->сервер, какие пакеты отправляют, как определяют и т.п. Интересует серверная сторона, в качестве клиента ванильный клиент.


Сервер каждый тик движения проверяет на сущности игрока все сущности в радиусе 1-го блока от игрока, расширяя его BoundBox до соответствующих размеров. Далее у каждой сущности вызывается метод взаимодействия с сущностью типа человек (EntityHuman). У предметов, стрел, сфер опыта (может что-то ещё) в этом методе вызывается обработчик подбора, который отправляет на клиент пакет PacketPlayOutCollect. Далее предмет обрабатывает своё докладывание в инвентарь игрока.
 
Последнее редактирование:
Это, конечно, здорово, но что делает сервер перед этим пакетом? В моём случае этот пакет не отправляется.
Ты вроде бы в посте уже описал, что делает сервер перед этим, не? Или что тебя интересует
 
Ты вроде бы в посте уже описал, что делает сервер перед этим, не? Или что тебя интересует
Да вот ищу, никак понять не могу. Мне нужна вся цепочка, но, как оказывается, не всё так очевидно и просто. Как я понимаю, сервер не делает это каждый тик движения. В общем чем дальше ковыряюсь, тем безумнее это всё кажется. А вопрос задал на тот случай, если тут найдётся кто-нибудь, кто в этом уже разбирался. Всё таки я не считаю себя гениальным мыслителем, чтобы придумывать что-то поистине уникальное.
 
Да вот ищу, никак понять не могу. Мне нужна вся цепочка, но, как оказывается, не всё так очевидно и просто. Как я понимаю, сервер не делает это каждый тик движения. В общем чем дальше ковыряюсь, тем безумнее это всё кажется. А вопрос задал на тот случай, если тут найдётся кто-нибудь, кто в этом уже разбирался. Всё таки я не считаю себя гениальным мыслителем, чтобы придумывать что-то поистине уникальное.
Ну так в дебаггер зайди, брейк поинт нацепи на инстаниирование пакета и увидешь весь стактрейс
 
Всё, я допёр в причинах проблемы. Она была, в общем, не с этим связана и то, что написано вверху -- действительно именно так всё и работает, дальше просто предмет собирается в инвентарь, вызывая соответствующие методы.
Моя проблема была в том, что NetworkManager завязан не только в PlayerConnection, но ещё много где. Я, сделав обёртку на него, оборвал несколько других связей с различными объектами, как результат началось UB (если в java это так называется).
 
Последнее редактирование:
Назад
Верх