Перейти к содержимому
eu_tomat

Достоверность программной навигации роботов при откатах чанков

Рекомендуемые сообщения

В давние времена у нас случались холивары о надёжности программной навигации. Я и @Doob утверждали, что программная навигация совершенна при правильной реализации, и сбоям не подвержена. @Alex утверждал, что программная навигация ненадёжна, и правильно реализовать её невозможно. Извините, если я кого-то забыл.

 

Сегодня в чате мы обсуждали тему отката чанков из-за кривого Майнкрафта. И я подумал, а не могли ли те сбои, о которых говорил @Alex, возникать в результате отката чанков. И я понимаю, почему я мог не встречаться с такими сбоями. Обычно я ставлю несколько роботов-шахтёров, выдаю им работы примерно на час, чтобы не умереть с голода в ожидании, а сам в это время стою AFK и подгружаю чанки. Но если бы я в это время активно перемещался в мире или же телепортировался по варпам, то при выгрузках и загрузках чанков, в которых находились мои роботы, состояние чанков могло откатиться, а состояние роботов – остаться прежним. В этом случае мог бы произойти и сбой программной навигации, т.к. роботы хранят свои состояния независимо от чанков.

 

Вопросы: Правильно ли я понял механизм возможного сбоя? И действительно ли возможны сбои программной навигации при активной выгрузке и загрузке чанков?

 

Также я предлагаю эксперимент. Предлагайте, если у кого-то есть идея получше.

 

Ставим робота, оборудованного апргейдом навигации и заставляем его вращаться на месте. Также робот считает количество поворотов, проверяет направление апргейдом навигации и посылает информацию об этом в радиоэфир. Для загрузки чанка с роботом используем игрока поднятого на свинолёте. Свинолёт уносит игрока от робота, пока слышны сигналы от робота. Отсутствие сигналов сообщает нам о том, что чанк с роботом выгрузился, и свинолёт должен вернуться ближе к роботу. При появлении сигнала свинолёт опять разворачивается. И так до тех пор, пока не произойдёт сбой. Этот момент легко отследить по данным, полученным от робота на планшет.

 

Как считаете, насколько этот способ хорош для провокации отката чанка? Велик ли в этом случае шанс обнаружить сбой программной навигации?

 

И ещё вопрос. Откаты чанков происходят только при игре на сервере, или в сингле они тоже возможны? Потому что в сингле я никогда не замечал такого явления. На сервере я замечал, но тогда сбоев навигации у меня не случалось, только стоящие на месте роботы иногда пропадали, когда я летал по варпам. И их точно не игроки воровали, так как рядом находились гораздо более ценные вещи типа алмазных сундуков полных разных ценностей. У некоторых игроков в подобных условиях роботы, наоборот, дюпались.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  

5 часов назад, eu_tomat сказал:

Также я предлагаю эксперимент. Предлагайте, если у кого-то есть идея получше.

Робот сдвигается по прямой или спирали, при этом считает в переменной количество сдвигов себя как блока.

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

Спустя некоторое количество итераций смотрим счетчик робота и реальное количество преодоленных блоков

 

Такой способ по идее лучше движения по кругу, ибо исключает двойную ошибку(когда две и больше ошибки исправляются эффекты друг друга)

Изменено пользователем hohserg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@eu_tomat это ты на сервере хочешь проверять или в сингле?

 

п.с. И робот же сбивался когда-то и без выгрузки чанков, а может и сейчас(не знаю, 100 лет не играл в роботов)  Было так, что если бахнуть ему цикл for на 10 движений вперед без слипа, или даже со слипом, но без вайл проверки на тру, что он успел таки совершить мув, в итоге могло получиться не 10 мувов вперед, а например 9 или даже 8.

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

 

А странные баги с "откатами чанков", это беда известная. Это ты вряд ли полечишь. Это баги ядра какие-то.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Alex сказал:

Было так, что если бахнуть ему цикл for на 10 движений вперед без слипа, или даже со слипом, но без вайл проверки на тру, что он успел совершить мув, в итоге могло получиться не 10 мувов вперед, а напримр 9 или даже 8.

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

 

34 минуты назад, Alex сказал:

Лучше всё на сервере проверяй

На сервере обязательно. Мой вопрос был в том, стоит ли в сингле вообще пытаться тратить время на подобные эксперименты.

 

3 часа назад, hohserg сказал:

Время фазы прогрузки чанка не должно быть кратно времени сдвига робота.

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

 

3 часа назад, hohserg сказал:

Такой способ по идее лучше движения по кругу, ибо исключает двойную ошибку(когда две и больше ошибки исправляются эффекты друг друга)

Да. Я сегодня долго не мог уснуть, пытаясь придумать какой-нибудь аналог песочных часов в Майнкрафте. И знаешь, что придумал? MFSU + самая дохлая солнечная панель. Девять с четвертью часов будут тикать эти часики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, eu_tomat сказал:

На сервере обязательно. Мой вопрос был в том, стоит ли в сингле вообще пытаться тратить время на подобные эксперименты.

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

Проверь в сингле пока, если хочешь и если это интересно тебе, потом на сервере проверим. Почему и нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть ведь механизмы, которые удаленно грузят чанки, вроде звездных врат, с ними никуда ездить не надо.

А пропадание всяких катушек и одиноко стоящих роботов это норма и для ванили, просто моды дают больше возможностей.

 

Есть 100% способ дюпать чанк на любой сборке модов или ванили, но я этот способ не дам, у вас документов нету. Способ гениально прост, до него может допереть кто угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Doob сказал:

Есть ведь механизмы, которые удаленно грузят чанки, вроде звездных врат, с ними никуда ездить не надо.

А пропадание всяких катушек и одиноко стоящих роботов это норма и для ванили, просто моды дают больше возможностей.

 

Есть 100% способ дюпать чанк на любой сборке модов или ванили, но я этот способ не дам, у вас документов нету. Способ гениально прост, до него может допереть кто угодно.

ну тогда и "эксперименты" никакие проводить топикстартеру не нужно. Это просто трата времени впустую:D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Alex сказал:

п.с. И робот же сбивался когда-то и без выгрузки чанков, а может и сейчас(не знаю, 100 лет не играл в роботов)  Было так, что если бахнуть ему цикл for на 10 движений вперед без слипа, или даже со слипом, но без вайл проверки на тру, что он успел таки совершить мув, в итоге могло получиться не 10 мувов вперед, а например 9 или даже 8.

Так случается в результате отсутствия доступа к главному потоку майна во время исполнения проги, чтоб такое избежать, функции робота возвращают false - т.е. доступ к майну не удался, операция не выполнена, потому надо в цикле крутить до тех пор, пока не вернет true, т.е. операция исполнена. Я с этим часто сталкивался на всяких мцскиллах серверах, потому уже в привычку вошло писать бесконечные циклы на поворот/движение и прочими взаимодействиями с окружением.

Изменено пользователем Xytabich

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, Xytabich сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем конкретно я не встречал подобного, хотя играл много где и на загруженных серверах, в основном. Там дают ~1-3 чанка радиусом грузить, так что перерывы в работе или выгрука чанка были частыми.

Изменено пользователем Xytabich

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у нас звёздные врата ничего не грузят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, eu_tomat сказал:

Какой сдвиг имеется в виду? Время полного оборота робота по кругу? Или время единичного сдвига?

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

  

7 часов назад, eu_tomat сказал:

как можно управлять временем загрузки или выгрузки чанка

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

Изменено пользователем hohserg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дык всё в одном потоке работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Doob сказал:

Есть ведь механизмы, которые удаленно грузят чанки, вроде звездных врат, с ними никуда ездить не надо.

 Ну точно же! Я зациклился на перемещении игрока, а его же можно исключить из этой схемы. Наверное. Надо проверять. Но да, начинать лучше с простых схем. И если на то пошло, то и врата не нужны. Можно же робота с чанклодером в чанк закатывать и выкатывать.

 

7 часов назад, Doob сказал:

Есть 100% способ дюпать чанк на любой сборке модов или ванили, но я этот способ не дам, у вас документов нету. Способ гениально прост, до него может допереть кто угодно.

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

 

41 минуту назад, hohserg сказал:

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

Для этого мне придётся ещё и Java изучить. Это потом как-нибудь. Или кто-нибудь более опытный решится провернуть.

 

7 минут назад, NEO сказал:

Дык всё в одном потоке работает.

А компы разве работают не в отдельном потоке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, eu_tomat сказал:

А компы разве работают не в отдельном потоке?

Компы то работают, но функции-то синхронизированные с тиками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, NEO сказал:

Компы то работают, но функции-то синхронизированные с тиками.

Просто ты обобщил так "всё". Не понятно было, к чему относилось утверждение.

 

И, кстати, в чём у нас проблема синхронизации с тиками? Врата тоже с тиками синхронизируются, но это не мешало им загружать произвольный чанк, даже не содержащий врата.

 

Но с загрузкой чанка мне всё кажется более-менее предсказуемым. А вот, когда он выгружается? Сразу или с какой-то задержкой? У меня сложилось впечатление, что есть какая-то задержка, размер которой мне показался случайным. Но это я игроком подгружал чанки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, eu_tomat сказал:

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

Это был костыль разработчика не связанный с оской, оска любой метод синхронизирует с тиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, NEO сказал:

Это был костыль разработчика не связанный с оской, оска любой метод синхронизирует с тиком.

Так и в чём проблема? Пусть синхронизирует. Нашей задачей будет синхронизация не просто с тиком, а с нужным нам тиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, eu_tomat сказал:

Так и в чём проблема? Пусть синхронизирует. Нашей задачей будет синхронизация не просто с тиком, а с нужным нам тиком.

Зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, NEO сказал:

Зачем?

Это идея @hohserg , он хочет управлять загрузкой чанка с точностью до тика. Я же пока не готов погружаться в Java.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...