Cognitive World-Interaction Engine: Stateful Game World Orchestrator
🎯 개요 (Vision)
Cognitive World-Interaction Engine은 LLM의 확률적 추론(Neuro)과 게임 엔진의 결정론적 규칙(Symbolic)을 결합하여, 플레이어의 비정형 행동에 따라 게임 세계의 상태(World State)가 실시간으로 변동되도록 설계된 하이브리드 추론 엔진입니다.
단순한 대화 생성을 넘어, NPC의 심리 상태 수치(Delta)와 게임 이벤트 트리거(Flag)를 동시에 예측하여 인과관계가 살아있는 동적 서사(Dynamic Narrative) 를 구현하는 것을 목표로 합니다.
🛠 Tech Stack
| Category | Tools & Technologies |
|---|---|
| Server | Core: FastAPI, Demo: Gradio, language: Python |
| AI/ML | Framework: PyTorch, Numpy, Transformers Base LLM: Qwen2.5-3B-instruct, LoRA Adapter: npc_LoRA-fps |
| Knowledge Engine | Retrieval: ChromaDB Storage: Json files (Corpus: Structured Game Lore, NPC Persona). |
| Infrastructure | Deployment: Docker, Hugging Face Spaces (PaaS Hosting) Training: Colab |
🏗️ 시스템 아키텍처 (Architecture)
"Beyond Text: Multi-Head State Inference"
본 엔진은 LLM의 Hidden State를 공유하면서 세 가지 서로 다른 태스크를 동시에 수행하는 Multi-head 구조를 채택했습니다.
- Natural Language Head: NPC의 페르소나와 컨텍스트가 반영된 자연어 응답 생성.
- Flag Head (Classification): 퀘스트 완료, 적대 행위, 아이템 거래 등 이진(Binary) 이벤트 발생 여부 판단.
- Delta Head (Regression): 친밀도, 공포도, 세계관 오염도 등 연속적인 수치 변화량(Δ) 예측.
💡 Engineering Point: 텍스트 내에서 JSON을 파싱하는 방식보다 전용 Head를 사용하는 방식이 추론 속도가 빠르고, 게임 로직과의 데이터 정합성(Data Integrity) 확보에 유리합니다.
🔑 핵심 기능
🧠 Stateful Persona Management
- Contextual Memory: RAG를 통해 수만 줄에 달하는 게임 세계관 설정 중 현재 상황과 가장 연관된 정보를 실시간 주입하여 '설정 오류' 방지.
- Psychological Modeling: 단순 친밀도를 넘어, 이전 대화 기록(History Log)에 따른 복합적인 감정 상태를 수치화하여 NPC의 태도 변화에 반영.
🔄 Neuro-Symbolic Integration
- Deterministic Guardrails: LLM이 생성한 응답이 게임의 핵심 로직(예: 죽은 NPC가 부활하는 등)을 위반할 경우, Rule-based 필터가 이를 감지하고 재추론 혹은 Fallback 메시지 출력.
- Action Triggering: 예측된 Flag 값은 즉시 게임 서버의 API를 호출하여 문이 열리거나, NPC가 공격 태세를 취하는 등 물리적 환경 변화로 직결됩니다.
⚙️ 구현 및 최적화 상세
1. Multi-Task Fine-tuning (LoRA)
- 대화 데이터셋에 상태 변화 태그를 결합한 커스텀 데이터셋 구축.
- Loss Weight Balancing: 언어 생성 손실과 상태 예측 손실 간의 균형을 맞추기 위한 가중치 튜닝 수행.
2. Pre/Post-processing Pipeline
- Input: [World State + Player Input + RAG Context]
- Output Validation: 모델이 출력한 Delta 값이 허용 범위를 벗어나지 않도록 클램핑(Clamping) 및 검증 로직 구현.
📊 연구 및 해결 과제 (Troubleshooting)
-
문제: LLM 응답 지연(Latency)으로 인한 게임 몰입도 저하
- 해결: 모델 경량화(Quantization) 및 텍스트 생성과 상태 값 예측의 병렬 처리, 그리고 핵심 Flag를 우선 확정한 뒤 텍스트를 스트리밍하는 전략 채택.
-
문제: 비일관적인 NPC 태도 (Persona Drift)
- 해결: 시스템 프롬프트에 'Persona Anchor'를 도입하고, 이전 대화 요약본을 컨텍스트에 지속적으로 유지하여 장기 기억(Long-term Memory) 효과 구현.