1 puntos por GN⁺ 2024-12-27 | 1 comentarios | Compartir por WhatsApp
  • CobolCraft

    • Un servidor de Minecraft escrito en COBOL que soporta la versión 1.21.4 de Minecraft
  • Funciones

    • Las siguientes funciones ya están implementadas
      • Generación infinita de terreno y carga dinámica de chunks
      • Guardado en disco del mundo y de los datos del jugador
      • Soporte para formatos de archivo de Minecraft (importación de mundos existentes)
      • Multijugador con soporte para hasta 10 jugadores simultáneos
      • Ping/estado del servidor (aparece en línea en la lista de servidores)
      • Destrucción y colocación de bloques
      • Interacción con bloques (clic derecho, por ejemplo, abrir puertas)
      • Inventario del jugador (limitado al modo creativo)
      • Chat
      • Comandos (dentro del juego y mediante consola interactiva)
      • Configuración mediante server.properties
      • Lista blanca (persistente; guardada en whitelist.json)
    • Los bloques con múltiples estados, orientaciones e interacciones requieren mucho código especializado y quedan fuera del alcance de este proyecto
      • Algunos bloques compatibles: antorchas, losas, escaleras, pilares rotados, botones, puertas, trampillas, camas
  • Cómo usarlo

    • Desarrollado con GnuCOBOL y diseñado para ejecutarse en Linux
    • El soporte para otros sistemas operativos como Windows no ha sido probado, pero es posible un despliegue independiente de la plataforma usando Docker
    • Para desplegar en Linux, deben estar instalados los siguientes requisitos previos
      • cobc, make, g++, zlib, curl, una versión reciente de Java
    • Ejecuta make para compilar y make run para iniciar el servidor en el puerto 25565
    • Si usas Docker:
      • Puedes descargar la imagen desde Docker Hub o compilarla tú mismo
      • Al ejecutar el contenedor de Docker, se puede configurar para que sea accesible desde el exterior
  • ¿Por qué?

    • Hay muchos rumores y estigmas alrededor de COBOL, así que quise aprender más sobre este lenguaje a través del proyecto
    • COBOL es adecuado para aplicaciones de negocio, pero no para la manipulación de datos de bajo nivel que requiere el protocolo de Minecraft
    • Aun así, no quise rendirme antes de crear un prototipo funcional
    • El rendimiento se logra mediante codificación y decodificación de datos
  • Resumen del programa

    • Componentes del código fuente

      • El punto de entrada del programa es main.cob, y el resto del código fuente COBOL se encuentra en el directorio src/
      • Los sockets TCP se gestionan con la biblioteca de sockets CBL_GC_SOCKET
    • Blobs de paquetes

      • Se usan datos de red capturados con Wireshark, ubicados en el directorio blobs/
    • Extracción de datos

      • Se pueden extraer muchos datos de las aplicaciones oficiales del servidor y cliente de Minecraft
      • El Makefile de CobolCraft incluye objetivos para descargar archivos .jar y extraer datos JSON
  • Aviso legal

    • Este proyecto está bajo la licencia MIT, y la biblioteca de terceros CBL_GC_SOCKET está bajo la licencia LGPL v3
    • "Minecraft" es una marca registrada de Mojang Synergies AB, y CobolCraft no está afiliado con Mojang ni cuenta con su aprobación

1 comentarios

 
GN⁺ 2024-12-27
Comentarios en Hacker News
  • Hay muchos rumores y mala fama alrededor de COBOL. Quisiera conocer COBOL a través de un proyecto para entenderlo mejor. Me interesa saber qué aprendizajes obtiene alguien nuevo al usar COBOL

    • Como proyecto de graduación de preparatoria, escribí un sistema en COBOL para automatizar probabilidades de apuestas de fútbol. Estaba anticuado, pero fue divertido
    • COBOL tiene un encanto que recuerda a la época de las tarjetas perforadas
  • Me impresiona un proyecto pequeño escrito en un lenguaje simple. En cambio, los proyectos escritos en lenguajes modernos como Rust resultan ineficientes

    • Los lenguajes simples facilitan implementar ideas, pero los lenguajes modernos te obligan a escribir código sostenible
  • Dejé de usar COBOL después de 1978. No quiero volver a ver este código nunca más

  • El código COBOL es fácil de entender para alguien con experiencia en lenguajes procedurales. Me recuerda a un servidor de juego escrito en VB hace 20 años

  • El código COBOL es muy fácil de leer. Comparado con los lenguajes modernos, es más sencillo de entender

  • Aprendí COBOL en la preparatoria en un pequeño pueblo de Pakistán. Hice un proyecto para simular reportes financieros. No entiendo la mala fama de COBOL

  • COBOL parece un lenguaje genial. El código está bien organizado

  • Dentro de 40 años, los ejecutivos de todo el mundo dirán: "El servidor de Minecraft en COBOL desapareció"

  • No está claro si el servidor de Minecraft en COBOL soporta redstone. No se menciona en el README, y en el código solo se habla de antorchas de redstone