길 찾기
게임 인공지능에서 가장 기본적이며 광범위함
일상에서의 길 찾기

게임에서의 길찾기
- 캐릭터 : 캐릭터 직접 조작 및 이동
- 유닛 : 자동 게임 진행
길 찾기와 비슷한 기술을 활용하여 게임에 어떻게 적용하는가
문제
캐릭터/유닛이 A지점에서 B지점으로 이동하기 위한 경로를 찾음
- 일직선 이동 불가
- 다양한 요소를 고려하여 길을 생성해야 함
- 게임에서 가장 흔한 인공지능 요소
- 실시간 전략 게임은 많은 수의 유닛이 있기 때문에, 특별히 중요함
예시

- 언덕을 내려감
- 앞마당에서 다리까지 감
- 다리를 건넘
- 평지를 지남
- 다리를 건넘
- 평지를 지남
- 앞마당을 지남
- 언덕을 오름
- 적 본진까지 감
길 찾기 방법
- 최단 경로
- 짧은 길이 최선인지 고려해야함
- 상대방의 매복 가능성, 위험 요소, 비용 등
- 자연스러운 경로
- 사람이 보기에 경로가 자연스러운지 고려해야함
- 상용 게임에서는 부드럽게 만드는 과정을 별도로 진행함
- 주변 환경을 고려한 경로
- 주변 캐릭터, 문, 창문, 벽, 강, 바다, 용암, 좁은 길 등
- 캐릭터를 고려한 경로
- 점프 가능성, 비행 가능성, 도구 활용도, 교통 수단 등
단순한 경우의 길 찾기
- 단일 캐릭터
- 실시간 아닌 턴 기반 게임
- 격자 공간
- 정적 세계
A* 알고리즘이 가장 적절함
복잡한 경우의 길 찾기
- 다수의 캐릭터가 경로가 겹칠 때
- 실시간 게임
- 연속적인 맵
- 동적 세계
다른 형태의 A* 알고리즘을 사용
길 찾기 예제

- 어떻게 게임 맵을 컴퓨터에 표현할 것인가
- 표현된 게임맵에서 어떻게 최단 경로를 찾을 것인가
그래프를 이용한 맵의 표현

격자 형태의 맵의 표현

참고 자료
트리 탐색을 이용한 길 찾기
시각화되어 탐구할 수 있는 사이트
너비 우선 탐색

- 장점
- 경로 탐색을 위한 최단 거리를 찾아냄
- 비용이 높음
- 시간이 오래 걸릴 수 있음
- 단점
- 맵 사이즈에 따라 변동이 크기 때문에 실제 게임에 적용하기에 비효율적임
A* 알고리즘
- 대표적인 탐색 알고리즘
- 휴리스틱 탐색 알고리즘
- 목적지 탐색이 빠르고 효율적임
- 휴리스틱으로 가이드하여 빠른 탐색
- 적은 수의 셀을 탐색
- 만약 경로가 존재한다면 반드시 찾아냄
- 특정 조건을 만족할 경우, 반드시 해를 찾아냄을 보장함
- 단점
휴리스틱
일정 문제를 해결할 때 쓰이는 특수한 솔루션
- 탐색할 때 휴리스틱을 사용함
- 휴리스틱 함수 h(n)은 n으로부터 목적지까지의 거리를 예측함
휴리스틱 함수의 예 - 맨하탄 거리
맨하탄 거리
격자 구조의 거리를 측정

- 장애물은 생각하지 않아도됨
- 거리만 측정하면 됨
- 휴리스틱 값이 실제 두 지점의 경로와 큰 차이가 나지 않으면 됨
- 실제 거리보다 작게만 예측하면 됨
A* 알고리즘
f(n)=g(n)+h(n)
f(n), 예측 비용
g(n), 시작에서 n까지의 실제 비용
h(n), 휴리스틱
BFS과 A* 알고리즘 비교

공통점
차이점