- Баллы
- 76
- Имя в Minecraft
- Abcik
Всем привет.
Задумался над идеей создания "идеального" anti x-ray плагина. Но как известно, идеальных античитов потому и не существует, что они отнимают слишком много ресурсов и часто их использование иррационально, тем не менее, быть может у кого-то будут светлые идеи по существенной оптимизации или изменению моего метода, пусть даже незначительно жертвуя качеством вычислений, или наоборот улучшая...?
И так, перейдём к сути метода и описанию его работы:
1. Скрываем для игрока все руды в зоне досягаемости.
(В окончательной версии предполагалась пакетная реализация детекта отправки чанков, но быстрее и проще было тестить на PlayerLoadChunkEvent) При отправке чанка игроку мы перебираем блоки в чанке и запоминаем локации всех скрытых руд и соответственно, пакетно заменяем эти блоки на камень.
2. По КД проверяем, может ли игрок увидеть какие-то скрытые для него блоки.
Здесь я решил взять 8 векторов, из каждой вершины блока к локации глаз игрока и если хоть на одном векторе не было препятствий(твёрдых непрозрачных блоков) - отправляем игроку настоящий блок, и вычеркиваем блок из скрытых.
О проблемах:
1. Бывают ситуации, где 8 вершин скрыты за блоками, но блок все-равно должен быть виден.
2. Оптимизация.
Данный метод при ~12 чанках прогрузки, на версии 1.19.2 занимает больше 5-ти секунд на просчёт для ОДНОГО игрока, что делает этот метод неюзабельным. Просчитывать приходилось более 200 000 руд, умножив на кол-во векторов, и затем на кол-во блоков между игроком и рудой становится понятно почему так долго. (Хотелось бы апдейт каждые 50мс, или хотя-бы каждые 250мс, для предотвращения ситуаций, что руда прогружается с запозданием прямо перед твоим лицом, или уже за твоей спиной.)
PS.
Естественно все вычисления проводятся в отдельном асинхронном потоке, но это не спасает ситуацию.
Также преимущество этого метода заключается в том, что он способен маскировать вообще любой блок, а не только руды. (Сундуки, печки и т.д)
Я знаю об существовании Orebfuscator, но мне не нравится метод его работы.
Интересно почитать ваши мысли по этому поводу. Спасибо за внимание!
Задумался над идеей создания "идеального" anti x-ray плагина. Но как известно, идеальных античитов потому и не существует, что они отнимают слишком много ресурсов и часто их использование иррационально, тем не менее, быть может у кого-то будут светлые идеи по существенной оптимизации или изменению моего метода, пусть даже незначительно жертвуя качеством вычислений, или наоборот улучшая...?
И так, перейдём к сути метода и описанию его работы:
1. Скрываем для игрока все руды в зоне досягаемости.
(В окончательной версии предполагалась пакетная реализация детекта отправки чанков, но быстрее и проще было тестить на PlayerLoadChunkEvent) При отправке чанка игроку мы перебираем блоки в чанке и запоминаем локации всех скрытых руд и соответственно, пакетно заменяем эти блоки на камень.
2. По КД проверяем, может ли игрок увидеть какие-то скрытые для него блоки.
Здесь я решил взять 8 векторов, из каждой вершины блока к локации глаз игрока и если хоть на одном векторе не было препятствий(твёрдых непрозрачных блоков) - отправляем игроку настоящий блок, и вычеркиваем блок из скрытых.
О проблемах:
1. Бывают ситуации, где 8 вершин скрыты за блоками, но блок все-равно должен быть виден.
2. Оптимизация.
Данный метод при ~12 чанках прогрузки, на версии 1.19.2 занимает больше 5-ти секунд на просчёт для ОДНОГО игрока, что делает этот метод неюзабельным. Просчитывать приходилось более 200 000 руд, умножив на кол-во векторов, и затем на кол-во блоков между игроком и рудой становится понятно почему так долго. (Хотелось бы апдейт каждые 50мс, или хотя-бы каждые 250мс, для предотвращения ситуаций, что руда прогружается с запозданием прямо перед твоим лицом, или уже за твоей спиной.)
PS.
Естественно все вычисления проводятся в отдельном асинхронном потоке, но это не спасает ситуацию.
Также преимущество этого метода заключается в том, что он способен маскировать вообще любой блок, а не только руды. (Сундуки, печки и т.д)
Я знаю об существовании Orebfuscator, но мне не нравится метод его работы.
Интересно почитать ваши мысли по этому поводу. Спасибо за внимание!

