Суть в том, что я хочу сделать бота, который сможет доходить из одной точки карты в другую.
В игре нет никаких координат и тд, но есть карта, на которой отображается стрелка персонажа. На основе этого я сделал следующее:
1) Перевел карту в 2 цветный вариант, где красный цвет - непроходимая зона, зеленый - проходимая.
2) По обычной карте из игры определяю текущее местоположение персонажа через OpenCV.
3) На основе двухцветной карты генерирую путь от текущего местоположения до второй точки через A* алгоритм.
4) Запускаю бота, который постоянно анализирует местоположение персонажа и следит, чтобы он двигался по пути к следующей точке. Каждая точка пути это пиксель на карте.
В связи с тем, что движение выполняется ориентируясь на карту, возникают проблемы - хоть на ней и показаны препятствия, но иногда они больше, чем на карте, а иногда там есть препятствия, которых нет на этой же карте (например деревья) и бот периодически застревает между ними.
Я пробовал решить проблему с застреванием следующими способами:
1) Заставлял бота отходить назад, затем в сторону и продолжать путь.
2) Генерировал новый маршрут от текущей точки.
3) Увеличивал размер препятствий на двухцветной карте, чтобы он проходил не впритык к ним.
4) Пробовал уменьшить количество точек, в пути, чтобы он тупо по прямой бежал между точками (например точка каждые 10 пикселей).
Но все без толку, потому что бот движется по карте с небольшим допустимым отклонением, а если его убрать или уменьшить, тогда он начинает теряться в пути, кружится на месте, проходит отрезок и возвращается назад, чтобы пройти одну из точек в пути. Плюс если бота бьют мобы, то он замедляется.
И вот главный вопрос - есть идеи, как это можно нормально реализовать? Я уже думаю собирать датасет препятствий, обучить модель определять их, чтобы бот учитывал их на пути, но может есть варианты попроще?