1 pontos por GN⁺ 2024-12-27 | 1 comentários | Compartilhar no WhatsApp
  • 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

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

    • Como projeto de conclusão do ensino médio, escrevi um sistema em COBOL para automatizar probabilidades de apostas de futebol. Era ultrapassado, mas foi divertido
    • COBOL tem um charme que lembra a era dos cartões perfurados
  • É impressionante ver um pequeno projeto escrito em uma linguagem simples. Em contraste, projetos escritos em linguagens modernas como Rust parecem ineficientes

    • Linguagens simples facilitam implementar ideias, mas linguagens modernas forçam você a escrever código sustentável
  • 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