Задать вопрос

Как на Python реализовать алгоритм, чтобы персонаж шёл по определенному маршруту в Genshin Impact?

Пишу на Python систему построения маршрутов для Genshin Impact. Цель — автоматически определять путь персонажа между точками фарма.

Пробовал несколько подходов, но столкнулся с проблемами:

1. Навигация по миникарте фигня
2. Подход вида "зажать W на N секунд, затем повернуть на X градусов" не работает как нужно, много факторов разных, которые меняются
3. Если идти, ориентируясь на какие-то объекты, по типу статуи в начале игры, то это не особо работает.
4. Читать память игры не могу, навыков нет

Что можете посоветовать?
  • Вопрос задан
  • 515 просмотров
Подписаться 3 Сложный Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@rPman
без доступа к внутрянке, сложно.

Миникарта - как отправная точка, вы точно пробовали? потому что точность там в играх достаточно неплохая.

Есть SAM, очень быстрый алгоритм машинного зрения, дает подробно с масками, с метками что есть что. Т.е. можно двигаться по миникарте, уточняя положение по информации от машинного зрения. Кстати, покрутить камерой под известными боту углами, позволят с отличной точностью определить координаты объектов относительно центра (персонажа), т.е. идете, и периодически покачиваете камерой влево вправо. Так как бот знает на какой угол повернул камеру (на миникарте это тоже видно) то можно рассчитать, где ожидать какой-нибудь объект, и сравнивая смещение между тем что возвращает SAM и тем что ожидалось при повороте камеры или на сколько шагов сдвинулся или при прыжках, покажет, на сколько смещен объект от плоскости относительно персонажа.

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

разметка объектов (без смысловой привязки)
https://github.com/facebookresearch/sam3
https://huggingface.co/facebook/sam3

смысловая разметка
https://github.com/sithu31296/semantic-segmentation

готовый sdk для realtime
https://developer.nvidia.com/deepstream-sdk
https://github.com/NVIDIA-AI-IOT/deepstream_python_apps

segnet для jetson (по уму на всех nvidia картах заведется)
https://github.com/dusty-nv/jetson-inference

для любых видеокарт
https://github.com/openvinotoolkit/openvino
Ответ написан
@oexce
без чтения памяти игры лучше идти через компьютерное зрение: получать положение персонажа по миникарте, строить маршрут из точек и использовать алгоритм вроде a*. движение делать с постоянной коррекцией по обратной связи, а не через «зажать w на n секунд». для такого проекта подойдут opencv и распознавание объектов. без координат персонажа надёжная навигация по открытому миру будет очень сложной.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы