RTS 게임에서 길 찾기는 어떻게 작동합니까?


42

[스택 오버플로에서 교차 게시]

워크래프트 3 또는 에이지 오브 엠파이어와 같은 게임에서 AI 상대가지도를 움직일 수있는 방법은 거의 무한 해 보입니다. 지도는 거대하고 다른 플레이어의 위치는 끊임없이 변화하고 있습니다.

이와 같은 게임에서 AI 경로 찾기는 어떻게 작동합니까? 이러한 설정에서는 표준 그래프 검색 방법 (예 : DFS, BFS 또는 A *)이 불가능 해 보입니다.


2
이 그래프에서 A *가 작동하지 않는 이유는 무엇입니까?
user712092


1
@tenfour, 링크가 끊어졌습니다.
Montreal

답변:


29

대부분의 경우 탐색 메쉬 (일반적으로 "navmesh"라고 함)에서 A * 를 사용 하는 것은 상용 RTS가 사용하는 길 찾기 솔루션입니다. 내비 메시 작동 방식, 웨이 포인트 시스템보다 더 나은 솔루션 인 이유 및 구현 리소스 링크에 대한 자세한 설명이 여기에 있습니다 .

특수 게임 모드 (포인트 / 노드 캡처) 또는 순찰, 엄폐 등을 개발할 계획이라면 AI 동작 ( 경로 찾기 아님) 을 제어하기 위해 navmesh 위에 웨이 포인트 레이어를 구현하는 것이 좋습니다.


17

Supreme Commander 2에서 사용되는 Flowfield 알고리즘을 확인하십시오. 대부분의 RTS 경로 찾기 시스템보다 훨씬 더 잘 작동합니다 (몇 가지 예는 0:50으로 건너 뛰십시오).


4
그것은 정말 멋진 데모이지만 구현 자체에 대해서는 아무 것도 말해주지 않습니다
MetaGuru

4
그들은 한 문장으로 언급했습니다 -grail.cs.washington.edu/projects/crowd-flows 에서 찾을 수있는 UW의 군중 흐름 연구를 기반으로 합니다.

flowfield 알고리즘은 꽤 흥미로워 보이지만 대부분의 알고리즘보다 훨씬 더 나은 경로 지정 작업을 수행하는 것처럼 보이지만 시스템이 작동하는 방식뿐만 아니라 시스템 자체의 작동 방식에 대한 공개 문서가 있기를 바랍니다. 당연히 개발자가 이와 같은 핵심 시스템을 구현하기 전에 물어보아야 할 많은 질문이 있지만,이 경우 이러한 질문에 대답하는 유일한 방법은 시스템을 먼저 구현하는 것 같습니다. :(
Ari Patrick

2
@Kragen : 평범한 A * (특히 중간 지점)가 서로 반복해서 충돌하기 전에 두 개의 유닛 만 있으면되며,이를 해결하려면 일종의 시스템이 필요합니다.

5
비디오를 바탕으로 Starcraft 2의 길 찾기는 다음과 같습니다. SC2는 유동장을 사용합니까?
Chris Bui

7

많은 오래된 게임은 A *를 사용합니다. 원래 스타 크래프트는 A *를 사용했습니다. 충돌을 다루는 데 문제가있었습니다. Starcraft 2는 큰 그룹의 유체 제어를 유지하기 위해 스와 밍 / 풀기 동작을 사용하여 충돌을 매우 잘 처리합니다. gamedev 기사는 이것이 어떻게 이루어질 수 있는지에 대해 설명합니다.


2

나는 그녀가 이미 다른 답변에 동의하지만 WoW / Warcraft3를 실제 2D 세계로 생각하려고 노력합니다. 그들은 타일 기반과 다르지 않습니다.

GPS가 최적의 경로를 찾는 방법을 생각할 수 있습니까? 링크 된 맵을 통한 길 찾기를위한 수많은 알고리즘이 있습니다.

첫 번째 "Quake bots"스크립트도 "알 수없는 영역"에서 작동하도록 개발 되었기 때문에 처음부터 자체 레벨을 디자인 할 수 있기 때문에 도움이 될 것입니다.

대체로 그러한지도를 다루는 개인적인 방법은 A * 패스 파인더라고 생각하는 것입니다. 그러나 먼저 모든 "타일 포인트"를 미리 계산하고 "가장 가까운 이웃"등으로 모든 항목을 색인화합니다. 그런 다음 객체가 A에서 B로 이동 한 다음 B에서 조회 만하면 연결된 항목을 확인하고 연결될 때까지 계속 반복합니다. 목표에 도달하십시오.

게임 및 조경 / 시나리오 유형에 따라 다른 사전 스캔 전술도 유용 할 수 있습니다. 일부 게임에는 장애물이 거의 없으며 이것들은 "직선"운동 + 물체에 대한 "어떻게 이동합니까?"일 수 있습니다.

이것이 약간의 의미가 있고 아마도 당신과 함께 일할 생각을 해주기를 바랍니다.


1

대부분의 게임은지도에서 경로를 찾기 위해 일종의 검색 알고리즘 또는 A *를 사용합니다. AI는 성능 측면에서 분명히 몇 가지 측면에서 조정되었습니다.

Starcraft 2에서 Zerglings가 전혀 잘 가지 못하는 곳을 알 수 있습니다 .Zerglings에게는 CPU 악몽이 될 것입니다. 그들은 A에서 B로 가기 위해 최선을 다하고 최선의 길을 찾으려고 시도조차하지 않습니다. 그들은 가능한 한 가까이 도착한 후 목이나 경사로에서 병목을 막습니다.


1

지도는 격자입니다. 그리드는 그래프입니다. A *는 그래프에서 작동하며 그래프 검색 알고리즘입니다. A *는 그래프의 몇 노드를 검색해야합니다.

언급했듯이 네비게이션 메쉬를 사용할 수 있습니다. 그러나 A * (또는 이와 유사한 것)는 어쨌든 그 메쉬 위에있을 것입니다.이 메쉬의 다각형은 그래프의 노드 일뿐입니다. 그런 다음 A *는 한 다각형에서 다른 다각형으로의 경로를 검색합니다.

워크래프트 나 상업용 게임에 대해서는 확실하지 않지만 Collaborative Diffusion 이라는 기술도 있으며 매우 간단합니다. 일반적으로 그리드에서 수행됩니다. Potential Fields 라는 기술도 있습니다.이 기술은 이전 기술 과 매우 유사합니다.

시도해 볼 수도 있습니다.

  • 이러한 게임 중 일부에 사용 가능한 소스 코드가 있는지 여부
  • 이 게임의 클론 중 일부에 소스가 있는지 여부
  • SDK 또는 에디터가 힌트를 제공하지 않는지 여부
  • 이 게임을 만드는 회사의 고용주에게 물어보십시오. 그들 중 일부는 기꺼이 공유 할 수 있습니다.

0

나는 완전히 경험이 없지만 좋은 해결책은 알려진지도를 완전히 확인하는 것이 아니라 휴리스틱을 기반으로한다고 생각합니다. 내가 생각할 수있는 휴리스틱은 로컬 기반이며 경험 기반입니다. 로컬 컨트롤은 로컬 지형 확인 및 장애물을 기반으로하여 필요한 방향으로 계속 이동합니다. 대부분의지도에는 복잡한 미로 같은 움직임이 필요하지 않지만 꽤 연결되어 있다고 생각합니다. 또 다른 휴리스틱은 이전에 알려진 경로 (다른 장치 또는 사용자가 명시 적으로 탐색 한)를 사용하여 장치를 알려진 위치 또는 거의 알려진 위치로 이동하는 것입니다. 그러나 ZorbaTHut과 같이 폐쇄 된 공간이 아니라 큰지도를 움직이는 것에 대해 이야기하고 있습니다. 복잡한 경우에는 알고리즘이 더 복잡 할 수 있으며, 일종의 "예측", 동일한 팀 단위 간의 조정 또는 세마포와 같은 대기 전략이 필요합니다. 또한,

휴리스틱 알고리즘은 일반적으로 합리적인 계산 시간으로 많은 공간에서 좋은 솔루션을 제공하기 때문에 좋습니다 (많은 단위를 이동할 때 중요 함).

이것이 일반적인 대답이라면 죄송합니다 : 나는 군중과 함께 일했지만 공간이 매우 독특했으며 알고리즘이 어떻게 작동했는지 정확하게 설명 할 수 없었습니다 (어쨌든 전 세계적으로 정의되지 않은 에이전트 기반이었습니다). 내 답변에서 유용한 아이디어를 얻을 수 있기를 바랍니다.


내가 말한 내용에 무슨 문제가 있었는지 궁금합니다 ... 댓글을 작성하기가 너무 어려웠습니까?
AkiRoss

BTW, 나는 A *가 휴리스틱 접근법을 사용한다는 것을 강조하고 싶습니다. -2 주셔서 감사합니다.
AkiRoss

당신의 대답은 "Ditch A *와 그것의 ilk and roll your own"에 해당합니다. 그것은 합리적인 답변의 시작일 수 있지만 제안 이외의 정보는 거의 제공하지 않습니다. 다운 투표의 이유는 솔루션을 구현하는 것이 얼마나 어려운지를 명확하게 밝히지 않기 때문이라고 생각합니다. 무제한 시간이 주어진 슈퍼 천재가 navmesh에서 A *보다 우수한 주어진 RTS에 대한 경로 지정 알고리즘을 핸드 코딩 / 튜닝 할 수 있음을 의심하지 않습니다. 그러나 "천재"와 "무제한"은 찾기가 매우 어렵습니다.
deft_code

아 .. 맞아 나는 그 사람이 어떻게 만드는지 묻지 않았지만 일반적인 작동 방식을 묻기 때문에 일반적인 대답을 원한다고 생각했습니다. 어쨌든 나는 내가 말한 것처럼 전문가가 아닙니다 : 나는 일반적인 IA 응용 프로그램에서 넓은 공간을 탐색하는 것에 대해 알고있는 솔루션에 대한 정보를 제공했습니다. 귀하의 의견에 감사드립니다.
AkiRoss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.