핵 앤 슬래시 게임에서 캐릭터 이동을위한 좋은 기술을 찾고


51

저는 핵 앤 슬래시 게임을 만들고 있는데 토치 라이트, 디아블로 등에서 캐릭터가 움직이기를 원합니다. 현재 바닥의 모든 걸을 수있는 영역에 대한 노드 세트를 생성합니다. 어딘가를 클릭하면 플레이어가 보간 된 노드 경로를 통과합니다. 이것은 자연스럽게 보이지 않습니다. 플레이어는 로봇처럼 움직입니다. 적들은 또한이 노드 시스템을 이동에 사용하고 같은 문제를 공유하지만 그들에게 하나 더 문제가 있습니다. 적들이 플레이어를 감지하면 가장 짧은 경로로 그에게갑니다. 때때로 그들은 같은 경로를 사용하여 플레이어를 둘러싸는 대신 플레이어에게 줄을 서기도합니다. 적들이 다른 경로를 선택하고 플레이어를 둘러 싸게하는 방법을 모르겠습니다. 이 문제를 어떻게 해결할 수 있는지 알고 있습니까? 어쩌면 캐릭터 이동에 다른 접근법을 사용해야합니까?


내 현재 기술 :

여기에 이미지 설명을 입력하십시오


횃불 스크린 샷 :여기에 이미지 설명을 입력하십시오

---최신 정보---

이러한 상황을 처리하는 방법을 알고 싶습니다.

상황 1, 나는 도중에 역동적 / 정적 방해가있다

여기에 이미지 설명을 입력하십시오

상황 2, 적에게는 샘 경로가 플레이어에게 있습니다 (우리와 싸우기 위해 대기열에 들어갑니다) 여기에 이미지 설명을 입력하십시오


10
다이어그램 및 스크린 샷 (및 좋은 질문)은 +1입니다. 항상 유용합니다.
공산주의 오리

이것은 굉장한 질문입니다 (+1).이 도전을 다루는 여러 가지 방법 (경로, AI 등을 변경하는 무작위 영향)에 대해 많은 토론과 제안이 있기를 바랍니다.
Randolf Richardson 2018 년

1
AI를 만들 때 스코어링 시스템 을 사용하는 것이 좋습니다 . 각 적의 점수 (예 : 플레이어에게 도달하는 시간)에 따라 특정 행동을 제공 할 수 있습니다. 예를 들어, 8 몹이 플레이어를 공격 할 수있는 최대 값 인 경우, 처음 8보다 높은 점수를 낸 플레이어는 의도적으로 플레이어 에게 더 긴 경로를 찾으려고 시도하여 보다 지능적으로 보이게 할 수 있습니다.
Jonathan Connell

여전히 답을 찾고 있는데, 내비 메시의 방해 (동적 / 정적)를 어떻게 처리 할 수 ​​있습니까? , 나는 Recast를 사용할 수 없습니다
piotrek

답변:


24

내비게이션 데이터 구조 와 결합 된 조향 동작 .

이를 수행하는 방법에는 여러 가지가 있지만 이것이 기본 개념입니다. 각 볼록 섹션 내에서 경로 찾기를 적용 할 수 있도록 탐색 메시 를 사용하는 것이 더 쉬울 수 있습니다 .

그래프를 유지해야 할 경우에는 노드 간 경로를 엄격하게 따르지 않고 경로의 각 노드에 찾기 동작을 사용할 수 있습니다 .

사용할 수있는 또 다른 방법은 Path Smoothing 이지만 계산 비용이 많이 든다는 점을 명심하십시오.

희망이 도움이됩니다.

편집하다:

장애물 회피 문제를 해결하려면 일종의 장애물 회피를 사용하십시오 .


답을 위해 Thx, 내비게이션 메쉬를 어떻게 생성 할 수 있습니까? 아니면 다른 방법이 있습니까? 내지도는 매끄러운 바닥 조각 (쿼드 / 삼각형)으로 만들어집니다.
piotrek

1
탐색 메쉬를 생성하기 위해 언제든지 Recast ( code.google.com/p/recastnavigation )를 사용할 수 있습니다 . 그냥 "삼각형 수프"(다각형의 다각형)를 주면됩니다.
Ray Dey

나는 이것이 유일하게 발생하지만 링크 ai-blog.net/archives/000152.html 이 죽었습니다. 사실은 내가 www.ai-blog.net에 액세스 할 수 없습니다
123iamking

3

다른 사람들이 제안한 것처럼 탐색 메쉬로 전환하는 대신 노드 그래프를 고수하려면 각 적을 특정 방향으로 공격하도록 지정하여 "주변 플레이어 대신 라인업"문제를 해결할 수 있습니다.

이를 달성하는 방법에는 여러 가지가 있지만 일반적으로 '토큰'시스템을 사용하여 몬스터에 고유 한 방향을 지정합니다. 여기서 플레이어 오브젝트에는 각 방향 (북쪽, 북동쪽, 동쪽 등)마다 하나의 토큰이 있습니다. 적이 플레이어에게 길을 가고자 할 때는 먼저 그에게서 토큰을 얻어야합니다. 토큰에 의해 지정된 방향은 몬스터에게 길 찾기가 가능한 쪽을 알려줍니다. 플레이어는 각 방향에 대해 하나의 토큰 만 가지고 있고, 몬스터는 공격하기 전에 토큰이 필요하기 때문에 여러 몬스터가 플레이어의 같은쪽으로 이동하려고 시도하지는 않습니다.

또한 경로를 찾는 과정에서 노드에 작은 페널티를 적용하여 몬스터가 가지고있는 토큰과 일치하는 방향으로 접근하도록 유도 할 수 있습니다. (즉, 몬스터가 동쪽에서 공격 할 수있는 토큰을 가지고 있다면 해당 몬스터의 "최단 경로"를 결정하기 위해 플레이어의 북 / 서 / 남쪽에있는 모든 경로 노드를 처리합니다. 그것들은 단지 하나가 아닌 여러 노드입니다). 이렇게하면 몬스터를 더 빠르게 분리하고 플레이어를 단일 파일로 행진하는 대신 마지막 단계에서만 퍼지는 대신 플레이어를 측면으로 배치하려고합니다.


2

기본적으로 적에게 원하는 것은 매크로 레벨에서 길 찾기 (볼록 영역 생성 및 플레이어가있는 영역으로의 경로에 대한 생각)를 수행하고 마이크로 레벨에서 약간의 보이드 스타일 스티어링 동작을 수행하는 것입니다. 플레이어에게).

boid 동작의 예는 다음과 같습니다. http://www.red3d.com/cwr/boids/

플레이어에게는 토치 라이트가 클릭 / 드래그 위치의 탐색 메쉬에서 길 찾기를 수행한다고 생각합니다. 직접 제어보다 약간 분리 된 느낌이 들지만 플레이어에게는 더 나은 결과를 가져옵니다.


그러나 계단은 무엇입니까? 적도 저를 공격 할 수 있습니다.
piotrek

고유 한 볼록한 모양 인 탐색 메쉬의 일부 여야합니다.
Tetrad

1
또는 지점 간 경로를 계속 사용하고 "가까운"경우 물리 기반 조향 동작으로 넘어갈 수 있습니다.
Tetrad

내비게이션 메시의 동적 방해를 어떻게 처리 할 수 ​​있습니까?
piotrek

1
: 여기에 참 -_- 그것을 처리 작업 방법에 대한 블로그 게시물의 digestingduck.blogspot.com/2011/03/...은 .
Tetrad

1

실제 경로 찾기 문제에 사용되는 rrt라는 알고리즘이 있습니다. 영웅 (또는 적)이 걸을 수있는 표면은 물체가 움직일 수있는 표면과 함께 입력이며, 일부 최적화 알고리즘을 사용하여 목적지까지의 경로를 찾습니다. 내가 아는 한이 알고리즘은 robocup 리그에서 크게 사용됩니다. 빠르고, 최단 경로를 찾고 충돌과 급회전을 피합니다. 이 파워 포인트 쇼 를 사용 하여 경로 생성 방법을 파악할 수 있습니다 .


좀 더 살펴본 후에는 내가 제공 한 프레젠테이션이 rrt의 기능을 알려주고 새로운 접근 방식을 제안하는 경우가 있으며 일부 경우 더 잘 작동한다고 주장하며 RTS 게임 길 찾기 알고리즘이 도움이되기를 바랍니다.
Ali1S232 2016 년

0

길 찾기 경로를보다 "현실적으로"보이게하려면 Game Programming Gems Vol.1에서 자연스럽게 보이는 A *에 대한 기사를 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.