-
CobolCraft
- Um servidor de Minecraft escrito em COBOL, com suporte à versão 1.21.4 do Minecraft
-
Funcionalidades
- As seguintes funcionalidades já estão implementadas
- Geração infinita de terreno e carregamento dinâmico de chunks
- Salvamento em disco dos dados do mundo e dos jogadores
- Suporte ao formato de arquivo do Minecraft (importação de mundos existentes)
- Multijogador com suporte a até 10 jogadores simultâneos
- Ping/status do servidor (aparece como online na lista de servidores)
- Destruição e colocação de blocos
- Interação com blocos (clique com o botão direito, ex.: abrir portas)
- Inventário do jogador (limitado ao modo criativo)
- Chat
- Comandos (dentro do jogo e por meio de console interativo)
- Configuração via
server.properties
- Lista branca (persistente; salva em
whitelist.json)
- Blocos com múltiplos estados, direções e interações exigem muito código especializado e ficam fora do escopo deste projeto
- Alguns blocos suportados: tochas, lajes, escadas, pilares rotacionados, botões, portas, alçapões, camas
-
Como usar
- Desenvolvido com GnuCOBOL e projetado para rodar no Linux
- O suporte a outros sistemas operacionais, como Windows, não foi testado, mas a implantação independente de plataforma é possível usando Docker
- Para implantar no Linux, os seguintes pré-requisitos devem estar instalados
cobc, make, g++, zlib, curl, versão mais recente do Java
- Execute
make para compilar e make run para iniciar o servidor na porta 25565
- Ao usar Docker:
- É possível baixar a imagem do Docker Hub ou fazer o build manualmente
- Ao executar o contêiner Docker, é possível configurá-lo para acesso externo
-
Por quê?
- Existem muitos boatos e estigmas sobre COBOL, então o projeto busca aprender mais sobre a linguagem
- COBOL é adequado para aplicações de negócios, mas não para a manipulação de dados de baixo nível exigida pelo protocolo do Minecraft
- Ainda assim, o autor não desistiu antes de criar um protótipo funcional
- O desempenho é obtido por meio de codificação e decodificação de dados
-
Visão geral do programa
-
Componentes do código-fonte
- O ponto de entrada do programa é
main.cob, e o restante do código-fonte COBOL fica no diretório src/
- Os sockets TCP são gerenciados pela biblioteca de sockets
CBL_GC_SOCKET
-
Blobs de pacotes
- Usa dados de rede capturados com Wireshark, localizados no diretório
blobs/
-
Extração de dados
- Muitos dados podem ser extraídos das aplicações oficiais de servidor e cliente do Minecraft
- O
Makefile do CobolCraft inclui alvos para baixar arquivos .jar e extrair dados JSON
-
Aviso legal
- Este projeto está sob a licença MIT, e a biblioteca de terceiros CBL_GC_SOCKET está sob a licença LGPL v3
- "Minecraft" é uma marca registrada da Mojang Synergies AB, e o CobolCraft não é afiliado nem endossado pela Mojang
1 comentários
Comentários do Hacker News
Há muitos rumores e má fama sobre COBOL. Quero experimentar COBOL por meio de um projeto para entender isso melhor. Tenho curiosidade sobre os insights que alguém novo na linguagem pode obter ao usá-la
É impressionante ver um pequeno projeto escrito em uma linguagem simples. Em contraste, projetos escritos em linguagens modernas como Rust parecem ineficientes
Parei de usar COBOL depois de 1978. Não quero ver esse código nunca mais
Código COBOL é fácil de entender para quem vem de uma linguagem procedural. Isso me lembra um servidor de jogo escrito em VB há 20 anos
Código COBOL é muito legível. Comparado às linguagens modernas, é mais fácil de compreender
Aprendi COBOL no ensino médio, em uma pequena cidade do Paquistão. Fiz um projeto que simulava relatórios financeiros. Não entendo a má fama do COBOL
COBOL parece uma linguagem legal. O código está bem organizado
Daqui a 40 anos, executivos do mundo todo vão dizer: "O servidor de Minecraft em COBOL desapareceu"
Não dá para saber se o servidor de Minecraft em COBOL suporta redstone. Não há menção disso no README, e no código só aparecem tochas de redstone