brunch

ML-Agents로 알아서 학습하는 NPC 만들기

Unity ML-Agents 설치부터 예제 실습까지

by Elice 엘리스

"내 NPC는 왜 항상 뻔하게 움직이는 걸까?"

게임을 개발하다 보면 위와 비슷한 고민에 부딪히게 됩니다. 플레이어는 똑같은 패턴으로 움직이는 NPC를 손쉽게 뚫고 지나가고, 제작자는 같은 테스트를 수십 번 반복하죠. 반복되는 디버깅, 밸런스 조정, 피로감. '이걸 누가 대신해줄 수는 없을까?' 생각한 적 있으시다면, Unity ML-Agents라는 도구를 추천드립니다.




Unity ML-Agents란?


Unity ML-Agents는 유니티(Unity)라는 인기 있는 게임 엔진에 들어가는 오픈소스 플러그인으로, 특히 강화학습 알고리즘을 기반으로 게임 속 캐릭터가 스스로 학습하도록 만들어줍니다. 마치 우리가 강아지에게 ‘앉아’, ‘손’과 같은 명령을 가르치듯이, ML-Agents를 이용하면 게임 속 캐릭터들에게 원하는 행동을 학습시킬 수 있습니다. 예를 들어 점프 타이밍을 잘 맞추면 보상을 주고, 벽에 부딪히면 페널티를 주는 방식으로 AI 에이전트가 직접 시행착오를 거쳐 전략을 습득하게 됩니다.

2505유니티 ml agents.png 출처: 엘리스

설치와 활용 과정도 생각보다 간단합니다. Python 3.10.12 기반의 가상환경을 만들고, 공식 GitHub 저장소에서 ML-Agents를 클론한 후 필요한 패키지를 설치하면 됩니다. 이후 유니티 에디터에서 3D Ball과 같은 예제 환경을 실행하면, 머리 위의 공을 떨어뜨리지 않으려고 애쓰는 큐브 캐릭터를 훈련시킬 수 있습니다.


ML-Agents를 구성하는 세 가지 핵심 축

ML-Agents를 이해하기 위한 기본 구조 정리

첫 번째는 학습 환경입니다. 이건 우리가 흔히 보는 Unity 게임 화면, 즉 씬과 그 안의 모든 게임 캐릭터들을 포함합니다. AI 에이전트가 이 환경 속에서 보고, 행동하고, 배우게 됩니다.

두 번째는 Python API입니다. Python API를 통해 다양한 머신러닝 알고리즘(예: PPO, SAC 등)을 적용해 에이전트의 행동을 학습시킬 수 있습니다.

이 Python API는 세 번째 요소인 외부 통신자를 통해 Unity와 정보를 주고받습니다. 게임 속에서 실제로 움직이고 행동하는 에이전트는 특정 행동을 하도록 지시하는 ‘뇌(Brain)’와 연결됩니다. 이 ‘뇌’는 최신 버전에서는 행동(Behavior)이라고 불리기도 하는데요. 에이전트가 주변 환경을 인식하고, 어떤 행동을 할지 결정하는 역할을 합니다.


ML-Agents의 핵심 학습 방식, 강화 학습

스스로 방법을 터득하는 NPC
unity-ml-agents-reinforcement.png 강화 학습의 기본 구조 다이어그램 / 출처: 엘리스


강화 학습은 에이전트가 시도와 오류를 통해 최적의 행동을 학습하는 방식입니다. 에이전트는 환경과 상호작용하며 행동에 대한 보상 또는 처벌을 받아 누적 보상을 극대화하는 방향으로 학습합니다. Unity ML-Agents는 강화 학습을 적용한 다양한 시뮬레이션을 통해 게임 밸런스를 정밀하게 조정할 수 있게 해줍니다. 게임 개발자들은 이를 통해 반복적인 QA를 줄이고, NPC를 더 똑똑하게 만들 수 있죠. 이 뿐만 아니라 AI 연구자들에게는 실제 환경 기반 실험 플랫폼으로도 활용되고 있으며, 로봇 제어, 자율주행 시뮬레이션에도 적용 가능한 범용성이 큰 툴입니다.




이처럼 Unity ML-Agents는 게임 개발자나 인공 지능의 최전선을 탐구하는 연구자가 Unity 프로젝트에 지능형 에이전트를 통합하기 위한 강력하고 접근 가능한 플랫폼을 제공합니다.

제공된 예제를 활용하면 ML-Agents를 보다 쉽게 시작해볼 수 있으며, 이를 통해 향상시킨 AI 훈련 능력은 게임 및 시뮬레이션에서 역동적이고 적응력 있는 행동을 만드는 데 큰 도움이 됩니다.


게임 속 AI를 직접 학습시킬 수 있는 Unity ML-Agents

실제로 따라 해보고 싶으신가요?


엘리스 엘카데미에서는 Unity ML-Agents 설치부터 예제 실습, 강화학습 개념까지 차근차근 알려드립니다.

▶︎ https://eli.so/unity-ml-agents

글 임형빈 편집 진예지
keyword