ai and navigation in games: problems, solutions, mobile platform optimization
TRANSCRIPT
![Page 1: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/1.jpg)
ИИ и навигация в играх.
Козанов Тимур
Проблемы, решения, оптимизация под мобильные платформы.
Double Dice Games
![Page 2: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/2.jpg)
Содержание
1. Управление сущностями.2. Топология пространства.3. Поиск пути.4. Навигация.
1. Учимся применять на практике.2. Оптимизация для мобильных платформ.
Подробно:
Коротко:
![Page 3: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/3.jpg)
Управление сущностями.1Машина cостояний
Одно состояние=
один обработчик
Дерево поведенияОдно действие
= один обработчик
Плохой способСквозная логика
Гибридный способОптимальный
вариант
![Page 4: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/4.jpg)
Дерево поведения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](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/5.jpg)
Машина состояний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](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/6.jpg)
Топология пространства(построение графа)2
GridСетка с квадратными ячейками
Hexagonal GridСетка с шестиугольными ячейками
NavmeshСетка из треугольников
![Page 7: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/7.jpg)
Grid
Плюсы:•Легкая генерация•Быстрая ретопология•Быстрое добавление агентов
Минусы:•Большой объём данных•Медленный поиск пути
Подробнее:http://www-cs-students.stanford.edu/~amitp/game-programming/grids/
![Page 8: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/8.jpg)
Hexagonal Grid
Плюсы:•Одинаковая длина шага к любому соседу
Минусы:•Большой объём данных•Медленный поиск пути•Чуть более сложная математика
Подробнее:http://www.redblobgames.com/grids/hexagons/
![Page 9: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/9.jpg)
Navmesh
Плюсы:•Меньше объём данных•Не зависит от размера области•Быстрый поиск
Минусы:•Высокая сложность построения, ретопологии и добавления агентов
Подробнее:https://docs.unity3d.com/Manual/nav-NavigationSystem.html
![Page 10: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/10.jpg)
Поиск пути(Pathfinding)3
Алгоритм ДейкстрыВолнами перебирает вершины от исходной в порядке удаления
А* (А-стар)Перебирает вершины с учётом расстояния между исходной или конечной точкой, а также с учётом стоимости вершин (penalties)
Подробнее:http://www.redblobgames.com/pathfinding/a-star/introduction.html
![Page 11: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/11.jpg)
Навигация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](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/12.jpg)
Пробуем применитьна примере условного
Clash of Clams Beach
![Page 13: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/13.jpg)
Управление1Finite State MachineБудет оптимальным вариантом, т.е. игровая логика довольно простая и количество состояний не большое.
Поиск цели
Навигация
Атака
Смерть
![Page 14: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/14.jpg)
Топология2GridУдобнее соотносить со строительной сеткой.
• Два размера у зданий
• Сдвиг на пол клетки
![Page 15: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/15.jpg)
Поиск пути3Любимый А*Выбран Grid, следовательно используем для поиска пути быстрый и удобный А*. Можно ещё посмотреть в сторону Potential Field.
![Page 16: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/16.jpg)
Навигация4Зависит от требований.
Оптимальнее всего игнорировать коллизии и симулировать стайное поведение с помощью небольшой рандомизации точек пути.
![Page 17: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/17.jpg)
А теперь о грустном(проблемах)
ивесёлом
(решениях)!
![Page 18: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/18.jpg)
Асинхронность1Разбивайте задачи по времени.200 юнитов за 1 фрейм – плохо.5 фреймов по 40 юнитов – хорошо!
Визуально разницы нет. Если нет разницы, зачем платить больше!?
![Page 19: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/19.jpg)
Мультипоточность2Поиск пути – дорогая операция!Поиск пути в отдельных потоках, чтобы при любом количестве вычислений убрать просадки FPS.
![Page 20: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/20.jpg)
Пулинг3Реюзабельность – наше всё!Взять из пула быстрее чем инстанциировать.Потоков тоже касается, ThreadPool в помощь.Можно кешировать даже списки (Array и List).
![Page 21: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/21.jpg)
Кеширование4Дважды в одну воду!Если что-то уже получено или посчитано, ни в коем случае нельзя это повторять. Кешировать можно всё, начиная от настроек, и вплоть до математических операций.
Кое-где кешируют даже синусы.
![Page 22: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/22.jpg)
Микрооптимизации5Много по малу – уже много!?
• Отказываемся от квадратных корней там где
можно.
• Ограничиваем точность вычислений.
• Заменяем деление умножением.
• И т.д.
![Page 23: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/23.jpg)
Отсекайте ненужное6Для уменьшения вычислений, обсчитывайте только реально играющие роль сущности.Дополнительное разбиение пространства подобно тому, как это делают физические движки.
![Page 24: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/24.jpg)
Правильные структуры7Подбирайте для задач оптимальные структуры данных.
• Для сортировки в навигации BinaryHeap.• Для прохода по спискам переменной длины
LinkedList.• Для прямого доступа Array.• Struct вместо Class там где это требуется.
![Page 25: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/25.jpg)
Скорость прежде всего8Скорость чуть важнее памяти.
Если известен максимум, лучше заранее создать хранилище нужного размера: Array[max] или List(max).
![Page 26: AI and navigation in games: problems, solutions, mobile platform optimization](https://reader035.vdocuments.site/reader035/viewer/2022081515/5887cb261a28abeb738b5de1/html5/thumbnails/26.jpg)
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