riftbound-agent · AGPL-3.0 오픈소스
이 페이지는 영어 원문을 기계 번역한 것입니다. 어색하게 읽히는 부분이 있다면 영어 원문이 기준입니다.

AGPL-3.0 라이선스 오픈소스

트레이딩 카드 게임의 반응 타이밍을 이해하도록 AI를 가르친 사람은 아직 없습니다. 저희가 시도하고 있습니다.

카드 게임 AI에 대한 공개 연구는 대부분 상대가 내 턴에 개입할 수 있게 되는 지점에서 멈춥니다. 이 프로젝트는 그 이후, 범위를 제한한 버전을 만들고 있으며, 모든 코드가 공개되어 있어 한 줄 한 줄 확인할 수 있습니다.

왜 어려운가, 그리고 왜 거의 아무도 하지 않았는가

보드게임은 완전 정보 게임입니다. 판이 테이블 위에 그대로 있으니 탐색이 가능합니다. 카드 게임은 첫 수부터 이 전제를 깨뜨립니다. 덱은 무작위이고 상대의 패는 보이지 않아서, '현재 상황'이 하나로 정해지지 않습니다.

두 번째 장벽이 어떤 게임이 실제로 풀리는지를 가릅니다. 바로 상대가 내 턴에 개입할 수 있는가입니다. 하스스톤은 공개 연구가 가장 멀리 나아간 사례인데, 카드 풀이 작다는 것은 부차적인 이유입니다. 진짜 이유는 내 턴 동안 상대가 행동할 여지가 거의 없다는 점입니다. 덕분에 한 턴이 닫힌 순서가 되어 끝까지 탐색할 수 있습니다. 그런 하스스톤조차 연구는 출시된 클라이언트 위에서 돌아가지 않고, 커뮤니티가 다시 구현한 엔진 위에서 돌아갑니다. 누군가 먼저 규칙을 프로그램으로 옮겨야 발 디딜 곳이 생기며, 이는 이 목록의 모든 게임에 해당합니다.

규칙을 프로그램으로 옮기는 시도가 가장 큰 규모로 이루어진 곳이 매직 더 개더링이고, 그 결과는 정확히 말할 가치가 있습니다. 2016년 Google DeepMind는 Latent Predictor Networks for Code Generation을 발표했습니다. 이 논문의 벤치마크 과제가 정확히 그것이었습니다. 카드에 인쇄된 텍스트를 읽고, 그 카드를 구현하는 코드를 생성하는 것. 학습 대상은 실제 엔진이었습니다. Java로 된 XMage에서 가져온 매직 카드 11,969장, Python으로 된 hearthbreaker에서 가져온 하스스톤 카드 533장입니다. 가장 좋은 모델이 매직 카드를 완전히 정확하게 만들어낸 비율은 4.8%였습니다. 반면 BLEU 점수는 61.4였습니다. 즉 그 모델이 쓴 코드는 썼어야 할 코드와 상당히 비슷해 보였다는 뜻입니다. 이 두 숫자가 나란히 있는 것이 문제의 전부입니다. 그럴듯한 것과 옳은 것은 다른 성질이고, 실제로 돌아가는 것은 하나뿐입니다.

그게 10년 전 일이고, 그 이후로 이 격차가 메워졌다고 주장한 연구는 없습니다. 지금 존재하는 것은 모두 사람이 손으로 쓰고 커뮤니티가 유지보수하는 것들입니다. 매직 쪽에는 XMage와 Forge가 있고, 유희왕에는 ygo-agent가 있지만 그것이 학습할 수 있는 이유는 그 아래에 ygopro-core가 있기 때문입니다. 두 게임에 대한 최근 벤치마크인 MTG-Causal-RL과 PTCG-Bench는 모두 LLM 에이전트가 0이 아닌 성과를 낼 수 있음을 보여주지만, 안정적으로 잘한다는 것을 보여주지는 못했습니다. 둘 다 제한된 아키타입 집합을 고정된 관측 공간에 넣고 방법론을 비교하는 연구용 벤치마크일 뿐, 스스로 대국할 수 있는 세계는 아닙니다.

Riftbound는 어려운 쪽에 속합니다. 체인이 있고, 우선권과 포커스가 넘어가며, 반응 타이밍이 있고, 상대의 행동 사이에서 상황이 계속 바뀝니다. 시도는 있었습니다. 트리 서치를 연결한 공개된 Riftbound 시뮬레이터가 적어도 하나 있고, 체인 해결을 피하지 않고 정면으로 다룹니다.

이들 모두에게 없는 것은 적합성 테스트 스위트입니다. 구현된 타이밍이 규칙이 설명하는 타이밍과 조항 단위로 일치하는지 확인하고, 어떤 부분이 아예 구현되지 않았는지 명시할 방법 말입니다. 이것이 없으면 '불법'과 '모델링되지 않음'은 같은 답이 됩니다. 플레이 입장에서는 상관없습니다. 둘 다 할 수 없다는 뜻이니까요. 하지만 이 환경에서 학습하거나 이를 증거로 인용하려는 무언가에게는, 결과와 추측의 차이입니다.

그러니 장벽은 모델이 충분히 똑똑하지 않아서가 아니었습니다. 장벽은 누군가 먼저 규칙을 프로그램으로 옮겨야 한다는 것입니다. 2016년 이후 달라진 것은 그 일을 누가 하느냐입니다. 이 페이지가 설명하는 규칙 커널은 사람이 한 줄씩 손으로 쓴 것이 아닙니다. 언어 모델 에이전트가 쓰고, 사람이 검토했으며, 공식 조항 번호에 묶인 적합성 스위트가 받아냈습니다. 그것이 바로 DeepMind가 2016년에 세운 과제이며, 다만 일회성 벤치마크가 아니라 평범한 엔지니어링으로 돌아가고 있을 뿐입니다. 그리고 당시의 exact-match 자리를 대신하는 것이 이 스위트입니다. Riftbound에는 정답을 맞춰볼 권위 있는 구현이 없기 때문에 이 점이 특히 중요합니다.

나머지 절반의 변화는 목표가 더 이상 2만 장일 필요가 없다는 것입니다. Riftbound는 매직의 구조 — 체인, 우선권, 반응 타이밍 — 를 그대로 물려받아 어려운 메커니즘은 하나도 빠지지 않았지만, 인쇄된 카드 풀은 그 일부에 불과합니다. 끝낼 수 있을 만큼 작고, 끝내는 일이 의미를 가질 만큼 구조를 갖췄습니다.

베팅: 범위를 제한하고, '모른다'고 말할 수 있게 하기

모든 카드를 모델링할 필요는 없습니다. 실제로 한 포맷은 발매된 카드 중 일부에만 의존하며, 이를 정직하게 공학적으로 번역하면 범위를 제한하는 것입니다. 실제로 도달하는 메커니즘만 구현하고 나머지는 모델링되지 않음으로 표시합니다.

이는 단 하나의 조건 아래에서만 작동합니다. 시스템이 unsupported라고 답할 수 있어야 하고, 그 답이 숨겨진 실패가 아니라 정식 결과로 취급되어야 합니다. 답을 보류하는 것을 덮어야 할 문제로 취급하는 순간, 제한된 범위는 조용히 모든 것을 다루는 척하는 시스템이 되어버리고, 이는 아예 만들지 않는 것보다 나쁩니다.

그래서 역할 분담은 고정되어 있습니다. 프로그램이 기계적 층을 소유하고, 모델은 그것이 남긴 공간 안에서만 추론합니다. 규칙을 모델이 읽을 수 있는 프롬프트로 번역하는 것이 아니라, 규칙을 실제로 실행해서 모델이 빠져나갈 수 없는 공간을 만드는 것입니다.

지금 정확히 어디까지 왔는가

위에서 말한 목표는 온전한 크기로 서술한 것입니다. 이 부분은 정확하게 서술한 것이고, 둘은 같지 않습니다. 여기 있는 모든 문장은 저장소의 적합성 테스트 스위트로 검증됩니다. 스위트가 바뀌면 이 페이지는 틀린 것입니다.

애초에 커널을 만들게 된 이유

3 / 46 실전 플레이와 대조한 감사에서 수정 없이 살아남은 전설 분석. 이 감사는 커널이 존재하기 전에 진행되었습니다.

이 프로젝트는 파생된 지식 베이스로 시작했습니다. 모든 항목은 다른 사람의 가이드를 요약한 것이 아니라 카드 텍스트와 게임 메커니즘에서 직접 작성되었으며, 이는 항목을 다시 만드는 비용을 낮추지만 그 자체로는 검증되지 않은 상태였습니다. 그래서 46개 전부를 정립된 플레이와 대조해 검증했고, 그중 3개는 수정이 필요 없었습니다.

가장 유용했던 발견은 전설과는 아예 관계가 없었습니다. 금지 카드 대체 로직이 모든 플레이어에게 조건 없이 룬을 주는 카드를, 포인트를 점유한 쪽에게만 지급하는 카드로 바꿔치기했습니다. 같은 도메인, 같은 비용, 완전히 합법적인 대체였지만, 이 덱은 초반 필드를 의도적으로 포기하고 템포를 얻는 덱이었기 때문에 이 교체는 오히려 상대에게 자원을 대주는 셈이었습니다. 이 문제를 발견한 것은 프로젝트 외부의 플레이어였고, 내부 점검이 아니었습니다.

그 감사가 바로 커널이 존재하는 이유입니다. 카드 텍스트에서 도출한 내용은 그 자체로는 타당합니다. 하지만 질문이 이 덱이 실제로 무엇을 하려는가, 혹은 지금 기계적으로 무엇이 합법인가로 바뀌는 순간 더 이상 버티지 못하며, 그 기계적인 절반은 도출할 수 없고 오직 실행해야만 알 수 있습니다.

우리가 겨냥하는 지점

바둑 AI가 투자할 가치가 있었던 이유는 모든 인간을 이기기 때문입니다. 트레이딩 카드 게임은 그런 형태가 아니며, 초인간적인 플레이어를 만든다 해도 큰 가치는 없을 것입니다. 여기서 겨냥하는 지점은 의도적으로 다르고, 나름의 방식으로 더 어렵습니다.

사람을 이기는 것이 아니라 제대로 가르치는 것입니다. 덱이 무엇을 하는지 설명하고, 그 주장의 근거를 보여주고, 정말로 모르는 지점에서는 멈추는 것입니다.

플레이를 배우는 것은 오히려 쉬운 절반이었습니다. 어려운 절반은 덱을 짜고, 포맷을 읽고, 카드가 금지됐을 때 무엇으로 바꿔야 하는지 아는 것이며, 바로 이 지점에서 우리 자신의 대체 로직이 실패했습니다. 합법적으로는 확신할 이유가 충분했던 덱에서 말입니다. 그 실패는 문제 자체의 모습이지, 덮어서 치워야 할 부끄러운 일이 아닙니다.

이것이 언젠가 완전한 룰 엔진이나 학습 시스템으로 성장할지는 알 수 없습니다. 하지만 그동안 쌓이고 있는 것들, 즉 구조화된 상태, 실행 가능한 적합성 테스트 케이스, 증거의 흔적은 그 두 가지 중 무엇이 되든 필요한 토대입니다.

어디서 왔고, 결과물은 어디로 가는가

이건 쓸 곳을 찾던 AI 프로젝트가 아니었습니다. 시작은 번체 중국어 Riftbound 사이트인 Riftbound Chronicle의 콘텐츠 문제였습니다. 덱 가이드를 쓴다는 것은 그 덱이 실제로 어떻게 굴러가는지를 주장하는 일인데, 그 주장을 확인할 방법이 전혀 없었습니다. 한편으로 플레이어들은 규칙 상호작용을 설명하면서 그 답이 무엇에 근거하는지 보여줄 수 있는 무언가를 원하고 있었습니다. Deck Coach와 Rule Consult가 바로 그 두 질문이며, 순서도 그대로입니다.

그 사이트는 지금도 첫 번째 프로덕션 사용자이고, 그것이 이 프로젝트가 데모에 머물지 않는 이유입니다. 사이트의 덱 가이드는 플레이 분석을 이 지식 베이스에서 생성하며, 각각 명시적인 AI 분석 배지와 방법론 링크를 달고 있습니다. 가이드를 쓰다 부딪힌 문제는 스킬로 되돌아가고, 위의 감사는 그 루프를 처음으로 진지하게 돌렸을 때 벌어진 일입니다.

실제로 도움이 되는 것

혼자 하기에는 너무 느리고, 빠져 있는 부분들은 게임이나 엔지니어링을 아는 사람이 필요한 부분들입니다. 여기서 시작하는 데 허락이 필요한 것은 아무것도 없습니다. 포크하고, 부수고, 이슈를 열어도 됩니다.

도출 결과 깨보기
그 대체 로직의 버그는 로직보다 그 덱을 더 잘 아는 플레이어가 찾아냈습니다. 이는 여전히 가장 가치 있는 기여이며, 코드가 전혀 필요 없습니다.
커널에 메커니즘 작성하기
각각 공식 조항에 연결된, 타입이 지정된 연산과 적합성 테스트 케이스. 이것이 병목입니다. 규칙을 코드로 옮기는 것 자체가 전체 장벽이며, 이 작업은 병렬로 나눌 수 있습니다.
한 판을 끝까지 닫기
점수와 승패 판정은 위에서 유일하게 나머지 전부를 막고 있는 항목이며, 연구가 아니라 평범하고 테스트 가능한 작업입니다. 덱을 평가할 수 있는 모든 것이 그 뒤에 있습니다.
이 방법론을 다른 게임으로 — 매직 포함
이 접근에는 Riftbound에만 해당하는 부분이 하나도 없고, 가장 명백한 대상은 매직 더 개더링 자체입니다. XMage와 Forge는 20년 동안 매직을 구현해 왔지만, 둘 다 조항 번호에 묶인 적합성 스위트를 갖고 있지 않습니다. 즉 둘 다 "불법"과 "미구현"을 구분하지 못하며, 그 구분이야말로 거기서 무언가를 배우려는 모든 것이 의존하는 지점입니다. 매직 말고도 지난 몇 년 사이 90년대 이후 어느 10년보다 많은 서양식 트레이딩 카드 게임이 나왔습니다. Flesh and Blood, Star Wars: Unlimited, Disney Lorcana, Sorcery: Contested Realm, Altered, Grand Archive. 이들은 "내 턴에 상대가 얼마나 움직일 수 있는가"에서 크게 갈리는데, 그것이 바로 이 프로젝트가 축으로 삼은 차이입니다. 그리고 우리가 찾아본 범위에서는 적합성 스위트를 갖춘 공개 룰 커널을 가진 게임이 하나도 없습니다. 두 번째 게임이야말로 이 방법론이 일반화되는지에 대한 진짜 시험이며, 가장 먼저 스위트를 갖춘 게임이 그 뒤의 모든 게임을 싸게 만듭니다.

거부하는 것과, 아직 만들지 않았을 뿐인 것

룰 엔진, AI 에이전트, 학습된 플레이어 모델은 서로 다른 세 가지입니다. 이 프로젝트는 두 번째로 시작해 이후 첫 번째의 제한된 조각을 썼습니다. 학습된 정책도, 자가 대국 코퍼스도, 완전한 상태 기계도, 전체 카드 효과 엔진도 없습니다.

그건 거부가 아니라 순서입니다. 학습된 정책은 올바른 환경의 하류에 있습니다. 아무도 검증하지 않은 규칙을 상대로 훈련시키면 그 모델이 배우는 것은 그 환경의 버그입니다 — 자신 있게, 그리고 눈에 띄지 않게. 주어진 그 게임에서는 실제로 이기고 있기 때문입니다. 적합성 스위트는 학습 앞을 가로막는 장애물이 아닙니다. 학습 결과에 의미를 부여하는 바로 그것입니다.

실제로 거부하는 것은 훨씬 좁고, 앞으로도 계속 거부합니다. 대신 플레이해 주지 않습니다. 여기 있는 모든 것은 준비 단계에 있습니다 — 구축, 이해, 연습, 복기. 플레이어 2 모드에서는 숨은 정보, 합법성, 해결, 모든 상태 갱신을 사람이 쥐고 있으며 엔진 결과가 그중 어느 것도 움직이지 않습니다. 승률, 사용률, 티어, 상성표 그 무엇도 공개하지 않습니다. 권위 있는 룰 엔진이 — 언젠가 공식 디지털 클라이언트가 나오더라도 — 존재한다면 이 프로젝트는 불필요해지는 게 아니라 더 유용해집니다. 그 엔진이 맡는 것은 플레이이고, 이것이 맡는 것은 준비이기 때문입니다.

Riot의 Digital Tools Policy는 덱 관리 도구와 교육용 도구에는 열려 있지만, 자동화된 규칙 실행이나 게임플레이 시뮬레이터는 사전 승인하지 않는다고 명시하고 있습니다. 이 경계가 야망보다 먼저 설계 방향을 결정했습니다. 모든 플레이 제안은 사람이 확인할 때까지 기다립니다. 이 프로젝트는 연구 및 교육 목적으로 만들어졌으며, 대회 중 사용하는 것은 대회 규정 위반입니다.