LLM 기반 채팅 어드벤처 (Upstage AI Ambassador 2기 지원)

2026. 2. 1. 11:19·프로젝트 회고

하드웨어와 게임 엔진의 발전 덕분에 과거에 비해 방대한 게임 볼륨 구현이 가능해졌습니다. 이에 힘입어 유저의 선택에 따라 다채로운 결말을 볼 수 있는 멀티 엔딩을 구성하는 게임도 많이 늘어났습니다. 대다수의 게임은 선택지를 고르는 방식을 채택하고 있지만, 이는 적절한 선택지를 마련해두지 않는다면 오히려 몰입감을 해치는 부작용도 가지고 있습니다. 이 문제를 해결하기 위해 유저가 자연어의 형태로 판단을 작성하면, 이를 LLM이 해석하여 선택의 결과를 보여주는 플레이 형태를 제안합니다.

 

Introduction (서론)


여러분은 게임에 대해서 어떻게 생각하시나요? 사람마다 게임에 대해 생각하는 바가 모두 다를 것입니다. 방과 후 오락실 문화, 치열한 E-sports, 창의적인 인디 게임 개발. 다양한 감상이 있지만, 제가 생각하는 게임이란 ‘인터렉티브 노블’ 입니다. 가상의 세계관에서 사람들이 모여 각자의 추억을 만들고, 상호작용하며 책과 영화보다 입체적인 경험 및 몰입을 제공합니다.

안드로이드가 상용화된 미래를 배경으로 철학적인 질문과 짜임새 있는 멀티엔딩으로 찬사를 받은 ‘디트로이트 비컴 휴먼’

 

하드웨어와 게임 엔진의 발전 덕분에 과거에 비해 방대한 게임 볼륨 구현이 가능해졌습니다. 이에 힘입어 유저의 선택에 따라 다채로운 결말을 볼 수 있는 멀티 엔딩을 구성하는 게임도 많이 늘어났습니다. 대다수의 게임은 선택지를 고르는 방식을 채택하고 있지만, 이는 적절한 선택지를 마련해두지 않는다면 답정너식으로 굴러가거나 공감이 깨져 오히려 몰입감을 해치는 부작용도 가지고 있습니다. 

 

한 편, AI의 발전에 맞춰서 게임 플레이 경험도 키보드와 마우스, 게임패드라는 익숙한 플레이 도구를 넘어 다양한 혁신이 시도 되어지고 있습니다. 음성을 인식하거나 트래킹 기술을 통해 직접 마법진을 그려 스킬을 발동시키거나, 사용자의 행동을 학습하여 모방하는 AI 적대적 NPC가 등장하기도 하였습니다.

스킬 발동에 음성 인식 기능을 접목한 '메이지 아레나' 와 사용자의 행동을 학습하는 '미메시스'

 

이 프로젝트는 선택지 중심 게임 플레이 구성의 한계 AI를 통해 해결할 것을 제안합니다. 유저가 자연어의 형태로 판단을 작성하면, 이를 LLM이 해석하여 선택의 결과를 보여주는 이 게임은 한 차원 더 높은 몰입감을 선사합니다.

💡 자연어 채팅을 통한 선택지 결정의 기대 효과
- 유저는 미리 준비된 선택지를 고르는 수동적인 존재가 아니라, 자신의 생각을 그대로 표현하는 주체적인 역할이 될 수 있음
- 정해져 있는 선택지로부터 오는 불쾌감을 배제할 수 있음
- 개인의 생각과 가치관에 따라 제각각의 세계를 경험할 수 있음

 

Planning (기획)


서울 2033은 2019년 반지하 게임즈에서 개발한 텍스트 어드벤처 게임입니다. 마치 소설을 읽는 듯한 분위기와 흥미진진한 스토리을 무기로 큰 인기를 끈 인디게임이 되었습니다.

 

주인공는 핵전장으로 폐허가 된 서울에서 살아남는 것이 목표입니다. 플레이어는 이 주인공이 되어 '현재 상태'와 '가젯'을 가지게 됩니다. '현재 상태'는 체력, 멘탈, 돈으로 구성되며 각각 최대 3개까지 보유할 수 있습니다. 이 중 체력, 멘탈이 0이 되면 게임 오버입니다. 돈이 0일 경우, 게임 오버가 되진 않지만 선택지 결정에 큰 제약이 걸리게 됩니다. '가'은 특정 인카운터에서 가장 이상적인 선택지를 고를 수 있는 조건이 되기도 하고, 불리하게 작용하기도 합니다. 속성 가젯은 인카운터를 해결해나가며 습득 혹은 상실할 수 있습니다.

 

저는 이 서울 2033의 게임 구조를 차용하여 데모를 제작해보았습니다. 미리 마련된 선택지를 고르는 것이 아닌, 채팅을 통해 자신의 생각을 말하면 LLM이 이를 해석하여 가장 가까운 시나리오를 결정하게 됩니다. 게임 내부적으로는 트리구조이지만 유저에게는 채팅창을 통한 소통이 보이게되는 혼합 구조입니다.

 

Upatage AI Ambassador 2기 지원을 위한 토이 프로젝트를 위해 서울 2033을 일시적으로 게임 구조를 차용하였으며, 이외의 목적에 사용하지 않고 코드 및 정보는 비공개 예정입니다.

서울 2033 플레이 스크린샷

 

Architecture (설계)


게임 실행을 위해 필요한 데이터셋은 크게 3가지 입니다. 랜덤 인카운터 정보, 선택지, 가젯 데이터 입니다. 가젯은 아이템, 능력, 상태가 있어서 각각의 속성이 있으나 이 데모 프로젝트에서는 단순화 시켰습니다.

게임을 실행하면 랜덤한 인카운터가 발생하게 됩니다. 인카운터가 발생하면 시나리오, 선택 정보와 유저의 채팅을 바탕으로 프롬프트가 작성됩니다. 프롬프트를 입력받은 LLM은 자연어로 된 유저의 채팅을 해석하여 가장 가까운 선택지를 결정하는 역할을 수행합니다. 이후 결정된 선택지의 검증이 진행됩니다. 게임의 인카운터 중에서는 현재 유저가 특정 가젯을 보유하고 있는지 여부에 따라서 선택 불가한 결정이 존재합니다.

 

예를 들어서 노점상 이벤트에서 권총을 구매하고 싶을 때, ‘총기 면허’ 가젯을 보유하고 있지 않으면 그 선택지는 실패하게 됩니다. 이럴 경우 fallback 처리 되어서 실패 선택지로 진행되어집니다.

 

선택지가 결정되면 그로 인해 발생하는 상태, 가젯의 변화를 기록하게 되며 선택의 결과를 출력하게 됩니다. 이 루프를 체력 혹은 멘탈이 0이 되어 게임 오버가 될 때까지 반복합니다.

 

  1. 랜덤 인카운터 발생 → 인카운터 정보 + 유저 채팅으로 프롬프트 작성
  2. LLM 해석 → 유저의 자연어를 가장 가까운 선택지로 매핑
  3. 검증 → 가젯 보유 여부 등 조건 검사 (예: 총기 면허 없이 권총 구매 불가)
  4. 결과 적용 → 상태(체력, 멘탈, 돈) 및 가젯 변화 업데이트트
  5. 반복 → 체력/멘탈 0이 될 시 게임오버

프롬프트는 데이터셋에서 현재 발생 중인 인카운터의 설명, 선택 가능한 선택지에 대한 정보, 프론트에서 넘어온 유저의 답변을 바탕으로 작성되게 됩니다. 그리고 LLM의 출력은 결정된 선택지의 ID만을 JSON의 형태로 출력하게 됩니다. 이 때 사용할 수 있는 기술이 Structed Outputs 입니다.

 

Structed Outputs는 사용자가 제공한 JSON 스키마를 바탕으로 JSON 문자열을 생성하여, 정보를 표준화된 형식으로 추출하고 정리할 수 있게 해줍니다. 이 기능을 통해 추출된 데이터는 기계가 읽을 수 있으며, 다양한 애플리케이션에 쉽게 통합될 수 있습니다.

JSON 스키마(JSON Schema) 사양의 일부를 지원합니다. 지원되는 유형은 string, number, boolean, integer, object, array입니다.

 

스키마 정의 시 다음과 같은 제한 사항과 규칙을 준수해야 합니다

  • 필수 항목 설정: 모든 필드는 반드시 required 배열에 명시되어야 합니다.
  • 중첩 깊이 제한: 객체는 최대 3단계(level) 깊이까지만 중첩될 수 있습니다.
  • 엄격 모드 적용: strict 속성은 항상 true로 설정되어야 합니다.
  • 추가 속성 금지: additionalProperties 값은 항상 false여야 합니다.
  • 서브스키마 미지원: 하위 스키마에 대한 정의(Definitions)는 지원되지 않습니다.
  • 재귀적 스키마 미지원: 자기 자신을 참조하는 재귀적 스키마는 지원되지 않습니다.

 

Demonstration (시연)


완성된 데모 게임의 영상입니다. AI로 생성된 이미지와 함께 랜덤 인카운터가 발생하여 채팅이 나타나게 되고, 유저의 채팅을 기다리게 됩니다. 유저는 자유롭게 자신의 생각을 입력하고 Solar LLM은 빠른 속도로 이를 처리하여 선택의 결과를 보여줍니다. 

https://youtu.be/l2yv99eyMVQ

 

Expansion (확장)


현재 프로젝트는 새로운 경험을 제공하지만, 기술적인 배경은 LLM이 입력된 문장을 이해하고 판단을 내리는 쉬운 기술입니다. 프로젝트의 기술적 측면을 더욱 발전시키기 위해 저는 시나리오의 원고를 입력하면 AI가 이를 파일 구조에 맞게 인카운터와 필요 가젯을 추가해주도록 개발자 툴을 추가로 고안하였습니다.

 

Upstage는 문서 처리 효율을 위한 다양한 제품을 제공하고 있습니다.

 

  • Document parsing은 임의의 문서를 HTML이나 마크다운(Markdown)과 같은 구조화된 텍스트로 자동 변환하는 과정입니다. 이 과정은 단락, 표, 이미지 등과 같은 레이아웃 요소를 감지하여 문서의 구조를 파악합니다. 그 후 API는 읽기 순서에 따라 각 요소를 직렬화하고, 최종적으로 문서를 구조화된 텍스트로 변환합니다.
  • Information extraction은 비정형 문서에서 핵심 정보를 식별하고 뽑아내는 과정으로, 단순한 문서 디지털화(digitization)를 넘어 데이터베이스와 같은 구조화된 형식으로 주요 정보를 저장하는 것을 주된 목적으로 합니다.

이 밖에도 OCR, DLA, Classify 등 다양한 기술을 확인할 수 있습니다.

현재는 Document parsing으로 PDF, txt 파일에서 정보를 뽑은 후 LLM이 모든 임무를 수행하도록 간단히 구현하였지만, 역할별 에이전트 구분, 입력 파일 형식에 따라 적절한 API를 유연하게 연결, 원고의 양식 부여 등을 통해 실제 서비스 단계에서는 이를 더 확장하여 업무 효율성을 높힐 수 있을 것입니다.

 

Closing (마치며)


확장 부분에서도 언급되어 있지만 LLM API를 연결했을 뿐, 성능 향상을 위한 미세 조정, RAG, MAS 등의 고도화 전략이 채택되지 않았습니다. 그리고 데모 제작이 목적이었기 때문에 DB, FastAPI 등의 서비스 적인 기술 적용 없이 웹으로 바로 플레이하도록 코드가 구성되었습니다.

 

하지만 해결하고자 하는 문제 인식은 '자연어 문장을 통해 세계와 소통하는 것'이었기 때문에 해당 플레이 경험을 구현해내었다는 점에서 의의가 있다고 생각합니다. AI적 기술 배경의 고도화가 이루어질 수 있겠지만, 플레이 경험을 긍정적으로 생각하고 있어서 해커톤 같은 프로젝트에서 서비스 단계의 발전이 있다면 충분히 재미있는 프로젝트로 발전시킬 수 있으리라 기대가 됩니다.

 

사진 출처

  • 디트로이트 비컴 휴먼 스팀 페이지
  • 업스테이지 공식 홈페이지
  • 머독, 웁TV 유튜브 썸네일
  • 민중의소리) 눈감고 즐겨도 재밌는 게임 '서울2033' - 반지하게임즈 이유원 대표 인터뷰

 

 

'프로젝트 회고' 카테고리의 다른 글

AI 코딩 스터디 연습 서비스 개발 (카카오테크 부트캠프 팀프로젝트)  (0) 2025.12.10
최신 AI 트랜드를 소개해주는 콘텐츠 생성 AI (BITAmin 2025 겨울방학)  (0) 2025.08.22
기업 분석 리포트 멀티 에이전트 (BITAmin 2025 2학기)  (0) 2025.07.17
영천시 스마트 그늘막 입지 선정 (2025 영천시 공공데이터 활용 경진대회)  (0) 2025.06.26
광역버스 잔여좌석 예측 (2025 국토교통 데이터 활용 경진대회)  (0) 2025.05.31
'프로젝트 회고' 카테고리의 다른 글
  • AI 코딩 스터디 연습 서비스 개발 (카카오테크 부트캠프 팀프로젝트)
  • 최신 AI 트랜드를 소개해주는 콘텐츠 생성 AI (BITAmin 2025 겨울방학)
  • 기업 분석 리포트 멀티 에이전트 (BITAmin 2025 2학기)
  • 영천시 스마트 그늘막 입지 선정 (2025 영천시 공공데이터 활용 경진대회)
youn9._.hon9
youn9._.hon9
  • youn9._.hon9
    youn9._.hon9
    youn9._.hon9
    • 분류 전체보기 (50)
      • 배움 일기 (15)
        • Issue Follow (1)
        • AI (10)
        • Design (4)
      • 대외 활동 (17)
      • 논문 리뷰 (5)
      • 프로젝트 회고 (12)
      • 낙서장 (1)
  • 태그

    BITAmin
    DaintLab
    Upstage
    kakaotech bootcamp
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
youn9._.hon9
LLM 기반 채팅 어드벤처 (Upstage AI Ambassador 2기 지원)
상단으로

티스토리툴바