4P by neo 11달전 | favorite | 댓글과 토론

선형 경로 찾기

  • 몬스터와 플레이어 사이에 직선 경로를 그리고 몬스터가 그 방향으로 이동하는 가장 기본적인 경로 찾기 방법.
  • 몬스터가 벽에 부딪히면 멈추지만, 벽을 따라 이동하는 벽 슬라이딩 기법으로 이 문제를 해결할 수 있음.
  • 벽 슬라이딩은 경로 찾기뿐만 아니라 플레이어 이동에도 효과적이며, 많은 게임들이 이 기법을 사용함.

다익스트라 알고리즘

  • 학교에서 배우는 알고리즘으로, 시작 노드에서 다른 모든 노드까지의 최단 경로를 찾음.
  • 목적지 노드를 찾으면 중단할 수 있지만, 특정 방향으로 알고리즘을 유도할 방법은 없음.
  • 게임에서는 몬스터의 목적지가 플레이어의 움직임에 따라 계속 바뀌기 때문에, 다익스트라 알고리즘은 비효율적임.

A* 탐색 알고리즘

  • 시작 노드에서 목적지까지의 거리를 가중치로 사용하여, 직선 경로를 우선적으로 시도함.
  • 벽에 막히면 주변 노드를 조사하여 벽을 우회하려고 시도하며, 이미 방문한 노드는 다시 방문하지 않아 궁극적으로 벽을 우회하는 경로를 찾음.

A* 알고리즘 트릭

  • 암시적 그래프 데이터 구조: 노드와 인접 행렬 또는 인접 리스트를 사용하는 대신, 픽셀 좌표를 노드로 사용하고 인접 노드를 동적으로 생성하여 메모리 사용을 줄임.
  • 기하학적 휴리스틱: 타일을 노드로 사용하여 검색 속도를 높이고, 고정된 반복 깊이를 설정하여 알고리즘을 완전히 실행하지 않고도 합리적인 진행을 할 수 있음.

GN⁺의 의견:

  • 이 글에서 가장 중요한 것은 A* 알고리즘을 효율적으로 구현하는 다양한 트릭들을 소개하고 있다는 점임.
  • A* 알고리즘은 게임 개발, 특히 제한된 리소스를 가진 플랫폼에서 경로 찾기 문제를 해결하는 데 매우 유용함.
  • 알고리즘의 복잡성을 줄이고 메모리 사용을 최적화하는 방법을 제시함으로써, 초급 소프트웨어 엔지니어들이 경로 찾기 알고리즘을 더 잘 이해하고 적용할 수 있도록 도움을 줌.