대규모 네트워크 환경에서 엔티티 경로 찾기 및 이동을 처리하는 방법은 무엇입니까?


12

여기에 이미지 설명을 입력하십시오타일이 32x32 상자로 분할 된 위의 이미지를 고려할 때 가까운 플레이어에게 '공격'으로 표시된 엔티티가 있습니다. 나는이 몬스터가 플레이어를 이상적으로 쫓아 가기를 원합니다 (그리고 플레이어를 잠시 쫓아 가고 싶습니다). 현재 내 유일한 움직임은 원격 엔티티에 대한 간단한 보간 기이며, 움직임 업데이트 사이의 간격이 다소 작기 때문에 작동합니다.

나는 클라이언트에게 몬스터가 자신이있는 위치로 이동하기를 원한다고 성공적으로 말할 수는 없다. -효율적이지만 더 중요한 것은 현실적으로 보이지 않으며 벽을자를 수 있습니다! 피할 수 있다면 서버에서 전체 움직임을 시뮬레이트하고 싶지는 않지만 ...하지만 클리핑 문제는 여전히 해결되지는 않습니다. 솔루션에 경로 찾기 및 클라이언트 주기적 노드 업데이트 전송과 관련이 있다고 생각하고 움직임을 시뮬레이션 할 수는 있지만 확실하지 않습니다.

감사!

답변:


9

간단한 시작을 위해 조향 동작을 구현할 수 있습니다 . 특히 행동을 추구하십시오 . 여기에 이미지 설명을 입력하십시오

캐릭터를 찾는 것 외에도 장애물피하기 위해 회피를 사용해야합니다 .

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

이러한 측면이 작동하면 더 지능적인 다음을 구현할 수 있습니다. 여기에는 경로 찾기가 포함됩니다. 이제 적을 향해 조준하는 대신, 적들은 자신의 목표로 이어지는 길의 각 노드향해 조종 합니다.

적이 충분히 "가까워지면"완전히 조종하는 행동으로 전환 할 수 있습니다. 경로 찾기보다 비용이 적게 들기 때문에 근거리에서 좋은 결과를 얻을 수 있습니다.

조향으로 적의 최대 회전 속도와 최대 속도를 정의 할 수도 있습니다.

서버에서 정기적으로 업데이트하여 클라이언트에서 조향을 관리하여 계속 추적 할 수 있습니다.


이것은 서버에서 스티어링 동작을 시뮬레이션하는 것을 의미합니까? 아니면 경로를 따라 엔티티를 논리적으로 '스냅'할 수 있습니까? 나는 큰 정확성이 필요하지 않습니다.
Vaughan Hilts

스티어링만으로 시뮬레이션을해야 할 것입니다 (그렇지만 무겁지는 않습니다). 그러나 웨이 포인트를 향한 조향은 시뮬레이션없이 업데이트 될 수 있습니다. 클라이언트가 "현재"웨이 포인트 범위 내에 있는지 확인하고 "다음"으로 올바른 웨이 포인트를 향하도록 조정하십시오. 엔터티가 제대로 작동하지 않고 갑자기 업데이트되면 스냅이 필요할 수 있습니다.
MichaelHouse

큰 답변 +1. 몇 시간을 절약 해 주셔서 감사합니다.
Md Mahbubur Rahman

1

나는 클라이언트에게 몬스터가 자신이있는 위치로 이동하기를 원한다고 성공적으로 말할 수는 없다. -효율적)

실제로 이것은 간단합니다. 이동 방향은 목표 위치에서 현재 위치를 뺀 것입니다. 그 벡터를 실제로 원하는 이동 속도로 스케일링하기 만하면됩니다. 모든 프레임을 반복하십시오.

더 중요한 것은 현실적으로 보이지 않고 벽을자를 수 있습니다! 피할 수 있다면 서버의 전체 움직임을 시뮬레이트하고 싶지 않습니다 ...

서버에서 움직임을 시뮬레이션해야합니다. 모든 플레이어가 동일한 행동을보고 있다는 것을 어떻게 알 수 있습니까?

기본적인 길 찾기가 필요합니다. A *가 표준입니다. 대상까지의 경로를 계산 한 다음 해당 경로를 따르는 것은 단순히 위와 같이 이동 벡터를 설정하는 경우입니다. 또는 Byte56의 답변과 같은 스티어링 동작을 사용할 수 있습니다.이 기능은 본질적으로 추가 기능이 추가 된 것과 같습니다.

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