1. 개요[편집]
| 유틸리티 AI Utility AI | |
|---|---|
| 별칭 | Utility System, Utility-based AI |
| 분야 | 게임 AI 의사결정 |
| 핵심 발상 | 모든 행동에 효용 점수를 매겨 최고점 선택 |
| 핵심 부품 | 반응 곡선(response curve) |
| 대표 사례 | The Sims, 여러 4X·RPG |
행동 트리가 “무엇을 할지 규칙으로 정한다”면, 유틸리티 AI는 “모든 선택지에 점수를 매기고 제일 높은 걸 한다”.
유틸리티 AI(Utility AI)는 에이전트가 취할 수 있는 각 행동에 상황에 따른 효용 점수(utility) 를 매기고, 매 순간 가장 높은 점수의 행동을 고르는 게임 AI 의사결정 구조다. 행동 트리나 유한 상태 기계가 “이런 조건이면 이 행동”이라는 이산적 규칙으로 행동을 정하는 반면, 유틸리티 AI는 배고픔·위험·거리·체력 같은 여러 요인을 연속적인 점수로 환산해 겨루게 한다. 그래서 “규칙 기반”이 아니라 “점수 기반” 의사결정이라 불린다.1
가장 유명한 사례는 The Sims다. 심(Sim)이 냉장고로 갈지 화장실로 갈지 소파에 앉을지는, 각 대상이 심의 현재 욕구를 얼마나 채워주는지를 점수로 계산해 정해진다. 배고픔이 극에 달하면 음식의 효용이 치솟아 다른 모든 것을 이긴다. 이 “욕구가 행동을 끌어당기는” 감각이 유틸리티 AI의 정수다.
2. 왜 점수인가: 규칙 기반의 한계[편집]
행동 트리와 유한 상태 기계는 강력하지만, 선택지가 많아지고 상황이 미묘해질수록 규칙이 폭발한다. “체력 30% 미만이고, 적이 2명 이상이고, 엄폐물이 5m 안에 있으면 후퇴” 같은 조건을 손으로 다 써 내려가다 보면, 조건들이 겹치고 충돌하며 우선순위를 정하기가 악몽이 된다.
유틸리티 AI는 이 문제를 정성적 규칙을 정량적 점수로 바꿔 푼다. “적이 많으면 후퇴가 좋다”를 이진 조건이 아니라, 적 수에 따라 부드럽게 오르는 후퇴 점수로 표현한다. 여러 요인이 각자 점수에 기여하고, 최종 점수는 그것들의 곱이나 가중합으로 합쳐진다. 그 결과 미리 못 박은 분기 없이도 “적이 좀 많고 체력이 어중간하면 애매하게 후퇴 성향” 같은 연속적이고 뉘앙스 있는 행동이 자연스럽게 나온다. 새 행동을 추가할 때 기존 규칙을 건드릴 필요 없이 점수 함수 하나만 얹으면 된다는 것도 큰 장점이다.
3. 반응 곡선[편집]
유틸리티 AI의 심장은 반응 곡선(response curve)이다. 게임 세계의 원시 입력값(체력, 거리, 탄약 수 등)을 0~1 사이의 정규화된 효용으로 변환하는 함수다.2
예컨대 “적과의 거리”라는 입력을 “공격의 매력도”로 바꾼다고 하자. 너무 멀면 매력이 낮고, 사거리 안이면 높고, 코앞이면 다시 위험해서 낮아지는 종 모양 곡선이 필요하다. 이런 변환을 직선·다항식·로지스틱·지수 곡선 같은 함수로 표현한다. 로지스틱(S자) 곡선의 예:
여기서 은 곡선이 급변하는 임계점, 는 그 가파름이다. 곡선의 모양(선형/역선형/로지스틱/2차)과 기울기·중심·절편만 조절하면, 프로그래머가 아니라 디자이너가 스프레드시트로 AI의 “성격”을 튜닝할 수 있다는 것이 유틸리티 AI의 실무적 매력이다.
각 후보 행동의 최종 점수는 관련된 여러 고려 요소(consideration)의 곡선값을 합치는데, 보통은 곱셈으로 결합한다.
곱셈을 쓰는 이유는 “치명적 조건 하나가 0이면 전체를 0으로” 만들 수 있기 때문이다. 탄약이 0이면 사격의 효용은 다른 요인이 아무리 좋아도 0이 되어야 한다. 다만 요소가 많아질수록 곱이 자꾸 작아지는 편향이 생겨, 요소 개수로 보정(compensation)하는 기법이 함께 쓰인다.
4. 행동 트리·FSM과의 비교[편집]
셋은 경쟁 관계라기보다 서로 다른 도구다.
- 유한 상태 기계 — 상태와 전이가 명확할 때 최고로 직관적. 상태가 늘면 전이가 로 폭발한다.
- 행동 트리 — 우선순위와 절차를 트리 구조로 깔끔하게 조합. 반응성이 좋지만, “왼쪽이 곧 우선순위”라는 이산적 서열을 사람이 정해야 한다.
- 유틸리티 AI — 우선순위를 사람이 정하는 대신 점수가 스스로 정하게 한다. 뉘앙스와 확장성이 강점이지만, “이 NPC가 왜 저 행동을 골랐는가”를 디버깅하기가 가장 어렵다.3
그래서 현업에서는 순수하게 하나만 쓰기보다 섞는다. 큰 골격은 행동 트리로 잡되, “여러 대안 중 지금 뭐가 제일 좋은가”를 판단하는 Selector 자리에 유틸리티 점수를 끼워 넣는 하이브리드가 흔하다. GOAP(목표 지향 행동 계획)와 결합하기도 한다.
5. 장단점과 활용[편집]
강점
- 선택지가 많고 상황이 연속적인 문제(생존 시뮬레이션, 4X 전략 AI, 오픈월드 NPC)에서 강력하다.
- 디자이너가 곡선 파라미터만으로 밸런싱·성격 조정을 할 수 있어 반복(iteration)이 빠르다.
- 예상 못 한 상황에서도 “그럭저럭 합리적인” 행동으로 부드럽게 폴백한다.
약점
- 곡선과 가중치를 잘못 잡으면 AI가 우유부단하게 진동하거나(두 행동이 엎치락뒤치락), 예상 밖 행동을 한다.
- 특정 순간에 왜 그 행동을 골랐는지 추적이 어렵다 — 점수판을 로그로 찍어 노려보는 게 디버깅의 국룰.
- 강한 순서가 있는 절차적 행동(“문 열고 → 들어가고 → 닫기”)은 오히려 행동 트리가 낫다.
The Sims, 여러 4X·전략 게임, 서바이벌 게임의 몹 AI, 그리고 군중 시뮬레이션의 개체 의사결정까지 — “많은 선택지 중 지금 가장 그럴듯한 것”을 골라야 하는 곳이라면 유틸리티 AI가 유력한 후보가 된다.
6. 관련 문서[편집]
7. Footnotes[편집]
-
유틸리티 개념 자체는 경제학·의사결정 이론에서 온 것으로, 각 선택의 “효용”을 정량화해 기대효용을 최대화한다는 발상은 폰 노이만-모겐슈테른 효용이론까지 거슬러 올라간다. 게임 AI는 이 오래된 아이디어를 실시간 NPC 두뇌에 이식한 셈이다. ↩
-
반응 곡선을 게임 AI 세계에 널리 퍼뜨린 것은 데이브 마크(Dave Mark)와 케빈 딜(Kevin Dill)의 GDC 강연 “Improving AI Decision Modeling Through Utility Theory” 계열이다. 그 뒤로 유틸리티 시스템은 IAUS(Infinite Axis Utility System)라는 이름으로 정형화되었다. ↩
-
그래서 유틸리티 AI 개발자는 매 프레임 각 행동의 점수를 화면 한켠에 막대그래프로 띄워 놓고 산다. “왜 얘가 도망 안 치고 벽을 보고 서 있죠?”라는 질문에 답하려면, 결국 그 순간 벽 응시의 점수가 도주보다 0.01 높았다는 걸 눈으로 확인하는 수밖에 없다. ↩