- 고전 게임 동물의 숲(GameCube, 2001) 의 반복적인 대사를 실시간 클라우드 기반 LLM 대화로 바꾸는 프로젝트
- 게임 코드를 수정하지 않고, 메모리 해킹과 공유 메모리(mailbox) 방식을 통해 외부 Python 스크립트와 AI를 연결
- 게임의 텍스트는 단순 문자열이 아닌 특수 제어 코드 언어로 처리되어, 별도의 인코더·디코더를 구현해 해결
- 대사 생성은 Writer(창의적 대사 작성) 와 Director(제어 코드·표현 추가) 로 분리해 품질을 확보
- 결과적으로 마을 주민들이 뉴스, 소문, 풍자까지 반영한 예측 불가한 AI 대화를 펼치며 고전 게임에 새로운 생명력을 부여
-
프로젝트 코드는 GitHub에 공개
문제 정의
- 동물의 숲은 매력적이지만 반복적인 대사로 유명하지만, 23년이 지나도 대사는 변하지 않아, 이를 혁신적으로 바꿀 방법을 고안
- 문제는 GameCube가 485MHz CPU, 24MB RAM, 네트워크 미지원의 폐쇄적 환경이라는 것
- 원본 게임은 코드 수정 없이 그대로 유지해야 했음
- 반복적 대사를 현대 LLM으로 대체하는 브릿지 구축이 목표
첫 단계: 대화 시스템 해킹
- 커뮤니티의 Animal Crossing 디컴파일 덕분에 C 코드 접근 가능
-
m_message.c 파일의 함수 호출을 후킹해 대사 텍스트 교체 성공
- 그러나 외부 AI 데이터를 실시간으로 주고받는 방법이 과제로 남음
메모리 메일박스 방식
- GameCube RAM의 특정 영역을 IPC 메일박스로 활용
- Python 스크립트가 메모리 주소에 직접 쓰기/읽기 → 게임과 AI 간 교신
- 메모리 스캐너를 작성해 화자 이름(0x8129A3EA), 대사 버퍼(0x81298360) 주소 확보
제어 코드 언어
- 단순 문자열 전송 시 게임이 프리징 발생
- 이유: 동물의 숲은 <End Conversation>, <Pause>, <Color Line> 등 제어 코드 기반 언어 사용
- Python으로 인코더/디코더 작성 → 인간 친화적 텍스트 ↔ 게임이 이해하는 바이트 시퀀스 변환
네트워크 대안 검토
- GameCube Broadband Adapter가 존재하지만, Animal Crossing은 네트워크 스택이 없음
- BBA를 쓰려면 네트워킹 스택과 비동기 I/O를 추가해야 하므로 비효율적
- 대신 에뮬레이터 메모리 해킹이 단순하고 안정적이라고 판단
AI 파이프라인
- 초기에는 단일 LLM에 창작과 제어 코드를 모두 책임지게 했으나, 품질 문제가 커서 Writer-Director 분리 전략을 선택
-
Writer: 캐릭터 성격 기반으로 창의적 대사 생성 (팬 위키 데이터 활용)
-
Director: 대사를 읽고 적절한 제어 코드, 표정, 색상, 사운드 삽입
- 이 2단계 LLM 파이프라인은 AI 창의성과 기술적 요구사항을 분리해, 각각의 강점을 살리는 구조임
- 역할 분리 덕분에 안정적인 품질 확보
결과와 확산
의의
-
레트로 콘솔 해킹, AI 통합, 게임 보존이 결합된 실험적 프로젝트
- 2001년 게임에 2025년 AI를 연결하여 세대를 넘는 인터랙션 구현
- 게임은 더 이상 반복적 대화가 아니라, 살아있는 가상 세계로 진화
- 전체 개발 과정/데모 영상: Modern AI in a 24-Year-Old Game