프로젝트 소개

Polyfish는 수상 경력이 있는 전략 게임 Polytopia를 중심으로 구축된 AI 프로젝트입니다. Rust와 TypeScript로 전체 게임을 재현한 뒤, Alpha-Zero에서 영감을 받은 하이브리드 Monte Carlo Tree Search(MCTS)와 신경망 접근법을 적용합니다. 이 시스템은 자기대국을 통해 훈련되며, 고정 커 Elo 측정으로 시간 경과에 따른 강도를 추적합니다. 핵심 구성 요소에는 Rust 게임 엔진 및 AI 백엔드(polyfish-rs), Vite/React 웹 프런트엔드(polyfish-ui), 그리고 Steam 버전 Polytopia에 주입해 실시간 게임 상태를 JSON으로 추출하는 별도의 C++ 메모리 리더(polyfish-reader)가 포함됩니다. C# BepInEx/PolyMod 대안(polyfish-mod)은 실제 게임 내부에서 리플레이를 자동 재생하고 캡처된 상태를 로컬 서버에 전송합니다. AI 아키텍처는 자기대국을 위한 Gumbel Alpha-Zero 탐색 변형, PUCT 기반 MCTS, 그리고 행동 유형, 소스, 대상, 옵션 전반에 걸쳐 이동을 매핑하는 교차 어텐션과 분해된 정책 헤드를 갖춘 ResNet 스타일 네트워크(PolyZeroNet)를 사용합니다. GameState 인코딩은 11x11 특징 맵을 네트워크에 입력합니다. 세 가지 추론 백엔드가 동일한 model.safetensors 형식을 읽습니다: Candle(기본, GPU 지원), macOS용 libtorch/MPS, 그리고 Apple silicon에 최적화된 직접 구성한 MPSGraph 백엔드입니다. 배칭 계층은 여러 액터의 리프 평가를 선택된 백엔드로 분배합니다. 인터페이스는 대화형 게임 시뮬레이터(localhost:3000에서 제공)와 손실 차트, 이동 분포, 가치 히스토그램을 보여주는 실시간 훈련 대시보드를 모두 제공합니다. 설정에는 Rust, Node, Python 3가 필요하며, 프런트엔드는 한 번 빌드되고 Rust 서버가 백엔드와 정적 자산을 모두 제공합니다. 공개 작업은 훈련 파이프라인 개선, 판정이 포함된 등록된 실험, 탐색/학습 신호 검토를 추적합니다. 주요 병목은 여전히 효과적인 네트워크 훈련을 위한 컴퓨팅 요구 사항입니다.