1 points par GN⁺ 2024-12-27 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2024-12-27
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

    • Pour mon projet de fin d’études au lycée, j’ai écrit un système COBOL qui automatisait les probabilités de paris sur le football. C’était dépassé, mais c’était amusant
    • COBOL a un charme qui rappelle l’époque des cartes perforées
  • Un petit projet écrit dans un langage simple est impressionnant. À l’inverse, les projets écrits dans des langages modernes comme Rust sont inefficaces

    • Les langages simples facilitent la mise en œuvre des idées, mais les langages modernes forcent à écrire du code durable
  • 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