Поиск пути на основе аромата с использованием C # в играх - PullRequest
2 голосов
/ 11 мая 2011

Хотелось бы знать, есть ли у кого-нибудь знания о реализации поиска пути, но об использовании аромата.Чем сильнее запах в окружающих узлах, тем путь, которым движется «враг».

Спасибо

Ответы [ 5 ]

3 голосов
/ 11 мая 2011

Да, я закончил университетский проект по этому предмету.

Одно из применений этой идеи - найти shortest path.Идея заключается в том, что, как вы говорите, «запах» со временем исчезнет.Но самый короткий путь между двумя точками будет иметь самый сильный запах.

Посмотрите на эту бумагу .

Что вы хотели точно знать ??

1 голос
/ 11 мая 2011

Не совсем понятно, в чем конкретно заключается вопрос - но это просто похоже на другой способ описания проблемы оптимизации колонии муравьев :

В области компьютерных наук и операций исследование, оптимизация колонии муравьев алгоритм (ACO) является вероятностным Техника для решения вычислительных проблемы, которые можно свести к поиск хороших путей по графикам.

1 голос
/ 11 мая 2011

Ну, подумай минутку.

Моя идея состоит в том, чтобы разделить игровое поле на участки размером 32х32 (или любого другого размера, в котором находится ваш персонаж). Затем выполняйте несколько проверок каждые x секунд (так что если они останутся неподвижными, у плиток вокруг них будет больше «запаха»), чтобы выяснить, насколько сильный запах на любой данной плитке. Некоторые примеры могут быть: 1) Если вы пересекаете плитку, добавьте 3; 2) если вы пересекли соседний тайл, добавьте 1.

Затем добавляйте такие вещи, как ухудшение во времени, уменьшайте каждую плитку на 1 каждые x секунд, пока она не достигнет нуля.

Последнее, что вам нужно беспокоиться, это использовать AI для отслеживания этого пути. Я бы порекомендовал просто поместить ИИ куда-нибудь и сказать ему, чтобы он нашел узел с запахом, а затем перейти к соседнему узлу с ароматом с более высоким / равным значением. Также беспокойтесь о пересечении взятых путей. Если игрок идет по пути, а затем отступает в другом направлении, убедитесь, что ИИ всегда просто идет по зацикленному пути назад.
Последнее, на что нужно обратить внимание с ИИ, это добавить немного ошибки. Заставьте ИИ идти по неверному пути время от времени Или потерять след немного легче.

Это ключевые моменты, я уверен, что вы можете придумать еще, еще немного мозгового штурма.

1 голос
/ 11 мая 2011

Каждое обновление игры (или некоторые другие, менее частые временные рамки) увеличивают значение запаха узлов, близких к тому месту, где находятся целевые объекты (красные пятна).

Уменьшить все нюхальные значения узла на некоторое количество спада до нуля.

В функции Think / Move желтого шарика найдите доступные узлы для перемещения. Двигайтесь к узлу с наибольшим значением запаха.

В зависимости от количества узлов «уменьшение всех значений запаха узла» может быть связано с оптомизацией, например, возможно ведение списка ненулевых узлов для уменьшения.

0 голосов
/ 11 мая 2011

Я вижу большое противоречие между моделью аромата и поиском пути.Для охотника в природе найти путь по запаху - значит найти именно тот путь, которым следит субъект.А в играх поиск пути означает поиск самого быстрого пути между двумя точками.Это не то же самое.1. При моделировании аромата вы будете считать концентрацию аромата в точке как СУММУ окружающих концентраций, умноженную на разные факторы.А поиск самого быстрого пути от точки означает получение МИНИМУМА времени, подсчитанного для окружающих точек, умноженного на различные параметры.2. Для подсчета аромата следует использовать рекурсивную модель - запах распространяется во всех направлениях, в том числе назад.В случае поиска пути, если вы нашли кратчайшие пути для точек, окружающих цель, они не изменятся.3 Уровень запаха может подниматься и опускаться.При поиске пути при поиске минимума результат никогда не может возрасти.

Таким образом, модель запаха действительно намного сложнее, чем ваша цель.Конечно, то, что я сказал, верно только для стандартной ситуации, и вы можете получить что-то особенное ...

...