ai and navigation in games: problems, solutions, mobile platform optimization

27
ИИ и навигация в играх. Козанов Тимур Проблемы, решения, оптимизация под мобильные платформы. Double Dice Games

Upload: devgamm-conference

Post on 25-Jan-2017

96 views

Category:

Software


0 download

TRANSCRIPT

Page 1: AI and navigation in games: problems, solutions, mobile platform optimization

ИИ и навигация в играх.

Козанов Тимур

Проблемы, решения, оптимизация под мобильные платформы.

Double Dice Games

Page 2: AI and navigation in games: problems, solutions, mobile platform optimization

Содержание

1. Управление сущностями.2. Топология пространства.3. Поиск пути.4. Навигация.

1. Учимся применять на практике.2. Оптимизация для мобильных платформ.

Подробно:

Коротко:

Page 3: AI and navigation in games: problems, solutions, mobile platform optimization

Управление сущностями.1Машина cостояний

Одно состояние=

один обработчик

Дерево поведенияОдно действие

= один обработчик

Плохой способСквозная логика

Гибридный способОптимальный

вариант

Page 4: AI and navigation in games: problems, solutions, mobile platform optimization

Дерево поведенияBehavior tree

Подробнее:http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php

Page 5: AI and navigation in games: problems, solutions, mobile platform optimization

Машина состоянийState Machine, Конечный автомат

Подробнее:https://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867

Page 6: AI and navigation in games: problems, solutions, mobile platform optimization

Топология пространства(построение графа)2

GridСетка с квадратными ячейками

Hexagonal GridСетка с шестиугольными ячейками

NavmeshСетка из треугольников

Page 7: AI and navigation in games: problems, solutions, mobile platform optimization

Grid

Плюсы:•Легкая генерация•Быстрая ретопология•Быстрое добавление агентов

Минусы:•Большой объём данных•Медленный поиск пути

Подробнее:http://www-cs-students.stanford.edu/~amitp/game-programming/grids/

Page 8: AI and navigation in games: problems, solutions, mobile platform optimization

Hexagonal Grid

Плюсы:•Одинаковая длина шага к любому соседу

Минусы:•Большой объём данных•Медленный поиск пути•Чуть более сложная математика

Подробнее:http://www.redblobgames.com/grids/hexagons/

Page 9: AI and navigation in games: problems, solutions, mobile platform optimization

Navmesh

Плюсы:•Меньше объём данных•Не зависит от размера области•Быстрый поиск

Минусы:•Высокая сложность построения, ретопологии и добавления агентов

Подробнее:https://docs.unity3d.com/Manual/nav-NavigationSystem.html

Page 10: AI and navigation in games: problems, solutions, mobile platform optimization

Поиск пути(Pathfinding)3

Алгоритм ДейкстрыВолнами перебирает вершины от исходной в порядке удаления

А* (А-стар)Перебирает вершины с учётом расстояния между исходной или конечной точкой, а также с учётом стоимости вершин (penalties)

Подробнее:http://www.redblobgames.com/pathfinding/a-star/introduction.html

Page 11: AI and navigation in games: problems, solutions, mobile platform optimization

Навигация4RVO / HRVO (Учёт взаимных скоростей)http://gamma.cs.unc.edu/HRVO/

Boids (Стайное поведение)https://habrahabr.ru/post/182382/

Potential field (Навигация + пасфайндинг)https://habrahabr.ru/post/262181/

Page 12: AI and navigation in games: problems, solutions, mobile platform optimization

Пробуем применитьна примере условного

Clash of Clams Beach

Page 13: AI and navigation in games: problems, solutions, mobile platform optimization

Управление1Finite State MachineБудет оптимальным вариантом, т.е. игровая логика довольно простая и количество состояний не большое.

Поиск цели

Навигация

Атака

Смерть

Page 14: AI and navigation in games: problems, solutions, mobile platform optimization

Топология2GridУдобнее соотносить со строительной сеткой.

• Два размера у зданий

• Сдвиг на пол клетки

Page 15: AI and navigation in games: problems, solutions, mobile platform optimization

Поиск пути3Любимый А*Выбран Grid, следовательно используем для поиска пути быстрый и удобный А*. Можно ещё посмотреть в сторону Potential Field.

Page 16: AI and navigation in games: problems, solutions, mobile platform optimization

Навигация4Зависит от требований.

Оптимальнее всего игнорировать коллизии и симулировать стайное поведение с помощью небольшой рандомизации точек пути.

Page 17: AI and navigation in games: problems, solutions, mobile platform optimization

А теперь о грустном(проблемах)

ивесёлом

(решениях)!

Page 18: AI and navigation in games: problems, solutions, mobile platform optimization

Асинхронность1Разбивайте задачи по времени.200 юнитов за 1 фрейм – плохо.5 фреймов по 40 юнитов – хорошо!

Визуально разницы нет. Если нет разницы, зачем платить больше!?

Page 19: AI and navigation in games: problems, solutions, mobile platform optimization

Мультипоточность2Поиск пути – дорогая операция!Поиск пути в отдельных потоках, чтобы при любом количестве вычислений убрать просадки FPS.

Page 20: AI and navigation in games: problems, solutions, mobile platform optimization

Пулинг3Реюзабельность – наше всё!Взять из пула быстрее чем инстанциировать.Потоков тоже касается, ThreadPool в помощь.Можно кешировать даже списки (Array и List).

Page 21: AI and navigation in games: problems, solutions, mobile platform optimization

Кеширование4Дважды в одну воду!Если что-то уже получено или посчитано, ни в коем случае нельзя это повторять. Кешировать можно всё, начиная от настроек, и вплоть до математических операций.

Кое-где кешируют даже синусы.

Page 22: AI and navigation in games: problems, solutions, mobile platform optimization

Микрооптимизации5Много по малу – уже много!?

• Отказываемся от квадратных корней там где

можно.

• Ограничиваем точность вычислений.

• Заменяем деление умножением.

• И т.д.

Page 23: AI and navigation in games: problems, solutions, mobile platform optimization

Отсекайте ненужное6Для уменьшения вычислений, обсчитывайте только реально играющие роль сущности.Дополнительное разбиение пространства подобно тому, как это делают физические движки.

Page 24: AI and navigation in games: problems, solutions, mobile platform optimization

Правильные структуры7Подбирайте для задач оптимальные структуры данных.

• Для сортировки в навигации BinaryHeap.• Для прохода по спискам переменной длины

LinkedList.• Для прямого доступа Array.• Struct вместо Class там где это требуется.

Page 25: AI and navigation in games: problems, solutions, mobile platform optimization

Скорость прежде всего8Скорость чуть важнее памяти.

Если известен максимум, лучше заранее создать хранилище нужного размера: Array[max] или List(max).

Page 26: AI and navigation in games: problems, solutions, mobile platform optimization

Want some more?1. http://www.redblobgames.com/

2. Game AI Pro: https://www.amazon.com/Game-AI-Pro-Collected-Professionals/dp/1466565969/

3. Game AI Pro 2: https://www.amazon.com/Game-AI-Pro-Collected-Professionals/dp/1482254794/

4. http://www.slideshare.net/flashgamm/artificial-intelligence-in-games-62568832

Page 27: AI and navigation in games: problems, solutions, mobile platform optimization

Всем спасибо!

Козанов ТимурDouble Dice Games

https://www.facebook.com/[email protected]