-
CobolCraft
- Un serveur Minecraft écrit en COBOL, compatible avec Minecraft version 1.21.4
-
Fonctionnalités
- Les fonctionnalités suivantes sont déjà implémentées
- Génération de terrain infinie et chargement dynamique des chunks
- Sauvegarde sur disque des données du monde et des joueurs
- Prise en charge du format de fichier Minecraft (import de mondes existants)
- Multijoueur avec prise en charge de jusqu’à 10 joueurs simultanés
- Ping / état du serveur (affiché comme en ligne dans la liste des serveurs)
- Destruction et placement de blocs
- Interaction avec les blocs (clic droit, par ex. ouvrir une porte)
- Inventaire du joueur (limité au mode créatif)
- Chat
- Commandes (en jeu et via une console interactive)
- Configuration via
server.properties
- Liste blanche (persistante ; stockée dans
whitelist.json)
- Les blocs à états multiples, orientés et interactifs nécessitent beaucoup de code spécialisé, ce qui dépasse le périmètre de ce projet
- Quelques blocs pris en charge : torches, dalles, escaliers, piliers orientés, boutons, portes, trappes, lits
-
Utilisation
- Développé avec GnuCOBOL et conçu pour fonctionner sous Linux
- La prise en charge d’autres systèmes d’exploitation comme Windows n’a pas été testée, mais un déploiement indépendant de la plateforme est possible via Docker
- Pour un déploiement sous Linux, les prérequis suivants doivent être installés
cobc, make, g++, zlib, curl, une version récente de Java
- Exécuter
make pour compiler, puis make run pour démarrer le serveur sur le port 25565
- Avec Docker :
- Il est possible de récupérer l’image depuis Docker Hub ou de la construire soi-même
- Lors de l’exécution du conteneur Docker, il est possible de le configurer pour qu’il soit accessible depuis l’extérieur
-
Pourquoi ?
- COBOL traîne beaucoup de rumeurs et une mauvaise réputation, donc le projet vise à mieux comprendre ce langage
- COBOL est adapté aux applications métier, mais peu au type de manipulation de données bas niveau exigé par le protocole Minecraft
- Cependant, l’auteur n’a pas abandonné avant d’avoir créé un prototype fonctionnel
- Les performances sont obtenues grâce à l’encodage et au décodage des données
-
Aperçu du programme
-
Composants du code source
- Le point d’entrée du programme est
main.cob, et le reste du code source COBOL se trouve dans le répertoire src/
- Les sockets TCP sont gérés par la bibliothèque de sockets
CBL_GC_SOCKET
-
Blobs de paquets
- Les données réseau capturées via Wireshark sont utilisées et se trouvent dans le répertoire
blobs/
-
Extraction de données
- De nombreuses données peuvent être extraites des applications officielles serveur et client de Minecraft
- Le
Makefile de CobolCraft inclut des cibles pour télécharger des fichiers .jar et extraire les données JSON
-
Mentions légales
- Ce projet est sous licence MIT, et la bibliothèque tierce CBL_GC_SOCKET est sous licence LGPL v3
- "Minecraft" est une marque de Mojang Synergies AB, et CobolCraft n’est ni affilié à Mojang ni approuvé par celle-ci
1 commentaires
Commentaires sur Hacker News
Il y a beaucoup de rumeurs et de mauvaise réputation autour de COBOL. Pour comprendre cela, j’aimerais découvrir COBOL à travers un projet. J’aimerais connaître les enseignements tirés par quelqu’un de nouveau qui utilise COBOL
Un petit projet écrit dans un langage simple est impressionnant. À l’inverse, les projets écrits dans des langages modernes comme Rust sont inefficaces
J’ai arrêté d’utiliser COBOL après 1978. Je ne veux plus jamais revoir ce code
Le code COBOL est facile à comprendre pour quelqu’un qui a un bagage en langage procédural. Cela me rappelle un serveur de jeu écrit en VB il y a 20 ans
Le code COBOL est très lisible. Il est plus facile à comprendre que les langages modernes
J’ai appris COBOL au lycée dans une petite ville du Pakistan. J’ai fait un projet qui simulait des rapports financiers. Je ne comprends pas la mauvaise réputation de COBOL
COBOL semble être un langage formidable. Le code est bien organisé
Dans 40 ans, les dirigeants du monde entier diront : « Le serveur Minecraft en COBOL a disparu »
Impossible de savoir si le serveur Minecraft en COBOL prend en charge la redstone. Le README ne le mentionne pas, et dans le code, seules les torches de redstone sont mentionnées