Сейчас ты пытаешься просчитать за раз весь путь, так, будто твой персонаж, за секунду должно его пройти. Это ведь не так, ему незачем знать где он окажется через 300 миллисекунд и тем более через 30 секунд.
Я думал над этим - да это снизит нагрузку, но тогда получается, что путь будет не наиболее актуальным. Допустим есть карта 200х200 точек, посередине проходит П-образное препятствие почти на всю ширину и длину карты. Путь персонажа пролегает от одного угла, в противоположный по диагонали. Если разделить расчеты на несколько циклов получим два варианта:
1. Если бот может передвигаться во время расчета следущего цикла, тогда путь станет совсем не короткий, потому что он расчитает путь на 50 точек, упрется в стену, потом еще на 50 - упрется в другую стену и может к 3 или 4 разу он наконец то выйдет.
2. Если бот не может передвигаться до конца просчета, тогда путь будет расчитан правильно, но если создавать очередь таких расчетов(допустим для сотни ботов, чтобы не было просадок), тогда это будет практически ем же алгоритмом как и при полном расчете.
Таже петрушка будет с автоматами.