[2025-06-24 TIL]나만의 '언리얼 AI 에이전트' 구축기

별빛에소원을·2025년 6월 24일

TeamSparta-Unreal1기-TIL

목록 보기
90/90
post-thumbnail

💡 3줄 요약
Unreal Engine 개발 생산성을 높이기 위해, 로컬 LLM을 기반으로 에디터를 직접 제어하는 'AI 에이전트' 프로젝트를 시작했습니다.
Ollama로 LLM을 구동하고, ChromaDB로 RAG의 지식 베이스를 구축하며, FastAPI를 언리얼에 내장시켜 이 모든 것을 연결하는 아키텍처를 설계했습니다.
이 시스템을 통해 자연어 명령만으로 언리얼 에디터의 오브젝트를 생성하거나 코드를 실행하는 '미래의 개발 환경'을 구축하고자 합니다.


🤔 왜 'Unreal AI 에이전트'인가? (The 'Why')

Unreal Engine의 방대한 기능 앞에서, 우리는 종종 "그 기능 어디 있더라?" 하며 문서와 웹을 헤매는 데 많은 시간을 소비합니다. 저는 이 과정을 단축하고 개발에만 집중하고 싶었습니다.

단순히 질문에 답하는 챗봇을 넘어, 내 컴퓨터의 문서와 노트를 기반으로 답을 찾고(RAG), 그 답을 바탕으로 언리얼 에디터에 직접 명령을 내리는(Agent) 시스템을 구상하게 되었습니다.

"파란색 머티리얼을 가진 큐브 하나 만들어줘."

이런 자연어 한마디가 실제 에디터에 반영되는 것, 이것이 이 프로젝트의 최종 목표입니다.


💻 아키텍처 설계: 전체 시스템 흐름도

UI(인터페이스)는 아직 미정이지만, 그를 제외한 핵심 백엔드와 에이전트 시스템의 전체 흐름은 다음과 같이 설계했습니다.
1. Client: 사용자가 명령을 입력하는 인터페이스입니다. (현재는 테스트용 스크립트로 대체)
2. FastAPI Server in Unreal: UnrealGenAISupport 플러그인에서 영감을 얻어, 언리얼 파이썬 플러그인 환경에서 FastAPI 웹 서버를 실행합니다. 외부의 HTTP 요청을 받는 관문 역할을 합니다.
3. ChromaDB: 로컬 벡터 데이터베이스입니다. 언리얼 문서, 개인 노트 등을 벡터로 변환하여 저장합니다. (RAG의 'Retrieval' 담당)
4. Ollama: 로컬 LLM 서버입니다. ChromaDB에서 검색된 관련 정보를 바탕으로 사용자의 명령을 해석하고, 실행 가능한 Python 코드를 생성합니다. (RAG의 'Generation' 담당)
5. Unreal Python API: Ollama가 생성한 코드를 실제로 언리얼 에디터에서 실행하여 액터를 생성하거나 프로퍼티를 변경합니다. (Agent의 'Execution' 담당)


🛠️ 핵심 기술 스택

  • AI & RAG: Ollama, ChromaDB, EEVE (Korean LLM Model)
  • Unreal-AI Bridge: FastAPI
  • Unreal Control: Python Editor Script Plugin

🤯 예상되는 핵심 과제와 고민들

이 아키텍처를 구현하기 위해 다음과 같은 기술적 과제들을 해결해야 합니다.

  1. 언리얼 생명주기 안에서 안정적인 FastAPI 서버 운영: 언리얼 에디터가 시작될 때 서버를 켜고, 종료될 때 깔끔하게 닫는 등 에디터의 생명주기와 서버의 생명주기를 동기화해야 합니다.
  2. 효율적인 RAG 파이프라인 구축: 문서를 어떻게 잘게 쪼개고(Chunking), 어떤 임베딩 모델을 사용해 벡터로 변환할지, 그리고 어떻게 하면 가장 정확한 문서를 검색할지 등 RAG 전체 파이프라인의 성능을 최적화해야 합니다.
  3. 보안 및 API 설계: FastAPI 서버의 엔드포인트(/ask, /execute 등)를 어떻게 설계할지, 그리고 외부에서 아무나 내 언리얼 에디터를 조종할 수 없도록 간단한 인증(API Key 등)을 어떻게 추가할지 고민해야 합니다.

✨ 느낀 점과 다음 계획 (Reflection & Next Step)

이번 설계를 통해, 단순히 아이디어를 구상하는 것을 넘어 실제 구현 가능한 청사진을 그리는 경험을 했습니다. 특히 UnrealGenAISupport와 같은 오픈소스 레퍼런스를 분석하고, ChromaDB와 같은 구체적인 기술을 선택하며 프로젝트의 실현 가능성을 크게 높일 수 있었습니다.

🏁 Next Step

이제 탄탄한 설계도를 바탕으로, 실제 구현에 착수합니다.

  1. 1단계 (Bridge 구축): 언리얼 프로젝트에 파이썬 플러그인을 설정하고, 그 안에서 기본적인 FastAPI 서버가 뜨는지 확인합니다.
  2. 2단계 (RAG 연동): 간단한 텍스트 파일 몇 개를 ChromaDB에 저장하고, FastAPI 엔드포인트를 통해 해당 내용을 검색해오는 기능을 구현합니다.
  3. 3단계 (Agent 실행): FastAPI 엔드포인트로 "spawn_cube" 같은 요청을 보냈을 때, 실제로 언리얼 에디터에 큐브가 생성되는 최종 목표를 달성합니다.

참고한 오픈소스 프로젝트: prajwalshettydev/UnrealGenAISupport

"AI로 내 개발 환경을 직접 조작하는 상상, 이제 코드로 현실로 만들어볼 시간입니다. 앞으로의 개발 과정도 꾸준히 기록하며 공유하겠습니다."

profile
취미로 게임하는사람

0개의 댓글