A* 알고리즘 vs Unity NavMesh: 게임에 맞는 올바른 경로 탐색 선택

발행: (2026년 2월 15일 오전 11:27 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

A*란?

A* (A-star)는 그리드 또는 그래프에서 두 점 사이의 최단 경로를 찾는 데 사용되는 탐색 알고리즘입니다.

A* 일러스트

Unity NavMesh란?

NavMesh는 Unity의 내장 내비게이션 시스템입니다.

Unity NavMesh illustration

A* 알고리즘을 사용할 때

  • 2D 그리드 기반 게임 – 포켓몬, 파이어 엠블럼과 같은 탑‑다운 타일맵 게임에 적합합니다.
  • Custom Pathfinding – 알고리즘이나 그리드에 대한 완전한 제어가 필요할 때.
  • No Unity Engine (Custom Engine) – Unity 엔진을 사용하지 않고 (직접 엔진을 만들 때).
  • Dynamic or Procedural Worlds – 런타임에 맵을 생성하고 맞춤형 솔루션이 필요할 때.
  • Low‑poly / Small Worlds – 단순한 그리드 = 빠른 A* 연산.

A*를 사용하면 안 되는 경우 (대신 NavMesh 사용)

  • 🚫 3D 지형 또는 복잡한 기하학 – A*는 3D 메쉬 표면을 이해하지 못합니다.
  • 🚫 에이전트 기능 필요 – 내장된 에이전트 반경/높이, 장애물 회피 기능이 없습니다.
  • 🚫 대형 맵에서 성능 병목 – 그리드 기반 A*는 그리드 크기가 커질수록 느려집니다.
  • 🚫 Unity에서 자동 경로 찾기 원함 – Unity NavMesh가 자동으로 무거운 작업을 처리합니다.

Unity NavMesh를 사용해야 할 때

  • 3D 게임 (FPS, 어드벤처) – 지형, 계단, 경사로와 바로 사용할 수 있습니다.
  • Unity를 사용하고 있다 – 내장형이며 고도로 최적화되어 있어 에이전트와 장애물과 함께 작동합니다.
  • 동적 경로 찾기가 필요하다 – NavMesh는 NavMesh Surface 또는 Carving으로 업데이트할 수 있습니다.
  • 에이전트 기반 AI가 필요하다 – 다양한 크기/행동을 가진 여러 AI 유닛을 처리합니다.
  • 🚫 2D 게임 – NavMesh는 주로 3D 내비게이션용이며 (2D 지원은 임시방편입니다).
  • 🚫 완전 동적 월드 – 런타임에 NavMesh를 즉시 다시 베이킹할 수 없습니다.
  • 🚫 커스텀 게임 엔진 – NavMesh는 Unity 전용입니다.
  • 🚫 헥스 또는 불규칙 그리드 – NavMesh는 기본적으로 커스텀 형태 타일 시스템을 지원하지 않습니다.

여기에서 내 NavMesh 데모 프로젝트를 찾아보세요

TL;DR 요약

  • 탑‑다운 2D 타일 게임 → A*
  • 3D 어드벤처/FPS → NavMesh
  • 절차적 던전 → A*
  • RTS / MOBA (유닛이 있는 3D) → NavMesh
  • 커스텀 로직 / AI 테스트 → A*
  • Unity 3D 프로젝트(지형 포함) → NavMesh

Source:

3D 게임에서 동적 환경 처리

런타임에 NavMesh를 즉시 업데이트해야 하는 3D 게임에서 동적 환경을 어떻게 처리하나요?

Unity의 기본 NavMesh 시스템은 매우 동적인 환경에 최적화되어 있지는 않지만, 게임 요구 사항에 따라 우회 방법과 더 나은 솔루션이 있습니다.

동적 월드에서 NavMesh가 제한되는 이유

  • NavMesh 베이킹은 실시간이 아니며, 시간이 걸리고 매 프레임마다 다시 베이킹할 수 없습니다.
  • carving 기능이 있는 NavMeshObstacle은 단순한 객체 회피만 지원합니다.
  • 대규모 변화(지형 변형, 새로운 플랫폼 등)는 효율적으로 처리되지 않습니다.

이러한 제한을 드러내는 전형적인 동적 시나리오:

  • 움직이는 플랫폼
  • 변하는 지형
  • 건물의 생성/소멸

동적 3D 월드에서 실시간 네비게이션을 위한 최적 솔루션

  • Carving이 포함된 NavMesh – 문, 상자, 작은 장애물 등 사소한 변화에 적합합니다.
  • NavMeshComponents 패키지 – 환경의 일부만 변경될 때 사용합니다.
  • A Pathfinding Project (Aron Granberg 제작)* – 완전히 동적인 3D 월드에 최적입니다.
    • 그리드, NavMesh, 포인트 그래프 타입을 지원합니다.
    • 실시간 업데이트 및 그래프 재계산이 가능합니다.
    • 최적화되어 있으며 인디 및 AAA 타이틀에서 널리 사용됩니다.
    • 무료 버전
    • Unity Asset Store의 유료 버전
0 조회
Back to Blog

관련 글

더 보기 »

어려운 방법으로 블랙잭 시뮬레이션

나는 블랙잭 시뮬레이터를 만들었다. 그 문장은 실제보다 과소평가한다. 내가 실제로 만든 것은 이벤트‑드리븐(event‑driven) 방식으로 카드 게임을 시뮬레이션하기 위한 28,000줄짜리 Python 프레임워크이다.