-
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
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
Me impresiona un proyecto pequeño escrito en un lenguaje simple. En cambio, los proyectos escritos en lenguajes modernos como Rust resultan ineficientes
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