Алгоритмы иерархического поиска пути в играх Андрей Плахов andrey.plakhov@nival.com.

Презентация:



Advertisements
Похожие презентации
1 Исследование алгоритмов решения задачи k коммивояжеров Научный руководитель, проф., д.т.н. Исполнитель, аспирант Ю.Л. Костюк М.С. Пожидаев Томский государственный.
Advertisements

Постановка задачи Найти путь от точки А к точке Б значит найти последовательность действий проделав которые можно переместиться на игровом поле из А в.
Списки, деревья, графы. Простой Индексированный список Связный и двусвязный список.
Презентация к уроку информатики и икт (9 класс) по теме: Электронные таблицы
Поиск максимальной длины рекуррентности в графе зависимостей Научный руководитель: Гимпельсон В.Д. Работу выполнила Филиппова В.Н. Московский физико-технический.
Ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой»
Модуль поиска путей в игровом движке Владимир Олейник
Двумерные массивы. Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной.
Логическое программировыание Презентация 5 Списки в Прологе.
Компьютерная геометрия и графика. Лекция 8. План занятия: Задача удаления невидимых линий c с использованием Z-буфера Алгоритм Художника.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Компьютерная геометрия и графика. Лекция 7. План занятия: Задача удаления невидимых линий. Алгоритм плавающего горизонта.
Работа с массивами Массив – упорядоченный набор данных, обозначаемый одним именем.
Эффективность распараллеливания Оценки качества вычислительного алгоритма, системного ПО и аппаратуры Цель – оптимизация счета Критерии качества: Производительность.
Алгоритмы сканирования и обхода Лекция 3. Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s,
Выполнил: Горелов С.С. Под руководством: с.н.с. Афонин С.А., проф. Васенин В.А. Усечение пространства поиска в полуструктурированных данных при помощи.
Необхідність структурування даних. Послідовне і зв ' язне розподілення даних в пам ' яті ЕОМ. Статичні і динамічні структури даних.
СУБД (ACCESS) Севастопольская специализированная школа I-III ступеней 3 с углублённым изучением английского языка Севастопольского городского Совета Ученица.
Методика решения и оценивания задач «С1», «С2» Единого Государственного Экзамена.
AI автомобиля в изменчивом мире на примере Ex Machina Докладчик Антон Савин, ведущий программист Targem Studio,
Транксрипт:

Алгоритмы иерархического поиска пути в играх Андрей Плахов

Три метода поиска пути (По возрастанию сложности и эффективности) Эмпирический обход препятствий A* и распределенный А* Подробнее тут: Иерархический поиск пути Алгоритмы поиска пути Андрей Плахов

Стратегические правила Никогда не используйте сложный метод, если можно обойтись простым! Заставьте геймдизайнеров иногда думать о поиске пути! Алгоритмы поиска пути Андрей Плахов

Иерархический поиск пути Как ищут путь люди? Как использовать в играх похожие алгоритмы? Алгоритмы поиска пути Андрей Плахов

Иерархический поиск пути Вот что такое граф областей Алгоритмы поиска пути Андрей Плахов

Иерархический поиск пути Поиск происходит в 2 этапа Алгоритмы поиска пути Андрей Плахов

Иерархический поиск пути Что входит в систему иерархического поиска? Предварительное построение карты Создание графа областей Поиск в графе областей Окончательный поиск с ограничениями Пересчет областей, если карта изменилась Алгоритмы поиска пути Андрей Плахов

Граф областей Разобьем карту на «квадратики». Регулярное разбиение Сторона квадратика – степень двойки (4 или 8) Каждая область будет целиком входить в один из квадратиков Алгоритмы поиска пути Андрей Плахов

Граф областей Выделяем области Как это сделать за 2 прохода по карте? Первый проход: номер области определяется по ближайшим соседям На слайде номер отображается цветом. Внизу нарисована таблица соответствий Алгоритмы поиска пути Андрей Плахов

Граф областей Строим граф областей Как это сделать за 2 прохода по карте? Второй проход: области отождествляются Номер области определяется по таблице соответствий Алгоритмы поиска пути Андрей Плахов

Граф областей Разметка расстояний Выбор центра области: Ближайшая к центру тяжести точка области Таблица Т: расстояние от каждой точки области до ее центра. Один шаг стоит 2, по диагонали 3 Расстояние между областями: минимум по их общей границе Алгоритмы поиска пути Андрей Плахов

Граф областей Пересчет Пересчет должен быть локальным Смена персонажа вызывает такой же пересчет, как и разрушения Таблицу Т нужно сохранить для ускорения пересчетов Алгоритмы поиска пути Андрей Плахов

Граф областей. Объединение графов Этажи зданий Вложенные сетки, повернутые на угол, не кратный 90˚ Пещеры, точки телепортации,... Алгоритмы поиска пути Андрей Плахов

Двухуровневый поиск пути Поиск пути по графу областей. В итоге – список областей Поиск пути по детальной карте только среди точек, близких к центрам областей из списка Алгоритм А* не используется – здесь алгоритм Дийкстры оказывается быстрее. Алгоритмы поиска пути Андрей Плахов

Алгоритм Дийкстры Напоминаем: Поиск пути основан на очереди с приоритетами На каждом шаге обрабатывается первый узел в очереди. Его необработанные соседи попадают в очередь с приоритетом, равным суммарной стоимости пути до них В итоге для каждой обработанной позиции в хэш- таблицу или 2d-массив попадает ее предок и стоимость пути до нее Алгоритмы поиска пути Андрей Плахов

Быстрый алгоритм Дийкстры Эмпирическое отбрасывание ложных смен поз Стоимость хода – целое число, меньшее N. Для скорости полезно N – степень двойки. Очередь с приоритетами моделируется при помощи N массивов фиксированной длины. Скажем «Нет» операциям с памятью! Будьте осторожнее с STL, обращайте внимание на неявное выделение памяти Алгоритмы поиска пути Андрей Плахов

Быстрый алгоритм Дийкстры Очередь с приоритетами как N массивов После N-того массива опять следует первый Каждый массив свернут в кольцо Алгоритмы поиска пути Андрей Плахов Пусть обрабатывается массив с номером Х. В массиве с номером (X+С) mod N находятся все ждущие обработки позиции стоимостью на С больше текущей.

Быстрый алгоритм Дийкстры На С++ полезно писать такой алгоритм как template Cпециализаторы: тип «позиция»; таблица, хранящая информацию о стоимости и позиции- предке; число N Алгоритмы поиска пути Андрей Плахов Красный крест: позиция обработана Выделенная стрелкой позиция обрабратывается Позиции с рамкой будут добавлены на текущем шаге

Способы оптимизации метода Кэшируйте результаты Запоминайте расстояние в графе областей от начальной области до остальных. 90% вызовов поиска пути начинаются с той же области, что и предыдущий вызов Используйте предварительные вычисления: считайте, пока есть время Не используйте отложенные вычисления Алгоритмы поиска пути Андрей Плахов

Вот о чем мы поговорили: Три способа организации поиска путей: какой использовать? Иерархический поиск пути: построение и перерасчет графа областей Двухуровневый иерархический поиск Быстрый алгоритм Дийкстры Как оптимизировать эти методы? Алгоритмы поиска пути Андрей Плахов

Алгоритмы поиска пути Андрей Плахов