[Lobsters 요약] 엘든 링의 저기술 AI: 푸시다운 오토마타 기반의 복잡한 행동 구현
10
설명
엘든 링의 NPC 및 보스 AI는 겉보기와 달리 복잡한 알고리즘 대신 '푸시다운 오토마타(Pushdown Automaton)'라는 비교적 단순한 구조를 기반으로 합니다.
이 시스템은 Havok Script로 구현되어 있으며, 'Goal'이라는 상태 스택을 활용하여 동적인 행동 패턴을 생성합니다.
이러한 저기술 접근 방식은 개발자 및 디자이너에게 높은 수준의 제어권을 부여하며, 게임 플레이의 깊이를 더합니다.
### 배경 설명
프롬소프트웨어(FROM SOFTWARE)는 '소울본(Soulsborne)' 시리즈 전반에 걸쳐 다양하고 도전적인 NPC 상호작용으로 명성을 쌓아왔습니다. 엘든 링의 AI 구현은 겉보기와 달리 '저기술(low-tech)' 접근 방식을 채택하고 있다는 점이 흥미롭습니다. AI 로직의 대부분은 Havok Script, 즉 Havok에서 제공하는 게임 개발용 Lua 구현체로 작성되어 있어, 내부 작동 방식을 비교적 쉽게 파악할 수 있습니다. 이 글에서 다루는 내용은 독자적인 연구가 아닌, 이미 추출 및 디컴파일된 코드를 기반으로 한 분석입니다. 이러한 접근 방식은 복잡한 AI 시스템에 대한 일반적인 기대와는 대조적이며, 게임 디자인과 개발의 효율성을 높이는 데 기여합니다. 특히, 2024년 현재에도 많은 게임들이 복잡한 AI 시스템을 추구하는 경향이 있지만, 엘든 링의 사례는 다른 방향으로도 성공적인 결과를 얻을 수 있음을 보여줍니다.
### AI의 핵심: Goal 스택과 푸시다운 오토마타
엘든 링 AI의 핵심은 'Goal'이라는 독자적인 용어로 정의되는 상태입니다. 각 Goal은 매개변수화될 수 있으며 Actor 자체의 데이터에 접근할 수 있습니다. 단순한 유한 상태 기계(FSM)나 계층적 유한 상태 기계(HFSM) 대신, 프롬소프트웨어는 Goal들을 스택 구조로 관리하여 '푸시다운 오토마타(Pushdown Automaton, PDA)'를 구현했습니다. 매 프레임마다 Actor는 Goal 스택의 최상단 Goal을 업데이트합니다. 업데이트된 Goal은 새로운 하위 Goal(Sub-Goal)을 스택에 추가할 수 있으며, 다음 프레임에 가장 위에 있는 Goal이 실행됩니다. Goal의 업데이트 함수는 'Continue', 'Success', 'Failure' 값을 반환하며, Success나 Failure는 해당 Goal을 스택에서 제거합니다. Failure 발생 시에는 해당 Goal을 푸시한 부모 Goal까지 스택이 해제(unwind)될 수 있습니다. 예를 들어, 'CoolBossBattle' Goal이 실행 중 하위 Goal로 여러 'Attack' Goal을 푸시할 수 있으며, 각 Attack Goal은 애니메이션 ID(예: 2)로 매개변수화됩니다. 이 스택 구조는 복잡한 행동 시퀀스를 동적으로 구성하고 관리하는 데 효과적입니다.
### Goal의 활성화(Activate) 및 행동 선택
Goal은 'Activate'라는 콜백 함수를 통해 초기화되고, 하위 Goal이 모두 소진되었을 때 다시 실행됩니다. Activate 함수는 게임 세계 및 Actor의 현재 상황과 무작위성을 조합하여 다음 행동을 결정합니다. 가장 일반적인 방식은 여러 행동(Action, 함수)들 간에 가중치를 부여하여 무작위로 하나를 선택하는 것입니다. 예를 들어, 'CoolBossBattle'의 Activate 함수는 플레이어와의 거리에 따라 'giga_death_ray', 'leap_attack', 'ground_slam', 'light_attack_combo', 'heavy_attack_combo'와 같은 행동 함수들의 가중치를 동적으로 조절합니다. 이러한 가중치 조절은 Actor의 무작위성이나 HP 임계값 등 다양한 요인에 의해 이루어집니다. 'common::battle_activate'와 같은 함수는 이러한 가중치와 행동 함수 목록을 받아 최종 행동을 선택하고 실행합니다. 이 과정에서 애니메이션 ID(AnimId)와 콤보(Combo) 관련 매개변수가 사용되며, 특정 애니메이션의 재사용 쿨다운(cooldown)도 고려됩니다. 이는 단순한 무작위 선택을 넘어선, 상황에 따른 지능적인 행동 결정 메커니즘을 보여줍니다.
### 인터럽트(Interrupt)와 동적 행동 변화
Goal은 'Interrupt'라는 또 다른 중요한 콜백 함수를 통해 외부 이벤트에 즉각적으로 반응할 수 있습니다. 인터럽트는 현재 실행 중인 Goal부터 시작하여 부모 Goal까지 재귀적으로 전파되며, 인터럽트 콜백이 true를 반환하면 해당 인터럽트 처리가 완료됩니다. 예를 들어, 플레이어가 주문을 시전하거나 아이템을 사용하면, 특정 보스(예: Bell Bearing Hunter)는 85% 확률로 현재 행동을 중단하고 즉시 공격을 시작할 수 있습니다. 또한, Actor에 동적으로 설정된 감지 영역(watch regions)을 통해 플레이어가 보스 뒤나 아래로 이동하는 등의 특정 행동을 감지하면 즉시 인터럽트가 발생하여 행동 패턴을 변화시킬 수 있습니다. 이는 플레이어의 전략적인 움직임에 AI가 민첩하게 대응하도록 하여 게임 플레이의 깊이를 더합니다. 'SpecialEffectActivate', 'UseItem', 'Damage'와 같은 다양한 인터럽트 유형이 정의되어 있으며, 이를 통해 AI는 예측 불가능하고 도전적인 반응을 보여줍니다.
### 기타 특징 및 기술 스택
Goal은 고유한 수명(lifetime) 값을 가지며, 이는 특정 상태에 갇히는 것을 방지하는 버그 방지 메커니즘으로 사용됩니다. Actor는 'float' 배열을 통해 데이터를 저장하며, 이는 Goal에서 임의의 인덱스로 읽고 쓸 수 있습니다. 대부분의 AI 로직은 Lua 스크립트로 작성되지만, 'Attack'이나 'MoveToSomewhere'와 같이 핵심적인 Goal은 C++로 구현되어 스크립트의 유연성과 성능 사이의 균형을 맞춥니다. 프롬소프트웨어는 Havok 미들웨어를 적극적으로 활용했으며, Havok Animation Studio(단종), Havok Script(단종), Havok Physics, Havok Navigation(이전 AI) 등을 사용했습니다. AI 스크립트는 '로직 스크립트'와 '배틀 스크립트'로 분리되어 재사용성과 맞춤화를 높였습니다. 레벨 디자이너는 레벨 자체에서 Actor의 'Top Level Goal'을 설정하여, 특정 적을 수동적인 상태로 배치하는 등 유연한 레벨 디자인이 가능합니다. 엘든 링의 AI 시스템은 복잡한 계획 시스템(GOAP, HTN 등)과 달리, 푸시다운 오토마타의 효율성과 디자이너 중심의 제어권을 통해 성공적인 결과를 도출했습니다.
### 가치와 인사이트
엘든 링의 AI 구현은 '저기술' 접근 방식이 어떻게 복잡하고 몰입감 있는 게임 플레이를 만들어낼 수 있는지를 보여주는 훌륭한 사례입니다. 푸시다운 오토마타와 Goal 스택 시스템은 개발자가 AI 행동을 직관적으로 설계하고 제어할 수 있게 하며, 이는 복잡한 AI 시스템을 구축하는 데 드는 시간과 비용을 절감하는 효과를 가져옵니다. 또한, 디자이너와 애니메이터에게 더 많은 권한을 부여함으로써 게임의 전반적인 품질을 향상시킬 수 있습니다. 이러한 접근 방식은 특히 리소스 제약이 있는 프로젝트나 빠른 프로토타이핑이 필요한 경우에 유용할 수 있습니다. Havok 미들웨어의 활용은 당시의 기술적 트렌드를 반영하며, 게임 엔진 및 개발 도구 선택에 대한 시사점을 제공합니다.
### 기술·메타
* **AI 프레임워크:** 푸시다운 오토마타 (Pushdown Automaton)
* **스크립팅 언어:** Havok Script (Lua 구현체)
* **미들웨어:** Havok (Physics, Animation Studio, AI/Navigation)
* **주요 개념:** Goal, Sub-Goal, Activate, Interrupt, Actor Data
* **개발 도구:** Havok Animation Studio (단종)
### 향후 전망
엘든 링의 AI 설계 방식은 향후 게임 개발에서 '복잡성'만이 능사가 아니라는 점을 시사합니다. 앞으로도 유사한 '저기술 고효율' AI 설계 접근 방식이 다른 게임 개발사들에게 영감을 줄 수 있습니다. 특히, AI의 행동을 디자이너가 직접 제어하고 미세 조정하는 방식은 더욱 중요해질 것입니다. Havok 미들웨어의 단종은 프롬소프트웨어가 향후 프로젝트에서 어떤 기술 스택을 선택할지에 대한 궁금증을 자아내지만, 핵심적인 AI 설계 철학은 유지될 가능성이 높습니다. 또한, 플레이어의 행동 패턴 분석을 통해 AI의 반응성을 더욱 정교하게 만드는 연구가 지속될 것으로 예상됩니다. 커뮤니티 차원에서는 이러한 AI 시스템의 분석 및 모딩 도구 개발이 활발히 이루어질 수 있습니다.
📝 원문 및 참고
- Source: Lobsters
- 토론(Lobsters): [lobste.rs](https://lobste.rs/s/fzz7pf/low_tech_ai_elden_ring)
- 원문: [링크 열기](https://nega.tv/posts/low-tech-ai-of-elden-ring.html)
---
출처: Lobsters · [원문 링크](https://nega.tv/posts/low-tech-ai-of-elden-ring.html)
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.