Алгоритмы поиска пути являются неотъемлемой частью разработки игр.
А также различные системы навигации, ориентации и многое другое.
Но мы остановимся конкретно на игровой индустрии и алгоритмах, которые в ней используются.
Перед каждым разработчиком игр стоит задача, в которой нужно заставить персонажа (или бота) пройти из одной точки в другую, не собирая при этом все стены.
А разработчикам стратегии все равно необходимо учитывать проходимость ячеек (дороги, болота, леса и так далее).
Здесь на помощь приходят алгоритмы поиска пути.
За что?
Из вышесказанного можно сделать вывод, что любому разработчику игр рано или поздно приходится сталкиваться и понимать поиск пути, а затем модифицировать и оптимизировать его под свои проекты.А поскольку в GameDev сразу переходит так много новичков, им не всегда легко прочитать несколько статей и понять тот или иной алгоритм.
В этом посте описывается попытка создать программное обеспечение, которое облегчит понимание того, как работают алгоритмы поиска пути.
Несколько слов об основных алгоритмах
Мы рассмотрим 3 основных алгоритма.Теперь в двух словах о каждом из основных алгоритмов и скриншотах визуализации их работы в программе (немного опережая события).
Алгоритм Дейкстры
Разработан голландским ученым Одсгером Дейкстра в 1959 году.Алгоритм будет проверять каждую вершину графа, пока не найдет кратчайший путь к исходной вершине.
Подробнее можно прочитать, например, здесь .
А*(Звезда)
Этот алгоритм был впервые описан в 1968 году Питером Хартом, Нильсом Нильссоном и Бертрамом Рафаэлем.При рассмотрении каждой отдельной вершины переход осуществляется к той соседней вершине, предполагаемый путь от которой до искомой вершины является кратчайшим.
Вы можете начать учиться Здесь .
Поиск точки прыжка
Этот алгоритм был представлен в 2011 году Д.Харбором и А.
Грастиеном.
JPS ускоряет поиск пути, перепрыгивая через множество мест, которые необходимо просмотреть.
«Точки перехода» позволяют ускорить алгоритм поиска пути, рассматривая только «нужные» узлы.
Очень хорошо объяснен принцип работы Здесь
Небольшой отказ от ответственности
Стоит отметить, что Растущее дерево генератор, также представленный в программе, создает «классический лабиринт» как на картинке ниже (только большего размера), высота и ширина в настройках затем задаются специально для него.Данный генератор добавлен для создания «Вау» эффекта для новичка и для демонстрации пути, построенного по самым базовым алгоритмам (Правило правой или левой руки, DFS), в посте я не буду на этом останавливаться и сосредоточусь на ручном режиме.
.
Основа поиска — клетчатое поле
Поиск работает по графику; Самый простой способ создать график из карты — самостоятельно расставить путевые точки и перенести карту в клетчатое поле.Поскольку цель состоит в том, чтобы облегчить понимание основ, мы будем работать с квадратными ячейками.
Для начала нам нужно определить класс ячейки.
Пользователь должен иметь возможность задавать вход, выход и расставлять на поле непроходимые препятствия; это также полезно для изучения, чтобы узнать характеристики ячейки, ее родителя и статус прямо во время работы алгоритма.
В результате получаем представленный класс (функции set- и get-функции я удалил для экономии места):
Теги: #Qt #алгоритмы поиска пути #поиск пути #C++ #Qt #Разработка игрenum Status{ Click, Unclick, Enter, Exit, NoStatus }; enum ListStatus {NoList, InClosed, InOpen}; class GraphicsCell : public QGraphicsRectItem { public:
-
Круглые Черви
19 Oct, 24 -
Вы Подозреваете, Что Ваш Супруг Изменяет?
19 Oct, 24 -
Рткомм Упал
19 Oct, 24 -
Колдун Яндекс.такси В Результатах Поиска
19 Oct, 24 -
Веб-Ос: Более 40 Сетевых Операционных Систем
19 Oct, 24