Sobre el proyecto

bareiron es una implementación de servidor de Minecraft minimalista orientada a sistemas embebidos con restricciones de memoria. Su objetivo declarado es permitir alojar servidores de Minecraft en dispositivos muy débiles, como el ESP32. El proyecto ordena explícitamente sus prioridades como: uso de memoria primero, rendimiento segundo y funciones tercero, y señala que el cumplimiento con Minecraft vanilla no está garantizado ni es un objetivo. La compatibilidad objetivo es la versión de Minecraft 1.21.8 con la versión de protocolo 772. El README advierte que solo se admite oficialmente el cliente vanilla y que se han reportado problemas al usar Fabric o clientes similares. Para comenzar en plataformas PC x86_64, se descarga el último binario de compilación y se ejecuta. El archivo se describe como un políglota Cosmopolitan, lo que significa que puede ejecutarse en Windows, Linux y posiblemente Mac a pesar de su extensión de archivo. El README señala que la configuración predeterminada del servidor no se puede reconfigurar sin compilar desde el código fuente. Para microcontroladores, se requiere compilación. Antes de compilar, se deben volcar los datos de registro desde un servidor vanilla de Minecraft. En Linux, esto se puede automatizar con el script incluido extract_registries.sh; de lo contrario, el proceso implica colocar un JAR del servidor de Minecraft en una carpeta notchian, seguir la guía del generador de datos de Minecraft Wiki para volcar todos los registros y luego ejecutar build_registries.js con bun, node o deno. Las instrucciones de compilación cubren varios entornos: Linux con gcc y ./build.sh; Windows mediante MSYS2 MINGW64 para un binario nativo, una variante de 32 bits compatible con Windows 95/98 mediante una bandera --9x, un binario vinculado a MSYS2, o WSL para compilar y ejecutar un binario de Linux. Para variantes ESP, el README indica configurar un proyecto PlatformIO usando el framework ESP-IDF (explícitamente no Arduino) y clonar el repositorio encima, con sugerencias para ajustar la velocidad del reloj y habilitar optimizaciones del compilador para mejor rendimiento. La configuración también requiere compilar desde el código fuente. Las opciones más amigables para el usuario se encuentran en include/globals.h, incluidas las credenciales WiFi para configuraciones embebidas, mientras que detalles como el MOTD o la hora de inicio del día están en src/globals.c. El README destaca varias opciones relevantes para implementaciones reales en microcontroladores: la transmisión de movimiento puede limitar conexiones según el número de jugadores, el rendimiento del MCU y el ancho de banda de red, y se puede ajustar comentando BROADCAST_ALL_MOVEMENT y SCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT, o reduciendo TIME_BETWEEN_TICKS a costa de más cómputo. Los cofres y el flujo de fluidos se pueden deshabilitar mediante ALLOW_CHESTS y DO_FLUID_FLOW si causan fallos o inestabilidad. Aumentar VISITED_HISTORY puede ayudar con la generación frecuente de chunks repetidos, con un costo de memoria declarado de aproximadamente 240 bytes adicionales por jugador asignado cuando se eleva a 64. Una sección opcional cubre el almacenamiento no volátil para objetivos ESP que deseen persistir datos del mundo después del apagado. En plataformas PC esto no es necesario porque los datos del mundo y del jugador se escriben en world.bin por defecto. El enfoque más simple es configurar LittleFS en PlatformIO y comentar el #ifndef que rodea SYNC_WORLD_TO_DISK en globals.h; dado que las escrituras flash suelen ser lentas y bloqueantes, se sugiere descomentar DISK_SYNC_BLOCKS_ON_INTERVAL, y MAX_BLOCK_CHANGES puede necesitar reducirse para caber en la partición LittleFS. Para módulos de tarjeta SD u otros sistemas de archivos virtuales, la rutina de configuración del sistema de archivos debe ser implementada por el usuario, aunque el serializador integrado debería funcionar porque usa llamadas POSIX al sistema de archivos. Como alternativa, los datos del mundo se pueden volcar y subir por TCP descomentando DEV_ENABLE_BEEF_DUMPS, con una nota explícita de que este sistema no implementa seguridad ni autenticación y que cualquier persona con acceso al servidor podría subir datos arbitrarios del mundo. Las pautas de contribución piden a los contribuyentes crear problemas y discutir con los mantenedores antes de las solicitudes de extracción, incluso para cambios pequeños; seguir el estilo de código existente; probar el código antes de solicitar revisión; y establecen que las mejoras de herramientas de desarrollo y compilación no son bienvenidas a menos que el contribuyente haya trabajado con el código base el tiempo suficiente para notar deficiencias prácticas. El README señala a Minecraft Wiki para información del protocolo y sugiere un motor de búsqueda para todo lo demás.