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

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

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

2 часа назад, Doob сказал:

Не знаю, где читал про механику нулевых чанков, нашел только это https://minecraft.gamepedia.com/Spawn_chunk

Тут написано, что и как тикает https://minecraft.gamepedia.com/Chunk#start_ticket

Вдохновившись иллюстрацией, я отодвинул тестовую установку более чем на 50 чанков от точки спавна – с большим запасом, как мне казалось. Но это всё равно не помогло. Включенный чанклодер всё равно случайным образом загружает чанки за пределами области 3x3 чанка с собою в центре – будто то чанклодер робота, или же мировой якорь RailCraft.

 

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

 

С другой стороны, а нужно ли нам знать задержку при загруке чанка, учитывая, что время его выгрузки нами всё равно неуправляемо?

В 07.05.2020 в 20:26, NEO сказал:

"рандомное" время выгрузки зависит от скорости той самой выгрузки, в майне работает балансировщик выгрузки.

Я около 10 раз включил чанклодер и выключил его следующим же тиком. При этом целевой чанк мог проработать от 11 до 45 секунд. На каком тике произошла выгрузка, и что в чанке успело произойти, а что не успело, точно неизвестно, связь с выгруженным чанком пропала. По косвенным признакам мы, конечно, можем моделировать более-менее точные предположения. Но какое количество тиков будет пропущено при следующей загрузке чанка, какие действия будут пропущены, можно сказать только после экспериментов.

 

Например, я опытным путём установил, что при каждой выгрузке-загрузке чанка MFSU недополучает энергию за один тик. Является ли причиной потери энергии откат чанка – совсем не факт. Скорее всего, это вообще не так. И смогу ли я воспроизвести откат чанка, как это делает @Doob, пока не знаю.

 

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

 

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

 

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

 

@Doob Ты что-то говорил про гарантированный способ добиться отката чанка. Что при этом у тебя происходит с программной навигацией? Состояние памяти компьютеров тоже синхронно откатывается?

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


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

Что вообще такое откат чанка? Дуб вроде бы говорил про дюп робота.

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


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

На память не смотрел, компы работают как и работали. Хотя, может и падали иногда, не помню уже.

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

 

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

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

 

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

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


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

Что вообще такое откат чанка? Дуб вроде бы говорил про дюп робота.

Ты меня так скоро запутаешь, и я перестану понимать, кто из них Дуб, а что – дюп.

Дуб говорил про дюп чанка:

В 07.05.2020 в 11:51, Doob сказал:

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

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

 

Механизм представляется мне таким: чанк по какой-то причине не сохранился, и при очередной попытке загрузить чанк восстанавливается его предыдущее состояние до изменений в чанке. Это я называю откатом. А произойдёт ли там дюп, это уже дело десятое. Например, ты сломал в чанке робота, но при следующей загрузке чанка робот остался стоять на месте, и теперь у тебя два робота, у которых компоненты имеют одинаковые адреса. Это можно назвать дюпом. А может и не быть никакого дюпа, если ты поставил робота, но при следующей загрузке чанка робот пропал.

 

И в связи с этим я задался вопросом: может ли возникнуть ситуация, когда ничего ни дюпалось, ничего не пропадало, но робот успел сменить свою позицию, запомнить её, но из-за отката чанка эта позиция перестала соответствовать действительности? Вычисления же OC происходят в отдельном потоке. И состояния компов хранятся отдельно от чанков. Вот, в чём трагизм, Нео – Матрица скрывает от нас правду. А я в этой теме хочу научиться обнаруживать сбои в Матрице, чтобы быть готовым к неожиданностям.

 

Но продолжим исследование:

48 минут назад, Doob сказал:

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

А как это сделать? Какой-такой командой?

 

53 минуты назад, Doob сказал:

Тут на форуме кто-то приводил пример кода, при котором комп падал из-за того, что его состояние имело отрицательное время.

Да, я помню эту тему. Жаль, её автор не проявил настойчивости в поисках причин проблемы. Я тоже не понимаю, как такое возможно даже с учётом отката чанка. Зато могу представить, как может при откате чанка сбиться программная навигация.

 

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


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

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

 

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

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


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

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

 

Остановлюсь на ранее озвученной мысли:

23 часа назад, eu_tomat сказал:

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

 

@Alex, планируются ли на TechCraft размещать приваты в шахтёрских мирах? Я не настаиваю на этом и даже не прошу, а просто уточняю, чтобы знать, к чему готовиться. С приватами можно будет использовать более дорогие компоненты и упростить кодинг. Но и отсутствие приватов тоже не создаст особых трудностей.

 

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


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

Итак: теперь мне почти всё понятно в этой теме.

 

В 07.05.2020 в 11:51, Doob сказал:

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

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

 

Вот что я обнаружил: дюп возможен благодаря тому, что при некоторых манипуляциях данные об инвентаре игрока сохраняются, а данные о последних изменениях в чанке теряются. Ничего удивительного, если свежеустановленный робот может исчезнуть, а свежеснятый – продублироваться.

 

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

 

А пока вывод такой: откаты чанка вряд ли могут помешать программной навигации роботов в одиночной игре. На сервере, скорее всего, тоже, но это надо проверять.

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


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

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

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

 

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

 

Баги майна это отдельный вид искусства, чего стоит пробивание бедрока драконьими яйцами. Или X-ray, который работает благодаря тому, что игроку передается не то, что он должен видеть, а вообще весь окружающий мир. Нормальные игры себе такого позволить не могут.

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


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

Дропнуть предмет и кильнуть процесс игры это совсем простой откат...

Я же имел ввиду совсем другой тип отката...

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

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


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

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

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


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

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

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

 

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

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

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


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

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

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

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

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

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

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

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

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


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