1 Punkte von GN⁺ 2024-12-27 | 1 Kommentare | Auf WhatsApp teilen
  • CobolCraft

    • Ein in COBOL geschriebener Minecraft-Server, der Minecraft Version 1.21.4 unterstützt
  • Funktionen

    • Die folgenden Funktionen sind bereits implementiert
      • Unendliche Geländegenerierung und dynamisches Chunk-Laden
      • Speicherung von Welt- und Spielerdaten auf der Festplatte
      • Unterstützung des Minecraft-Dateiformats (Import bestehender Welten)
      • Multiplayer mit Unterstützung für bis zu 10 gleichzeitige Spieler
      • Ping/Serverstatus (wird in der Serverliste als online angezeigt)
      • Zerstören und Platzieren von Blöcken
      • Blockinteraktionen (Rechtsklick, z. B. Türen öffnen)
      • Spielerinventar (auf den Kreativmodus beschränkt)
      • Chat
      • Befehle (im Spiel und über eine interaktive Konsole)
      • Konfiguration über server.properties
      • Whitelist (persistent; gespeichert in whitelist.json)
    • Blöcke mit mehreren Zuständen, Ausrichtungen und Interaktionen erfordern viel spezialisierten Code und liegen außerhalb des Umfangs dieses Projekts
      • Einige unterstützte Blöcke: Fackeln, Slabs, Treppen, gedrehte Säulen, Buttons, Türen, Falltüren, Betten
  • Verwendung

    • Entwickelt mit GnuCOBOL und für die Ausführung unter Linux konzipiert
    • Unterstützung für andere Betriebssysteme wie Windows wurde nicht getestet, aber mit Docker ist eine plattformunabhängige Bereitstellung möglich
    • Für die Bereitstellung unter Linux müssen die folgenden Voraussetzungen installiert sein
      • cobc, make, g++, zlib, curl, eine aktuelle Java-Version
    • Mit make bauen und mit make run den Server auf Port 25565 starten
    • Bei Verwendung von Docker:
      • Image von Docker Hub ziehen oder selbst bauen
      • Beim Starten des Docker-Containers so konfigurierbar, dass er von außen erreichbar ist
  • Warum?

    • Es gibt viele Gerüchte und ein schlechtes Image rund um COBOL, daher wollte ich mit diesem Projekt mehr über die Sprache lernen
    • COBOL eignet sich gut für Business-Anwendungen, aber nicht für die Low-Level-Datenmanipulation, die das Minecraft-Protokoll erfordert
    • Trotzdem wurde nicht aufgegeben, bevor ein funktionierender Prototyp entstand
    • Leistung wird durch Datenkodierung und -dekodierung erreicht
  • Programmübersicht

    • Quellcode-Komponenten

      • Der Programmeinstiegspunkt ist main.cob, die übrigen COBOL-Quellen befinden sich im Verzeichnis src/
      • TCP-Sockets werden mit der Socket-Bibliothek CBL_GC_SOCKET verwaltet
    • Paket-Blobs

      • Es werden mit Wireshark erfasste Netzwerkdaten verwendet, die sich im Verzeichnis blobs/ befinden
    • Datenextraktion

      • Viele Daten können aus der offiziellen Minecraft-Server- und Client-Anwendung extrahiert werden
      • Das CobolCraft-Makefile enthält Targets zum Herunterladen von .jar-Dateien und zum Extrahieren von JSON-Daten
  • Rechtlicher Hinweis

    • Dieses Projekt steht unter der MIT-Lizenz, die Drittanbieter-Bibliothek CBL_GC_SOCKET unter der LGPL-v3-Lizenz
    • "Minecraft" ist eine Marke von Mojang Synergies AB, und CobolCraft ist weder mit Mojang verbunden noch von Mojang genehmigt

1 Kommentare

 
GN⁺ 2024-12-27
Hacker-News-Kommentare
  • Es gibt viele Gerüchte und einen schlechten Ruf rund um COBOL. Um das besser zu verstehen, wollte ich COBOL durch ein Projekt selbst ausprobieren. Mich interessieren die Einsichten von jemandem, der COBOL als Neuling verwendet hat.

    • Als Abschlussprojekt an der Highschool habe ich ein COBOL-System geschrieben, das die Quoten für Fußballwetten automatisiert. Es war aus der Zeit gefallen, aber hat Spaß gemacht.
    • COBOL hat einen Reiz, der an die Zeit der Lochkarten erinnert.
  • Ein kleines Projekt, das in einer einfachen Sprache geschrieben ist, ist beeindruckend. Dagegen wirken Projekte in modernen Sprachen wie Rust ineffizient.

    • Mit einfachen Sprachen lassen sich Ideen leicht umsetzen, während moderne Sprachen einen dazu zwingen, nachhaltigen Code zu schreiben.
  • Seit 1978 habe ich COBOL nicht mehr verwendet. Ich möchte diesen Code nie wieder sehen.

  • COBOL-Code ist für Menschen mit einem Hintergrund in prozeduralen Sprachen leicht zu verstehen. Er erinnert mich an einen Game-Server, den ich vor 20 Jahren in VB geschrieben habe.

  • COBOL-Code ist sehr gut lesbar. Im Vergleich zu modernen Sprachen ist er leichter zu verstehen.

  • Ich habe COBOL in meiner Highschool-Zeit in einer kleinen Stadt in Pakistan gelernt. Ich hatte ein Projekt, das Finanzberichte simulierte. Ich verstehe den schlechten Ruf von COBOL nicht.

  • COBOL scheint eine coole Sprache zu sein. Der Code ist gut organisiert.

  • In 40 Jahren werden Führungskräfte auf der ganzen Welt sagen: "Der COBOL-Minecraft-Server ist verschwunden."

  • Ich weiß nicht, ob der COBOL-Minecraft-Server Redstone unterstützt. Im README wird es nicht erwähnt, und im Code ist nur von einer Redstone-Fackel die Rede.