때로는 단순하게
복잡한 게임 AI가 꼭 좋은 AI는 아니다. 복잡한 AI는 생각하는 대로 구현하기 힘들고 예상치 못한 버그도 많이 생긴다.
단순한게 좋은 예
팩맨의 사례를 보자. 팩맨에는 4가지 유령이 존재한다. 각 유령의 타겟은 다음과 같다.
- Blinky(빨강) : 플레이어의 위치를 쫓아감
- Pinky(핑크색) : 플레이어가 보는 방향의 사각형 4칸을 쫓아감.
- Inky(청록색) : 플레이어와의 거리를 사용하여 쫓아감
- Clyde(주황색) : 플레이어가 멀면 플레이어를 쫓아가고, 가까우면 게임 맵의 구석으로 감.
유령들의 목적지를 정하는 코드는 한두줄이면 된다. 그러나 이런 4가지의 간단한 AI들이 합쳐져 플레이어에게 훌륭한 경험을 제공한다. 그 예로 팩맨을 리뷰하는 플레이어들은 유령들이 자신에게 덫을 놓고, 포위하는 등 뛰어난 전략을 사용한다고 말한다.
팩맨처럼 단순한 AI로도 충분히 좋아보이는 게임 AI를 만들 수 있다.
인식의 창
게임 캐릭터의 AI는 게임속 캐릭터의 목적과 게임 플레이어들의 관심(기대)에 부응해야 한다.
예를 들어, 한 경비원이 어두운 방 안에서 소리를 들었다. 플레이어는 '경비원이 불을 켜고 소리가 난 곳을 확인하러 갈 것이다.' 라고 생각한다. 만약 경비원이 이렇게 행동하지 않으면 플레이어는 AI가 멍청하다고 생각할 것이다.
이번에는 매우 똑똑한 경비원을 생각해보자. 만약 `플레이어가 자신을 유인하기 위해 일부러 소리를 내지 않았을까?` 라고 생각하여 일부러 소리가 난 곳의 반대편을 순찰하는 경비가 있다면 플레이어는 이 AI를 똑똑하다고 생각할까? 아니다. 플레이어는 저런 사실을 알기 어려우니 AI가 고장났다고 생각한다.
이처럼 부수적인 캐릭터에 AI를 필요 이상으로 추가하는 것은 별로다. 오직 몇몇만이 오랜 관찰과 분석 끝에 경비원 AI가 사실 똑똑했음을 알아 줄 뿐이지 대부분의 플레이어는 AI코드를 잘못 짯다고 생각 할 것이다.
게임 AI의 종류
게임 AI는 3가지로 나눠볼 수 있다. Hack, Heuristic, Algorithm.
Hacks
이걸 한국어로 뭐라하지.. `꼼수`?? 아무튼 원문에는 ad-hoc solution이라고 되어 있다. 다음 말을 들으면 감이 온다.
물고기 처럼 생겼고, 물고기처럼 헤엄치면 그것은 아마도 물고기다.
즉, 안에서 내부적으로 무슨 일이 일어나고 있든지 간에 보기에 괜찮으면 된다는 것이다. 보통은 감정에 대한 구현이 그런데, 감정에 대한 AI를 구현하느니 그냥 화가나거나 슬픈 애니메이션 몇 개 틀어주면 되는 그런 것...
Heuristic
휴리스틱이란 경험의 법칙이다. 즉, 대부분의 상황에 먹히는 보편적인 원칙이라고 할 수 있다. 휴리스틱은 때로 점수로도 나타낼 수 있다. 예를 들어 체스의 경우 기물 별로 점수들이 매겨져 있는데 이것은 해당 기물의 보편적 가치 - 즉, 휴리스틱 - 이라고 할 수 있다.
보편적인 휴리스틱
가장 제한된 것을 고르자
여러 선택지 중에서 가장 경우의 수가 없는 선택을 먼저 선택하는 것. 예를 들어, 상대방에 마법 데미지로만 피해를 입는 유닛이 있고, 우리 팀에는 마법사가 한 명이라면 우선 마법사가 마법 데미지만 입는 적을 공격하게 하는 것이다.
가장 어려운 것을 먼저 하자
병력을 구성하는데 10원짜리 고블린과 100원짜리 오우거가 있다고 치자. 이 때, 만약 오우거를 살 수 있으면 오우거를 먼저 사는 것이다. 왜냐면 오우거를 살 수 있을만큼 돈이 있을 경우가 더 적을 태니까. (앞서 가장 제한된 것을 고르는 것과 비슷한 듯)
가장 유망한 것을 먼저 하자
랜덤하게 하는거보다 훨씬 낫다. (Astar 알고리즘의 휴리스틱이 이 경우라고 볼 수 있을 듯)
Algorithm
Hack과 Heuristic 으로는 대부분의 경우 충분하지만 (그리고 알고리즘보다 더 낫지만), 알고리즘이 필요한 경우가 있다.
참고 : Ian Millington, AI for GAMES 3rd edition, CRC press, [10~14p]
'Game AI' 카테고리의 다른 글
Game AI - Steering Behaviors (3) (1) | 2021.10.03 |
---|---|
Game AI - Steering Behaviors (2) (1) | 2021.08.07 |
Game AI - Steering Behaviors (1) (4) | 2021.06.19 |
Game AI - Kinematic movement alogrithms (2) | 2021.06.13 |
게임 AI의 모델 (0) | 2021.05.24 |