A4Room
← Devlog 목록

AI is Typing..: 진짜 친구처럼 떠드는 AI와 보드게임 하기

로컬 LLM으로 AI 상대가 결정을 내리고, 실없이 농담도 던지게 만들었습니다. 사람 1명 대 AI 3명의 '방송형' 보드게임 프로토타입 이야기.

AI is Typing..은 "AI랑 하는 게임이 왜 이렇게 재미없지?"라는 불만에서 출발했습니다. 보통 게임 속 AI는 최적의 수만 두는 조용한 계산기입니다. 하지만 친구들과의 보드게임이 재미있는 건 수 싸움 때문만이 아니라 중간중간 오가는 시끄러운 농담과 반응 때문이죠. 우리는 그걸 게임에 넣고 싶었습니다.

AI is Typing.. — 사람 1명 대 AI 3명의 보드게임

핵심: 결정과 수다를 분리한다

AI 상대에게 우리는 두 가지 역할을 줬습니다. 수를 두는 두뇌떠드는 입입니다. 이 둘을 섞으면 곤란해집니다. LLM에게 "잘 두면서 웃기게 말도 해"라고 한 번에 시키면, 수는 엉성해지고 농담은 어색해지기 일쑤였습니다. 그래서 파이프라인을 나눴습니다.

  1. 결정 레이어 — 규칙과 현재 판 상태를 바탕으로 유효하고 합리적인 수를 고릅니다.
  2. 수다 레이어 — 그 수의 맥락(누구를 견제했는지, 판이 어떻게 흘러가는지)을 받아, 캐릭터답게 한마디 던집니다.

덕분에 AI는 제대로 두면서도 실없이 웃긴, 딱 친구 같은 상대가 됐습니다.

왜 '로컬' LLM인가

AI is Typing..은 로컬 LLM 브리지 위에서 돕니다. 클라우드 API 대신 로컬을 택한 이유는 분명합니다.

배운 점

LLM 게임에서 가장 무서운 건 "AI가 멈추는 순간"이다. 모델이 이상한 답을 주거나 느려도 게임은 계속돼야 한다 — 그래서 폴백이 기능이 아니라 필수였다.

폴백 AI: 모델이 흔들려도 게임은 멈추지 않는다

LLM은 가끔 유효하지 않은 수를 내놓거나, 응답이 늦습니다. 이걸 그대로 두면 게임이 얼어붙습니다. 그래서 우리는 규칙 기반 폴백 AI를 항상 옆에 세워뒀습니다. LLM의 답이 규칙에 어긋나거나 제때 오지 않으면, 폴백이 조용히 유효한 수를 대신 둡니다. 플레이어는 그 전환을 눈치채지 못합니다 — 그게 핵심입니다.

재미있는 AI를 만드는 일의 절반은, AI가 실패했을 때를 우아하게 감추는 일이었다.

Love2D 런타임과 데이터 주도 규칙

게임 자체는 Love2D(LÖVE) 위에서 돌아갑니다. 규칙은 코드에 박아넣지 않고 데이터로 분리해, 밸런스나 규칙을 바꿀 때 로직을 건드리지 않아도 되게 했습니다. 여기에 마우스를 올렸을 때 AI가 짧게 반응하는 호버 리액션 같은 자잘한 연출을 더해, 판이 살아있는 느낌을 만들었습니다.

정리

AI is Typing..은 "AI를 똑똑하게" 만드는 프로젝트가 아니라, "AI를 친구처럼" 만드는 프로젝트였습니다. 결정과 수다를 나누고, 로컬로 빠르게 돌리고, 실패를 폴백으로 감추는 것 — 이 세 가지가 채팅 자체의 재미를 게임 안으로 끌어들이는 열쇠였습니다.