В идеале конечно да, но на практике необязательно. Зеленые боты могут уметь более высокую угловую скорость, чем красную, и за счёт этого отрываться от от красных на поворотах.
А вот насчёт того, что нужно тыкаться в углы. Зачем тыкаться, если бот имеет представление о всей геометрии игрового мира?
Илья Николаевский, что-то я не очень понял. Допустим мы нашли самую далекую от красного бота вершину. Т.к. у меня все рёбра имеют вес, равной их длине, то я автоматически знаю расстояние от этой вершины до всех других.
Илья Николаевский, Я придумал алгоритм для бегства ботов от преследователей.
Я строю касательные из позиции убегающего и выбираю ту, чей угол наиболее близок к углу, противоположному углу вектора из позиции убегающего и позиции преследователя.
Т.е. примерно так:
Однако такой алгоритм может завести убегающего в тупик.
Можете подсказать, насколько вообще этот алгоритм хороший (если нету тупиков, то вроде работает прекрасно) и как сделать так, чтобы он не заводил в тупик?
Граф, которые используют красные боты похож скорее на упрощённый граф видимости, чем на waypoints. Насколько я знаю, алгоритм муравьев помогает искать кратчайший путь между двумя точками. В случае с красными ботами понятно- кратчайший путь между ним и какой-то движущейся целью. Эту задачу я решаю и без муравьиного алгоритма. Вопрос заключается в том, куда должны идти зелёные боты, чтобы максимально долго сохранять дистанцию с красным? Как муравьиный алгоритм на это отвечает?
В графе для навигации красных ботов, у меня вершины - вершины полигонов + позиции ботов + точки, куда идут боты. А ребра - это касательные между полигонами + касательные на полигоны из точек, которые не являются вершинами. Что-то наподобие неполного графа видимости
GavriKos, хорошо, я так понимаю граф - это что-то наподобие waypoints. Однако вопрос в том, как его процедурно построить для нетайловой карты?) И конечно есть опасения, что траектории ботов станут слишком однообразными
GavriKos, Что касается "убегания", то это значит двигаться таким образом, чтобы как можно дольше сохранять дистанцию с красным ботом, чтобы он не прикоснулся.
Навигация красных ботов использует граф. Благодаря нему они могут двигаться в определенную точку с обходом препятствий. Если я уберу тупики из графа, то красные боты не смогут туда попасть, фактически я упрощу мир, а этого не хочется. Также я не совсем понял фразу "двигаться по тем вершинам графа, которые позволят вернутся в исходную точку/цель не проходя по одному маршруту дважды".
Илья Николаевский, И последний (очень надеюсь) вопрос. В финальном графе должны быть ребра (например как красное) между вершинами полигонов, которые не является касательными как в графе видимости или нет?
Просто, я что-то не нашел, в каком месте вы их добавляете
Илья Николаевский, Я понял, в чем проблема, она заключалась в функции GetTangentIds(). Почему-то второй индекс касательной был на 1 меньше, чем надо, На всякий случай перепроверьте её у себя ещё.
А вот насчёт того, что нужно тыкаться в углы. Зачем тыкаться, если бот имеет представление о всей геометрии игрового мира?