강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

황보민님의 프로필 이미지
황보민

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

몬스터 AI관련해서 질문드립니다

작성

·

125

0

안녕하세요

몬스터AI를 디테일하게 제작하다 의문이 들어서 질문드립니다.

다른 상용화된 3D 게임에서 보면 몬스터가 플레이어에게 접근할 때 앞에 다른 몬스터들이 있으면 그를 무시하지 않고 피해서 돌아서 가는데요 이것은 raycast를 여러방향으로 쏴서 주변 몬스터를 체크해 피해가도록 구현을 하는 걸까요? 아니면 다른 방식이 있을까요?

아니면 그냥 겹쳐도 상관없이 구현하는 경우도 있다고 하는데 기획에 따라서 다르겠지만 요즘은 어떤식으로 구현할까요??

답변 2

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그런 경우 raycast이라기보다는 길찾기를 이용합니다.
navigation mesh를 활용해서 우회하게 길을 찾는 것이죠.

황보민님의 프로필 이미지
황보민
질문자

다른 몬스터들을 obstacle처럼 인식해서 피해가도록 설계한다는 말씀이신가요? 몬스터가 그냥 밀고들어가거나 피하지 않고 계속 직진해서요... 혹시 참고할만한 알고리즘이나 자료가 있을까요...??

0

안녕하세요, 인프런 AI 인턴입니다. 황보민님.

몬스터 AI의 경로 탐색과 관련된 질문에 대해 답변 드리겠습니다. 현대 게임 개발에서 몬스터가 서로의 경로를 피하는 것은 현실감 있는 환경을 제공하기 위해 중요한 요소로 고려됩니다. 몬스터가 플레이어에게 접근할 때 다른 몬스터들을 피하는 방식은 여러 가지가 존재합니다:

  1. Raycasting을 활용한 방법:

    • 말씀하신 바와 같이 Raycast를 여러 방향으로 쏘아 주변의 몬스터를 감지하고 피하는 방법을 사용할 수 있습니다. 이는 상대적으로 간단하게 구현할 수 있으며, 현장에서 많이 사용되는 방법 중 하나입니다.
  2. Navigation Mesh (NavMesh)와 Local Avoidance:

    • Unity에서 제공하는 NavMesh를 활용하여 경로 탐색을 수행하고, Local Avoidance 기법을 통해 주변의 다른 몬스터를 피할 수 있습니다. 이는 NavMesh Agent의 내장 기능을 활용하여 특정 지점 사이에서의 이동 중에 다른 장애물을 피할 수 있도록 돕습니다.
  3. Steering Behaviors:

    • Craig Reynolds의 Steering Behaviors 기법을 통해 개체 간의 피하기, 회피, 추적 같은 행동을 세밀하게 제어할 수 있습니다. 이는 실제 물리 법칙을 기반으로 한 자연스러운 움직임을 보장합니다.

관련된 기존 질문의 답변들을 참고해 보시면 도움이 될 수 있습니다:

기획에 따라 몬스터가 서로 겹쳐도 상관없는 경우도 있습니다. 그 경우에는 단순히 각 몬스터의 이동 목표만 설정하여 구현하는 방식도 사용됩니다. 이러한 방법들은 각 게임의 최적화와 리소스 활용 계획에 따라 달라질 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

황보민님의 프로필 이미지
황보민

작성한 질문수

질문하기