브리타니아에 다시 사람을 — 울티마 온라인 AI 프로젝트 Anima

1998년, 나는 울티마 온라인(Ultima Online)이라는 게임에 빠져 있었다.
지금 돌아보면 그건 게임이라기보다 하나의 세계에 가까웠다. 브리타니아(Britannia)라는 가상 대륙에서 플레이어들은 각자의 삶을 살았다. 대장장이는 광석을 제련해 무기를 만들었고, 재단사는 옷을 지어 팔았다. 집을 짓고, 상점을 열고, 길드를 결성했다. PK(Player Killing)의 공포 속에서 자경단이 조직되었고, 사기꾼을 경고하는 게시판이 운영되었다. 개발사가 설계한 건 규칙의 뼈대뿐이었고, 그 위에 쌓인 사회는 전부 플레이어들이 만든 것이었다.
MMORPG의 원조라고 불리는 이 게임은 "레벨업해서 보스를 잡는" 구조가 아니었다. 스킬 기반 시스템이었다. 검술을 쓰면 검술이 늘고, 광질을 하면 채광 스킬이 올랐다. 캐릭터의 정체성은 클래스가 아니라 어떤 스킬 조합을 키웠느냐에 따라 결정됐다. 그래서 누군가는 순수 대장장이로, 누군가는 마법사 겸 사냥꾼으로, 또 누군가는 도둑으로 살아갔다. 각자의 역할이 맞물리면서 경제가 돌아갔고, 마을에는 생기가 있었다.
그 시절의 브리타니아는 살아있었다.
텅 빈 마을
28년이 지났다. 울티마 온라인 공식 서버는 여전히 운영 중이고, 전 세계에 수많은 프리 서버(사설 서버)가 존재한다. 그 게임에 대한 향수를 가진 사람들은 여전히 많다.
하지만 현실은 달랐다. 프리 서버에 접속해보면 마을은 조용했다. 접속자 수는 줄었고, 남아 있는 플레이어들은 대부분 수년간 플레이해온 베테랑들이다. 신규 유입은 거의 없다. 30대, 40대가 된 과거의 게이머들에게 예전처럼 하루에 몇 시간씩 게임에 투자할 여유는 없다.
문제는 연쇄적이었다. 사람이 줄면 경제가 무너진다. 생산자와 소비자가 부족하면 상점은 비고, 거래는 멈추고, 마을은 텅 빈 시장터가 된다. 울티마 온라인의 마법은 플레이어 간의 상호작용 위에 서 있었는데, 그 토대가 흔들리고 있었다.
접속할 때마다 느끼는 감정은 비슷했다. 브리테인 광장에 혼자 서 있으면, 예전에 이곳이 얼마나 시끌벅적했는지가 떠올랐다.
"만약 AI가 이 세계에 산다면?"
어느 날 문득 이런 생각이 들었다.
매크로와 봇은 울티마 온라인에서 오래전부터 존재해왔다. 하지만 그건 단순 반복 작업의 자동화일 뿐이었다. 정해진 좌표에서 광석을 캐고, 정해진 루트로 이동하고, 정해진 물건을 만드는 기계적인 스크립트.
진짜 캐릭터는 다르다. 아침에 일어나서 작업장으로 걸어가고, 광석을 캐다가 위험한 몬스터를 만나면 도망치고, 마을로 돌아와서 다른 플레이어에게 "저쪽 광산 위험하다"고 알려주는 존재. 길드를 만들어 함께 사냥하고, 원한을 품고, 친구를 기억하는 존재.
이전 글에서 다뤘던 스탠포드의 스몰빌 논문이 보여줬듯이, LLM 기반 에이전트는 이미 자발적으로 파티를 열고, 관계를 형성하고, 사회를 만들어낼 수 있다. 다만 그건 연구진이 직접 만든 간단한 2D 샌드박스 위에서의 일이었다.
울티마 온라인은 다르다. 28년 역사를 가진, 실제 플레이어가 존재하는, 수백 가지 스킬과 복잡한 경제 시스템을 갖춘 세계다. 통제된 실험실이 아니라 살아있는 세계에 AI를 풀어놓는 것이다.
그래서 프로젝트를 시작했다. 이름은 Anima.
8명의 주민
Anima의 첫 번째 원칙은 서버를 수정하지 않는다는 것이었다. 에이전트는 일반 게임 클라이언트와 동일한 패킷 프로토콜로 서버에 접속한다. 서버 입장에서 Anima 에이전트와 인간 플레이어는 구분이 되지 않는다. 이건 공정성의 문제이기도 하고, 프로젝트의 본질이기도 하다. AI가 인간 세계에 살려면 인간과 같은 조건이어야 한다.
현재 8명의 페르소나를 설계해뒀다. 각자 이름, 성격, 말투, 직업, 꿈이 있다.
그림(Grimm)은 무뚝뚝한 광부다. 미녹(Minoc) 근처의 광산에서 일한다. 말이 적고, 생각할 때 끙끙댄다. "오늘 철 맥이 좋다. 무겁고 깨끗해." 같은 말을 한다. 싸움은 안 한다. 싸구려 도구와 금속 낭비를 싫어한다.
뵤른(Bjorn)은 소박한 나무꾼이다. 나무의 결과 질에 대해 이야기하는 걸 좋아한다. "여기 참나무가 좋아. 결이 단단해." 언젠가 마스터 목수가 되는 게 꿈이다.
애니마(Anima)는 방금 브리타니아에 도착한 모험가다. 호기심이 많고, 약간 어수룩하며, 건조한 유머가 있다. "저 건물은 뭐야?", "저거 진짜 검이야? 좀 녹슬어 보이는데." 같은 말을 한다. 돈도 없고 스킬도 없지만, 탐험하고 싶어한다.
엘릭(Elric)은 마법사다. 지적이고 산만하며, 마법에 대해 이야기할 때 흥분한다. 말하다가 중간에 딴 생각을 한다. 시약 가게와 도서관을 좋아한다.
세라(Sera)는 떠돌이 상인이다. 카리스마 있고, 계산적이며, 표면적으로는 항상 친절하다. "당신은 안목이 있어 보이는데, 뭐 좀 보여드릴까?" 같은 말을 한다. 가격과 거래에 늘 관심이 있다.
이 외에도 검을 만드는 대장장이 토르문드(Tormund)**, 노래와 이야기를 좋아하는 음유시인 멜로디(Melody), 숲을 좋아하고 사람을 불편해하는 레인저 애쉬(Ash)**가 있다. 수다스러움도 각기 다르다. 0에서 1 사이의 수치로 정의하는데, 멜로디는 0.8, 애쉬는 0.2. 애쉬의 대표 대사가 "..."인 것도 의도된 성격이다.
이들은 각각 YAML 문서로 정의되어 있다. 성격, 말투, 관심사, 싫어하는 것, 스킬 배분, 활동 비율까지. 인간이 읽어도 이해할 수 있고, LLM도 이해할 수 있는 형식이다.
2주 반, 350커밋
3월 17일에 첫 커밋을 했다. 825줄짜리 설계 문서를 쓰는 것으로 시작했다.
같은 날 오후에 UO 패킷 프로토콜 클라이언트를 구현했다. 서버에 TCP 소켓으로 접속하고, 허프만 디코딩으로 패킷을 해석하고, 로그인 2단계 인증을 통과하는 것까지. 그날 밤에는 A* 경로 탐색과 행동 트리까지 올렸다.
2주 반 만에 350개 이상의 커밋이 쌓였다. 현재 에이전트가 할 수 있는 것들:
- 서버에 접속해서 캐릭터를 생성한다
- 마을을 돌아다니며 NPC와 상호작용한다
- 곡괭이로 광석을 캐고, 용광로에서 제련한다
- 제련한 금속으로 무기나 도구를 제작한다
- 만든 물건을 NPC 상인에게 판다
- 무거우면 은행에 맡긴다
- 도구가 부서지면 새로 만든다
채굴 → 제련 → 제작 → 판매 → 은행 루프가 돌아간다. 간단해 보이지만 각 단계마다 UO 특유의 복잡한 상호작용이 있다. 곡괭이를 더블클릭하면 타겟 커서가 뜨고, 바위 타일을 클릭해야 하고, 저널 메시지에서 "You dig some ore"가 뜰 때까지 기다려야 한다. 제작은 Gump(게임 내 UI 메뉴)를 열고, 버튼을 클릭하고, 결과 메시지를 확인하는 비동기 과정이다.
이 모든 것을 UO의 바이너리 패킷 프로토콜 위에서 구현했다. 서버가 보내는 50종 이상의 패킷을 파싱하고, 허프만 압축을 풀고, 월드 모델을 실시간으로 갱신한다.
아직은 시작일 뿐
솔직히 말하면 아직 갈 길이 멀다.
이동 시스템이 불안정해서 에이전트가 가끔 제자리에 멈춘다. 서버와 클라이언트 사이의 위치 동기화 문제다. 상점 폐점 시간에 들어가려 하거나, 제련소 위치를 못 찾아 헤매기도 한다. 스몰빌의 에이전트들이 닫힌 가게에 들어가고 1인용 화장실에 둘이 들어가는 것과 같은 종류의 문제다. 월드 모델의 한계.
현재 Anima의 의사결정은 대부분 규칙 기반이다. "무게가 85%를 넘으면 제련하러 가라", "도구가 없으면 만들어라" 같은 우선순위 규칙으로 움직인다. LLM은 5% 미만의 복잡한 판단에만 투입된다. "어디서 채굴하는 게 좋을까?", "새로운 스킬을 배울까?" 같은 전략적 결정.
재미있는 기능이 하나 있다. Anima에는 자기 수선(Self-Improvement) 시스템이 붙어 있다. 외부 감시 프로세스가 10분마다 에이전트 로그를 분석하고, 심각한 문제 — 막힌 루프나 반복 실패 패턴 — 가 감지되면 Claude Code를 호출해서 소스 코드를 수정할 수 있다. 수정한 코드는 pytest로 검증하도록 지시하고, 통과하면 커밋하고 재시작한다. 에이전트가 자기 자신을 개선하는 루프.
로드맵은 3단계로 나뉜다. 지금은 1단계 — 기본 생존 루프를 안정화하는 것. 2단계에서는 규칙을 외부 YAML 문서로 빼서 코드 수정 없이 새 행동을 추가할 수 있게 한다. 3단계가 궁극적 목표다. 강화학습과 LLM을 결합해서, 에이전트가 스스로 목표를 세우고, 다른 에이전트나 인간 플레이어와 관계를 맺고, 경제에 참여하는 것.
보고 싶은 장면
이 프로젝트에서 궁극적으로 보고 싶은 장면이 있다.
그림이 광산에서 캐낸 광석을 토르문드의 대장간으로 가져간다. 토르문드는 검을 만들어서 세라에게 넘긴다. 세라는 그 검을 들고 다른 마을로 가서 더 비싼 값에 판다. 멜로디는 주막에서 오늘 있었던 일을 노래로 만들어 부른다. 애쉬는 숲에서 혼자 사냥을 하다가, 가끔 마을에 들러 가죽을 팔고 다시 숲으로 사라진다.
그리고 어느 날, 인간 플레이어가 접속한다. 브리테인 광장에서 세라가 다가와 말을 건다. "안녕, 뭐 좀 보여드릴까?" 그 플레이어는 이 상인이 AI라는 걸 모른다. 아니, 어쩌면 알아도 상관없을지 모른다. 중요한 건 그 세계가 다시 살아있다고 느끼는 것이다.
AI와 인간이 공존하는 세상은 어떤 모습일까. 거창한 철학 논문에서 답을 찾기보다, 28년 된 게임 세계에서 직접 실험해보는 게 내 방식이다. 아직은 시작일 뿐이지만, 광부 그림이 오늘도 묵묵히 곡괭이를 휘두르고 있다.