22P by GN⁺ 8시간전 | ★ favorite | 댓글 5개
  • 고전 게임 동물의 숲(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

Tom Nook은 게임 내 '너굴' 캐릭터입니다

예전 도스시절 울티마를 이렇게 만들어주면 재미나겠다는 생각만..

너무너무 재밌는 프로젝트네요

이건 진짜 geek 하네요!

Hacker News 의견
  • 여기 Animal Crossing LLM 모드의 코드 링크를 공유함 github.com/vuciv/animal-crossing-llm-mod 그리고 LLM이 게임 대사를 가로채서 어떻게 응답을 생성할 때까지 게임이 일시정지 상태로 유지되는지 궁금해서 gitingest.com로 4만 토큰을 Claude Opus 4.1에 덤프해서 직접 물어봄 claude.ai에서 공유한 답변 핵심은 watch_dialogue() 함수가 0.1초마다 폴링하면서 임시 텍스트로 응답해줌 구체적인 코드 위치 참고 실제로 유저에겐 "A를 눌러 계속" 버튼이 표시되고, LLM 응답이 그때까지 나와있기를 기대하는 형태임

    • 이 해킹 방법이 진짜 Goblin Mode라고 생각함 메모리 스캐너 자체도 Python으로 쓰여서 확실히 LLM이 만든 듯한 느낌, 그리고 이 사람이 게임을 해킹하는 방식도 클래식한 리버스 엔지니어보다는 진짜 강력한 도구를 갖춘 사람이 시도한 모습임 괜히 이분께 비난하는 건 아님, 솔직히 이런 게 지금 LLM 덕분에 진짜 가능해짐 Ghidra를 쓸 줄 모르는 사람도 쉽게 도전해볼 수 있음 그리고 실제로 Gamecube에는 거의 사용되지 않았던 네트워크용 주변기기가 있었는데, 나도 Phantasy Star Online Episode 1&2 때문에 그걸 쓴 경험이 있음 Broadband Adapter에 관한 위키
  • 더 자세한 노트는 내 블로그에 정리해 놨음 simonwillison.net의 작성글

  • 마을 주민들에게 ‘생각’을 부여했더니 제일 먼저 하고 싶은 일이 Tom Nook을 전복하는 거라니 너무 웃김 이게 Gamecube 에뮬레이터에서 되면, Switch 에뮬레이터에서도 분명히 구현 가능할 듯한 기대감이 있음

    • 나도 Animal Crossing New Horizons 버전으로 시도해보고 싶다는 생각 있음

    • 나도 Tom Nook을 전복하고 싶음 Tom Nook은 널 가두고, 그 마을의 모든 주민을 끝없는 빚의 굴레로 몰아넣고, 그를 만족시키려면 수백만 벨이 필요함

    • Tom Nook이 마피아 보스처럼 마을 전체를 장악하고 있다는 점을 볼 때 아무도 그들의 반란을 탓할 수 없다고 생각함

    • Switch 버전에서 하려면 동물의 숲 게임 코드를 디컴파일해야 함 그리고 요즘 DRM은 Gamecube 시절보다 훨씬 더 강력해졌음 이론적으론 가능하지만 직접 구현해보려면 엄청난 수고가 필요할 것 같음

    • LLM은 대부분 Reddit을 기반으로 학습함 그리고 "Tom Nook은 자본주의 독재자다"라는 퀴프는 Reddit 밈임 많은 LLM의 반응들은 사실 ‘생각’보다는 Reddit 유머나 의견의 반복이 더 가까움

  • 이런 사용법은 정말 멋지다고 생각함 앞으로 게임에서 LLM 기반의 NPC가 나오길 제일 기대하고 있음 같은 대사를 반복해서 듣는 건 몰입을 깨는 최대 요소 중 하나임

    • 솔직히 이런 방식이 실제로 얼마나 유용할지 잘 모르겠음! NPC가 똑같은 말을 반복할 때가 사실 유저로서 “이제 대화 끝났다”는 신호이기도 함 멋진 용도도 분명 있겠지만 반복 대사가 사실상 하나의 ‘기능’이기도 함 이게 어떻게 흘러가는지 지켜봐야겠음 xD

    • 이미 작은 게임들이나 Skyrim의 대형 모드에서도 이런 시도가 보임 그중 Skyrim 모드를 가지고 좀 놀아봤는데, 해결해야 할 이슈들이 많음 우선 LLM을 만들려면 엄청난 양의 텍스트 학습이 필요하며, 특정 내용을 사후적으로 지우는 것이 매우 어려움 유저가 AI랑 스카이림 ‘역할놀이’만 잘 해도 그럭저럭 맞아떨어지지만, 의료계 이슈나 유명인사(예시: Taylor Swift, Fox News)까지 NPC가 언급해버림 현행 LLM으론 이건 거의 해결 불가임 그리고 LLM들이 게임이 처리 불가능한 ‘약속’을 하기도 함 예를 들어 NPC가 "나 어제 이 던전 다녀왔어"라고 그럴싸하게 말하지만, 실제로 그런 지명이나 이벤트는 게임에 존재하지 않음 이 부분도 현행 LLM으론 해결이 안 되는 영역임 이런 부분까지 매끄럽게 경험하려면 AI 자체가 한 세대 더 발전해야 가능하다고 생각함 Mantella 모드는 재미있지만, 지금 이 상태로 정식 제품으로 대량 보급하긴 어려움

    • 이미 로컬 LLM만으로도 이런 정도는 충분히 구현 가능하다고 생각함 다만 LLM 추론에 GPU가 바쁘다는 점이 이슈가 될 수 있지만, 극복 못 할 문제는 아님 스토리의 주요 진행엔 이런 걸 쓰고 싶지 않겠지만, 가벼운 NPC 대화나 RPG 시나리오 같은 데선 정말 잘 어울린다고 생각함 그리고 싱글플레이 게임이 원격 추론(cloud inference)에 의존하는 건 선호하지 않음, 그런 건 서비스가 종료되면 게임 자체가 안 돌아감

    • LLM 기반 NPC에 푹 빠진 유저가 MMORPG에서 12시간씩 골드 파밍하면서 AI 여자친구와 연애하는 ‘게임 중독+AI 환각’ 현상도 곧 현실화될 듯한 상상임

    • 나도 원래 똑같은 대사 반복이 싫었는데, 스카이림에서 “무릎에 화살을 맞기 전까지”였음

  • LLM을 모딩 도구로 활용해서 가상 공간에 새로운 의미를 부여하는 아이디어가 아주 흥미로움 이런 접근법이 Unity Hawk 같은 플런더루딕(plunderludic) 도구와 비슷해서 예술적 개입에도 적합할 거라고 생각함 참고용 링크: Unity Hawk 소개

  • 옛날 게임에 새로운 생명을 불어넣는 건 언제나 흥미진진하고 즐거운 느낌임 Animal Crossing 코드베이스가 가독성 있는 C 코드로 디컴파일되었다는 것도 매우 흥미로움 이렇게 맘껏 만질 수 있는 기회가 많아졌음

    • 요즘 Ocarina of Time 모딩 씬도 엄청 커지고 있다는 점을 알려주고 싶음 관심 있는 사람에게 추천함
  • 공유 메모리를 해킹해서 구현하는 방식을 찾아낸 건 정말 훌륭함 엔지니어링적으로도 엄청난 시간 절약이고 바로 이렇게 정확한 지점에 때린다는 게 전문가의 진짜 실력임, “망치를 잡는 데 10달러, 기계를 제대로 때리는 법을 아는 데 5천달러”라는 비유가 딱 맞음

    • 기술적으로 질문이 있는데, 그 메모리 주소가 안정적이라는 보장은 어떠한 메커니즘인지 궁금함 게임에서 항상 똑같은 순서로 메모리 할당이 일어난다는 조건임?

    • 이런 공유 메모리 방식은 멀티플레이 랜덤라이저에서도 꽤 자주 쓰임 일반적으로는 더 작은 영역을 쓰지만, 에뮬레이터와 네트워크(혹은 플래시카트 FXPakPro와 네트워크) 사이에 메시지 버퍼로 scratch memory를 활용함 매우 유용한 패턴임

  • 각 캐릭터마다 이런 에이전시(agency)를 부여했을 때, 그들이 ‘세상을 어떻게 생각하는가’가 자연스럽게 생성되는 건 정말 흥미로움 LLM이 어느 정도 수준까지 이런 역할을 해낼 수 있는지에 따라 가상의 설정에 진짜 사람들이 어떻게 행동할지 가늠해볼 수 있는 신기한 실험임

  • 뭔가 빼먹는 부분이 있는지 모르겠지만, 이 방식은 실제로 게임 내 이벤트에 반응하는 거 없이 그냥 텍스트만 생성하는 것 아닌지? 오프라인이나 배치 프로세스로도 충분히 똑같은 텍스트 생성이 가능해 보임 실시간 LLM 추론은 신기하긴 한데 꼭 필요하거나 중요해 보이지 않음 폴링 대신 lookup table을 쓰면 훨씬 단순하고 성능도 개선될 듯함

    • 영상에서 스크린샷도 같이 입력해서, 현재 위치에 맞는 단서도 대화에 포함될 수 있게 만듦
  • “Nintendo GameCube는 24년된 콘솔로 485MHz PowerPC CPU, 24MB 램, 그리고 네트워크가 없다”고 했지만 실제론 공식적으로 Broadband Adapter라는 이더넷 주변기기가 있었음 지원 게임은 몇 개 안 되고, Phantasy Star Online도 포함되어 있었음 PC에 연결해서 게임이나 롬을 스트리밍한 경험도 있음, 방법은 메모리 취약점을 활용해서 네트워크로 코드를 올리는 방식이었고, 로딩 속도는 디스크보다 느렸음

    • 기사에서도 이 점이 언급되어 있음: “GameCube에는 공식 Broadband Adapter가 있었지만, Animal Crossing은 네트워크 관련 코드를 전혀 포함하지 않고 출시됐음. BBA를 활용하려면 직접 간이 네트워킹 스택을 만들어야 하고, 게임 엔진 콜사이트 후킹, 비동기 입출력 스케줄링, 재시도/타임아웃 처리 등 예상치 못한 네트워크 환경에서 내부 코드를 고쳐야 한다는 의미임”
  • 예전에 연구 프로젝트에서 로컬라이즈된 문자열을 바꿔넣어 The Sims나 Grim Fandango를 언어 학습용 게임으로 변환한 사례가 있었음 이제는 대화 내용이 맥락 맞고 숙련자에 맞춰 조정되는 생성형 생성 대화가 언어 학습에 아주 강력한 킬러앱이 될 수 있을 거라고 생각함

    • 이거 진짜 기대됨 누구나 외국어를 배우길 원하지만 지루한 공부는 싫어함 만약 내가 Grim Fandango를 하면서 “Morte가 무슨 뜻이야?”라고 직접 AI에게 묻고, LLM이 실시간으로 튜터해준다면 돈 내고 쓸 의지가 있음 지루해지면 그냥 다시 게임하면 되고, 내가 이미 아는 단어 목록을 AI에 넘겨주면, AI가 점진적으로 단어와 문장을 늘려서 자연스럽게 학습 경험을 제공할 수도 있음

    • 이미 Duolingo도 AI를 적극적으로 활용하기 시작했음