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.