Sobre el proyecto
Polyfish es un proyecto de IA desarrollado alrededor del galardonado juego de estrategia Polytopia. Recrea el juego completo en Rust y TypeScript, luego aplica un enfoque híbrido de Búsqueda en Árbol de Monte Carlo (MCTS) y red neuronal inspirado en Alpha-Zero. El sistema se entrena mediante autojuego, con una medición Elo de anclaje congelado que rastrea la fortaleza a lo largo del tiempo.
Los componentes centrales incluyen un motor de juego en Rust y backend de IA (polyfish-rs), un frontend web Vite/React (polyfish-ui) y un lector de memoria separado en C++ (polyfish-reader) que se inyecta en la versión de Steam de Polytopia para extraer estados del juego en vivo como JSON. Una alternativa en C# BepInEx/PolyMod (polyfish-mod) ejecuta automáticamente repeticiones dentro del juego real y publica los estados capturados en el servidor local.
La arquitectura de IA utiliza una variante de búsqueda Gumbel Alpha-Zero para el autojuego, MCTS basado en PUCT y una red al estilo ResNet (PolyZeroNet) con atención cruzada y cabezales de política descompuestos que mapean movimientos según tipo de acción, origen, objetivo y opción. La codificación del GameState alimenta mapas de características de 11x11 a la red.
Tres backends de inferencia leen el mismo formato model.safetensors: Candle (predeterminado, compatible con GPU), libtorch/MPS para macOS y un backend MPSGraph compuesto a mano optimizado para Apple silicon. Las capas de batching distribuyen evaluaciones de hojas desde múltiples actores hacia el backend seleccionado.
La interfaz web proporciona tanto un simulador de juego interactivo (disponible en localhost:3000) como un panel de entrenamiento en vivo que muestra gráficos de pérdida, distribución de movimientos e histogramas de valor. La configuración requiere Rust, Node y Python 3; el frontend se compila una vez y el servidor Rust sirve tanto el backend como los activos estáticos.
Las áreas de trabajo abiertas incluyen mejoras en la tubería de entrenamiento, experimentos registrados con veredictos y revisiones de búsqueda y señal de aprendizaje. La principal limitación sigue siendo los requisitos computacionales para un entrenamiento efectivo de la red.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.