Популярное сообщение mr_box Опубликовано: 30 декабря 2017 Популярное сообщение Опубликовано: 30 декабря 2017 (изменено) Для тех, что читает по диагонали: РЕЧЬ НЕ ПРО УДОЧКИ, А ПРО ОТДАЧУ С МЕЧА (РУКИ) Для чего мы обычно используем удочку в пвп? - Правильно, чтобы откинуть соперника и получить преимущество.Запомним это и перейдем к проблеме. Все мы видели игроков, отлетающих на 0.5 блоков и откидывающих на 7? Как это работает? Почему иногда мы сами почти не отлетаем, а соперник откидывается на значительное расстояние? Сейчас я собираюсь все для вас объяснить.Все дело в версии 1.6.4, на которой работает MiniGames, а точнее в коде обработки сетевых событий.Сервер держит список игроков онлайн в определенном порядке, - в том, в котором они зашли (последний подключившийся - в конце списка).Также сервер занимается тем, что рассчитывает "кто сколько должен получить урона", "кто сколько должен отлететь", "кто куда должен падать"; затем он отправляет обновленные данные самим игрокам (клиентам), чтобы те видели что произошло. Сервер также получает пакеты и от игроков: когда вы двигаетесь у себя на экране (нажали идти вперед), на сервер сразу отправляется "movement" пакет, чтобы тот мог его обработать и отправить остальным игрокам новую информацию (чтобы и они увидели, что вы идете вперед). И в чем же тут прикол? А в том, что разные пакеты отправляются в разное время, по отношению к расчету "физики" для каждого игрока. Сервер идет (на самом деле почти летит, - он делает это очень быстр и много раз в секунду) по списку игроков, от начала до конца, смотрит пакеты, пришедшие от каждого клиента (игрока) и сразу же, в процессе прохождения списка, применяет их (обновляет свою "картину мира"). При этом каждый movement-пакет от игрока будет заставлять сервер рассчитать для него физику ("скорость движения", "трение" (если игрок касается земли, например), и т. д.).И только в конце он отправит всем клиентам новые данные. И вот тут момент: если первый игрок ударил второго (отправил пакет "атаки"), то сервер применит этот пакет и рассчитает отдачу для второго игрока, еще не дойдя до самого второго (он еще не закончил с первым), а когда дойдет, то применит к нему ту самую физику (включая трение). Вот если же второй игрок бьет первого, то при прохождение списка сервер сначала применяет трение от движения для первого игрока, перейдет ко второму, увидит, что тот бьет первого и просто применит только отдачу и урон к первому (уже он к нему не возвращается, и не перерассчитывает "физику"). Отсюда и берется баг с отдачей. Т.е. у одного из игроков всегда есть преимущество по откидыванию, а следовательно удочка не сделает особой погоды. Конечно, умные догадались, что предложение не в том, чтобы убрать удочку, а в том, чтобы пофиксить баг. Стоит отметить, что "потеря" силы отдачи может достигать почти 100% (при большом количестве movement пакетов), т.к. для каждого movement пакета расчет физики уменьшитскорость примерно в два раза (при наличии трения о блоки, на которых стоит игрок). Вот ссылка на комментарий, в котором описывалась природа этого бага на офф. багтрекере майнкрафта.(Там же, приведена ссылка на патч-багфикс для Bukkit сервера) Тема была создана не в тех.разделе, а в идеях и предложениях, т.к. первый имеет меньшую популярность. Изменено 6 января 2018 пользователем mr_box Ocuos, xHoste, trolik178888 и 27 других 30
mr_box Опубликовано: 30 декабря 2017 Автор Опубликовано: 30 декабря 2017 (изменено) Так то я уже создавал тему насчет этого бага, но она так и ушла в бездну других. Пожалуй там я не очень постарался описать баг.Надеюсь, хоть эту тему главный кодер рассмотрит. Изменено 30 декабря 2017 пользователем mr_box TasukeKun 1
Master_Leonardo Опубликовано: 30 декабря 2017 Опубликовано: 30 декабря 2017 уух, я даже не знаю что сказать. я просто составлю тебе лайк за старания, а я вижу, что ты приложил не мало усилий для создания этой темы. +, старался челик
MrDiornex Опубликовано: 30 декабря 2017 Опубликовано: 30 декабря 2017 (изменено) Молодец, постарался. Изменено 30 декабря 2017 пользователем MrDiornex Hakson и Rostik_FAIL 1 1
mr_box Опубликовано: 31 декабря 2017 Автор Опубликовано: 31 декабря 2017 up(апайте тему, чтобы быстрее пофиксили)
KOT_B_KBAHTE Опубликовано: 1 января 2018 Опубликовано: 1 января 2018 (изменено) О боже, ты ещё жив? Изменено 1 января 2018 пользователем KOT_B_KBAHTE
TasukeKun Опубликовано: 2 января 2018 Опубликовано: 2 января 2018 За, одна из лучших идей :wub: (Автор топ)
Baika Опубликовано: 5 января 2018 Опубликовано: 5 января 2018 КТО СТАРАЛСЯ, ТАК ЭТО Я, https://forum.vimeworld.ru/topic/172602-%D1%81%D0%BA%D0%B0%D0%B6%D0%B8-%D0%BD%D0%B5%D1%82-%D1%81%D0%BE%D1%84%D1%82%D0%B0%D0%BC-%D0%BC%D0%BE%D0%B9-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D0%BF%D0%BE-%D1%81%D0%BE%D1%84%D1%82%D0%B0%D0%BC-%D0%BD%D0%B0-vimeworld/ minato1 и mr_box 2
_TheMrFred_ Опубликовано: 5 января 2018 Опубликовано: 5 января 2018 Молодец! Видно хорошо знаешь физику) +репа
KOT_B_KBAHTE Опубликовано: 7 января 2018 Опубликовано: 7 января 2018 Че вы лайки ставите и ливаете, а тему апать кто будет?
DronyGaming Опубликовано: 7 января 2018 Опубликовано: 7 января 2018 За.Очень хорошо постарался над созданием темы, молодец.
Nightlocked Опубликовано: 7 января 2018 Опубликовано: 7 января 2018 Репа+. Видно что старался. АПАПАПАПАП
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас