Структура даних для представлення з'єднань між країнами на карті


9

У грі, яку я розробляю для клієнта, ключова концепція гри передбачає переміщення по карті. У цьому випадку розміри та форми та різні країни не мають значення: перехід з однієї країни до сусідньої країни вважається одним кроком.

Я намагаюся знайти найкращу структуру даних для внутрішнього представлення зв’язків між країнами. Для даної країни грі необхідно знати, до яких країн примикають, і знати, якими способами гравці можуть рухатися, а також дозволяти ІІ грати намічати маршрути, визначаючи можливі шляхи від однієї країни до іншої. ШІ також повинен оцінити, наскільки добре пов’язана країна не лише зі своїми сусідами, які безпосередньо сусідствують, а з сусідами цих країн тощо.

Я зрозумів пару можливостей, але вони здаються невигідними та неефективними. Оскільки AI потрібно буде обчислити купу можливих маршрутів, щоб прийняти хороші рішення щодо його руху, "неефективний" є вкрай проблематичним.

Я підозрюю, що це дещо поширена загадка CS та що є спільне рішення, але я не зміг знайти багато, шукаючи. Будь-які пропозиції вітаються.


Якщо я повинен запитати це на GameDev.StackExchange, просто дайте мені знати. Я прошу тут, тому що я впевнений, що така річ потрібна для всіляких проблем розвитку, і мені не потрібна допомога з "ігрової" сторони, сама по собі, лише частина планування маршруту.
Меттью Фредерік

Вам потрібен або графік, або матриця підключення (що зручно, тому що закриття легко обчислити). Можливо, вам потрібно і те, і інше. Подивіться їх.

2
Ознайомтеся з структурами та алгоритмами даних графіків: en.wikipedia.org/wiki/Graph_%28data_structure%29

1
Це не виглядає для мене темою. Це має бути або на GameDev, або в Stack Overflow, оскільки це занадто об'єктивна тема для цього.

Відповіді:



6

Однозначно графік. Перевірте це тут Теорія графіків , в основному у вас є вузли та ребра. Вузол може містити 0 або більше ребер для інших вузлів.

Існує безліч алгоритмів для обчислення найкоротшого шляху (перескоку або відстані), перевірки наявності циклів (більше ніж один спосіб досягти однієї самості) тощо.

Тепер, щоб мати можливість реалізувати ефективні рішення, це трохи складніше, але, як завжди, є способи.


Відмінно, дякую. Чи є якісь пропозиції, де знайти такі алгоритми? Мені не потрібний найкоротший шлях, але дуже зручні речі, такі як перевірка на кола тощо.
Меттью Фредерік

2

Як вже було сказано, вам знадобиться графік, що представляє всі можливі зв'язки між країнами. Кожне з'єднання також буде проходити відстань між двома країнами.

Тоді алгоритм пошуку шляху на зразок A * може бути використаний для визначення найкоротшого шляху між двома країнами.

Існує також кілька хороших книг про ігри ai: Гра AI на прикладі Мата Бакленда http://www.ai-junkie.com/books/toc_pgaibe.html

або серія мудрості програмування ігор AI. http://www.aiwisdom.com/ У першій книзі є кілька розділів про обхід маршрутів.


Відмінно, дякую за покажчики книг. Здається, є багато книг про ІР, і особисті рекомендації набагато кращі, ніж широкі результати, які я отримую від пошуку.
Меттью Фредерік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.