À propos du projet

bareiron est une implémentation de serveur Minecraft minimaliste destinée aux systèmes embarqués à mémoire restreinte. Son objectif déclaré est de permettre l'hébergement de serveurs Minecraft sur des appareils très faibles, comme l'ESP32. Le projet ordonne explicitement ses priorités comme suit : utilisation mémoire en premier, performance en deuxième, et fonctionnalités en troisième, et il note que la conformité avec Minecraft vanilla n'est ni garantie ni un objectif. La compatibilité cible est la version Minecraft 1.21.8 avec le protocole version 772. Le README avertit que seul le client vanilla est officiellement pris en charge et que des problèmes ont été signalés lors de l'utilisation de Fabric ou de clients similaires. Pour démarrer sur les plateformes PC x86_64, il suffit de télécharger le dernier binaire de build et de l'exécuter. Le fichier est décrit comme un polyglotte Cosmopolitan, ce qui signifie qu'il peut fonctionner sur Windows, Linux et peut-être Mac malgré son extension de fichier. Le README note que les paramètres par défaut du serveur ne peuvent pas être reconfigurés sans compiler à partir du code source. Pour les microcontrôleurs, la compilation est requise. Avant de compiler, les données de registre doivent être extraites d'un serveur Minecraft vanilla. Sous Linux, cela peut être automatisé avec un script extract_registries.sh inclus ; sinon, le processus consiste à placer un JAR de serveur Minecraft dans un dossier notchian, à suivre le guide du générateur de données du Wiki Minecraft pour extraire tous les registres, puis à exécuter build_registries.js avec bun, node ou deno. Les instructions de compilation couvrent plusieurs environnements : Linux avec gcc et ./build.sh ; Windows via MSYS2 MINGW64 pour un binaire natif, une variante 32 bits compatible avec Windows 95/98 via un drapeau --9x, un binaire lié à MSYS2, ou WSL pour compiler et exécuter un binaire Linux. Pour les variantes ESP, le README demande de configurer un projet PlatformIO utilisant le framework ESP-IDF (explicitement pas Arduino) et de cloner le dépôt par-dessus, avec des suggestions pour ajuster la vitesse d'horloge et activer les optimisations du compilateur pour de meilleures performances. La configuration nécessite également de compiler à partir du code source. Les options les plus conviviales se trouvent dans include/globals.h, y compris les identifiants WiFi pour les configurations embarquées, tandis que des détails tels que le MOTD ou l'heure de début de journée se trouvent dans src/globals.c. Le README met en évidence plusieurs options pertinentes pour les déploiements réels sur microcontrôleurs : la diffusion des mouvements peut limiter les connexions en fonction du nombre de joueurs, des performances du MCU et de la bande passante réseau, et peut être ajustée en commentant BROADCAST_ALL_MOVEMENT et SCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT, ou en réduisant TIME_BETWEEN_TICKS au prix de plus de calcul. Les coffres et l'écoulement des fluides peuvent être désactivés via ALLOW_CHESTS et DO_FLUID_FLOW s'ils provoquent des plantages ou une instabilité. Augmenter VISITED_HISTORY peut aider avec la génération fréquente de chunks répétés, avec un coût mémoire déclaré d'environ 240 octets supplémentaires par joueur alloué lorsqu'il est élevé à 64. Une section optionnelle couvre le stockage non volatile pour les cibles ESP qui souhaitent persister les données du monde après l'arrêt. Sur les plateformes PC, cela n'est pas nécessaire car les données du monde et des joueurs sont écrites dans world.bin par défaut. L'approche la plus simple consiste à configurer LittleFS dans PlatformIO et à commenter le #ifndef entourant SYNC_WORLD_TO_DISK dans globals.h ; comme les écritures flash sont généralement lentes et bloquantes, il est suggéré de décommenter DISK_SYNC_BLOCKS_ON_INTERVAL, et MAX_BLOCK_CHANGES peut devoir être réduit pour tenir dans la partition LittleFS. Pour les modules de carte SD ou d'autres systèmes de fichiers virtuels, la routine de configuration du système de fichiers doit être implémentée par l'utilisateur, bien que le sérialiseur intégré devrait toujours fonctionner car il utilise des appels système de fichiers POSIX. Comme alternative, les données du monde peuvent être extraites et téléchargées via TCP en décommentant DEV_ENABLE_BEEF_DUMPS, avec une note explicite que ce système n'implémente aucune sécurité ni authentification et que toute personne ayant accès au serveur pourrait télécharger des données de monde arbitraires. Les directives de contribution demandent aux contributeurs de créer des problèmes et de discuter avec les mainteneurs avant les demandes de tirage, même pour de petits changements ; de suivre le style de code existant ; de tester le code avant de demander une révision ; et elles indiquent que les améliorations des outils de développement et de compilation ne sont pas les bienvenues à moins que le contributeur n'ait travaillé avec le codebase assez longtemps pour remarquer des lacunes pratiques. Le README pointe vers le Wiki Minecraft pour les informations sur le protocole et suggère un moteur de recherche pour tout le reste.