AIToolKit: 게임 내 NPC에게 인공지능 기능 제공을 위한 툴킷

PyTorchKR​:fire::kr: :thinking::speech_balloon:

  • 어제 소개해드린 Rosebud AI와 같은 End-to-End로 게임을 만드는 도구 외에, 기존 게임에 구성 요소로 덧붙일 수 있는 도구들 또한 활발하게 연구/개발되고 있는 것 같습니다. 이번에 소개해드리는 AIToolKit 또한 그런 도구들 중 하나로, NPC들에게 인공지능 기능을 제공하는 C++ 도구입니다. (+ MIT 라이선스로 무료 사용 및 수정/재배포 또한 가능합니다.)
  • 기존 게임 개발자들이 AI에 대한 깊은 지식 없이도 활용할 수 있는 것처럼, 다른 분야에서도 AI 활용할 수 있는 도구들이 더 많아지길 기대해봅니다. :pray:
  • 이 글은 GPT 모델로 정리한 것으로, 잘못된 부분이 있을 수 있으니 글 아래쪽의 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:


AIToolKit 소개

AIToolKit은 게임 개발자를 위해 C++로 작성된 라이브러리로, 쉽고 빠르게 게임 내의 NPC(Non-Player Characters)들에게 인공지능 기능을 제공하는 것이 목적입니다. 즉, 게임 개발자가 AI 이론에 대한 깊은 전문 지식 없이도 고급 AI를 구현할 수 있는 접근 가능한 도구 제공하여, NPC의 현실감 있는 행동과 몰입도 높은 게임 경험을 제공하고자 합니다.

주요 기능

행동 트리 (Behavior Trees)

행동 트리는 복잡한 NPC 행동을 구조화하고 관리하는 데 사용되는 방법입니다. 즉, NPC의 결정 과정을 모듈화하고 동적으로 조정하기 위해 사용합니다.

행동 트리는 이름 그대로, 트리 구조를 사용해 각각의 노드가 특정 행동이나 결정을 나타냅니다. 이러한 노드들은 조건에 따라 순차적 또는 선택적으로 실행됩니다. 행동 트리를 사용하여 다양한 상황에 대응하여 NPC의 행동을 동적으로 조정할 수 있습니다. 예를 들어, 적이 근처에 있을 때는 공격하고, 적이 멀리 있을 때는 순찰하는 등의 행동을 설정할 수 있습니다.

유한 상태 기계 (Finite State Machines, FSM)

유한 상태 기계는 NPC의 상태를 관리하기 위해 사용하는 간단하면서도 효과적인 방법입니다. FSM을 사용하면 NPC의 상태(예: 순찰, 공격, 도망)를 관리하고, 상태 간 전환을 처리할 수 있습니다. 이러한 각 상태는 특정 조건에 따라 다른 상태로 전환됩니다. 예를 들어, 적을 발견하면 '대기' 상태에서 '추격' 상태로 전환될 수 있습니다.

목표 지향적 행동 계획 (Goal-Oriented Action Planning, GOAP)

목표 지향적 행동 계획(GOAP)은 NPC가 복잡한 목표를 달성하기 위한 일련의 행동들을 계획하는 방법입니다. 예를 들어, 적을 물리치거나 아이템을 찾는 등의 목표가 주어졌을 때, 이러한 목표를 달성하기 위해 어떠한 행동들을 해야 하는지를 계획합니다. 이러한 동적 의사결정은 게임 환경의 변화에 따라 NPC는 계획을 조정하여 보다 적응적이고 지능적인 행동을 보여줄 수 있습니다.

유틸리티 AI (Utility AI)

유틸리티 AI는 다양한 행동 옵션 사이에서 가장 적절한 것을 선택하는 데 사용합니다. 즉, 각 행동 옵션들에 대해서 '유틸리티' 점수를 할당하고, 가장 높은 점수를 가진 행동을 선택할 수 있도록 계산합니다. 예를 들어, NPC는 위험을 감지하면 도망치거나 공격 중 어떤 행동을 선택할지 결정합니다. 이를 통해 NPC는 상황에 따라 다양한 행동을 선택할 수 있으며, 이는 게임 내에서 더 자연스럽고 예측 불가능한 NPC 행동을 생성합니다.

Header-Only Library의 장점

AIToolKit을 Header-Only 라이브러리로 구현되어 있어, 게임 개발자들은 AI 관련 기능을 게임에 보다 쉽게 통합하고, NPC의 행동을 더욱 현실적이고 동적으로 만들 수 있습니다. 이는 게임의 몰입감과 플레이어의 경험을 크게 향상시킬 수 있는 장점을 제공합니다. 이러한 Header-Only Library는 C++ 프로그래밍에서 사용되는 라이브러리 유형으로, 다음과 같은 여러 장점들이 있습니다:

  1. 설치 및 통합 용이성: 별도의 빌드 또는 컴파일 과정 없이 헤더 파일만 포함시키면 라이브러리를 사용할 수 있습니다. 이는 프로젝트 설정을 간소화합니다.
  2. 이식성: 플랫폼에 구애받지 않고 다양한 시스템에서 사용할 수 있습니다. 별도의 바이너리 파일이 필요하지 않기 때문에 다양한 환경에서 쉽게 사용할 수 있습니다.
  3. 유지 보수의 용이성: 전체 코드가 헤더 파일 내에 있어 코드의 변경 및 유지 보수가 용이합니다. 라이브러리 업데이트 시 새 헤더 파일을 포함시키기만 하면 됩니다.
  4. 템플릿과의 호환성: C++ 템플릿과 잘 호환되어, 제네릭 프로그래밍에 유용합니다.

더 알아보기

AI Toolkit 프로젝트 소개 글

AIToolKit 프로젝트 문서

https://linkdd.github.io/aitoolkit/

AIToolKit GitHbu 저장소

https://github.com/linkdd/aitoolkit




:fire:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 뉴스 발행에 힘이 됩니다~ :star_struck: