12 Punkte von GN⁺ 2025-10-30 | 1 Kommentare | Auf WhatsApp teilen
  • Mojang hat angekündigt, die Obfuskation in Minecraft: Java Edition vollständig zu entfernen
  • Obfuskation war in der Spieleindustrie eine übliche Sicherheitspraxis, schränkte jedoch die Zugänglichkeit des Codes und die Mod-Entwicklung ein
  • Bisher waren Klassen-, Funktions- und Variablennamen vollständig obfuskiert, was Mod-Entwicklung und Debugging komplex machte; nun werden Builds mit den ursprünglichen Codenamen bereitgestellt
  • Ab dem ersten Snapshot nach dem Mounts of Mayhem-Update verschwindet die Obfuskation; zur Kompatibilität mit bestehenden Tools werden obfuskierte und deobfuskierte Versionen eine Zeit lang parallel veröffentlicht
  • Durch diese Änderung sollen Mod-Entwicklung, Code-Analyse, Auswertung von Crash-Logs und Bugfixing deutlich einfacher werden

Die Geschichte der Minecraft-Code-Obfuskation

  • Java Edition nutzte seit den frühen Veröffentlichungstagen Obfuskation zum Schutz des Quellcodes
    • Klassen-, Funktions- und Variablennamen im Code wurden absichtlich in bedeutungslose Zeichenfolgen umgewandelt und nicht offengelegt
    • Dadurch mussten Modder die Rolle jedes Code-Elements manuell analysieren
  • Seit 2019 veröffentlichte Mojang zur Abmilderung Obfuskations-Mapping-Dateien (obfuscation mappings)
    • Diese Mapping-Listen verbanden obfuskierte Namen mit ihren ursprünglichen, bedeutungsvollen Namen
    • Dadurch wurde es für Modder einfacher, die Codestruktur zu verstehen, es blieb jedoch weiterhin ein Zwischenschritt nötig

Entscheidung zur Entfernung der Obfuskation

  • Mojang hat beschlossen, die Obfuskation selbst zu entfernen und damit den Zwischenschritt vollständig zu beseitigen
    • Gilt ab dem ersten Snapshot nach der vollständigen Veröffentlichung von „Mounts of Mayhem“
    • Künftig werden in allen Versionen Code mit ursprünglichen Namen für Variablen, Felder und Klassen standardmäßig bereitgestellt
    • Entwickler und Modder erhalten damit direkten Zugang zum Code und können ihn unmittelbar anpassen
  • Dies wird als Maßnahme verstanden, die Offenheit der Java Edition zu erhöhen und die Hürden im Mod-Ökosystem zu senken

Übergangsphase für Modder

  • Mojang richtet mit Blick auf Kompatibilitätsprobleme bestehender Tools eine Übergangsphase ein
    • Ab dem nächsten Snapshot wird zusätzlich eine deobfuskierte experimentelle Version (experimental release) veröffentlicht
    • Modder können ihre Tools und Workflows vorab an der neuen Codestruktur testen
    • Nach der vollständigen Umstellung soll die bisherige obfuskierte Version eingestellt werden
  • Die erste vollständig deobfuskierte Version ist der erste Snapshot nach der Veröffentlichung von Mounts of Mayhem

Ziel der Änderung

  • Mojang erklärt, „Modding ist ein Kernbestandteil der Java Edition“, und dass die Obfuskation dieses Wachstum behindert habe
    • Ohne komplexe Code-Entschlüsselung werden Erstellung, Updates und Debugging von Mods schneller möglich
    • Durch die bessere Lesbarkeit von Crash-Logs soll auch die Problemlösung schneller werden
    • Auch Zusammenarbeit und Lernprozesse unter Moddern dürften einfacher werden

Lizenz- und Rechtsrichtlinien

  • Diese Änderung hat keine Auswirkungen auf die EULA oder die Usage Guidelines
    • Minecraft- und Mod-Entwickler müssen diese Regeln weiterhin einhalten
    • Jede jar-Datei enthält eine LICENSE-Datei mit direktem Verweis auf die EULA
  • Weitere Änderungen in Zukunft:
    • Entfernung der Obfuskations-Mapping-Informationen aus der Versions-.json
    • Sowohl Client- als auch Server-jar-Dateien werden deobfuskiert bereitgestellt
    • Jede jar enthält eine neue LICENSE-Datei

Ausblick

  • Mojang bezeichnet dies als „Übergang in eine transparente Zukunft“ und will aktiv Feedback aus der Community sammeln
  • Die Aufhebung der Obfuskation ist eine der offensten Veränderungen der Entwicklungsumgebung in der Geschichte von Minecraft Java Edition; erwartet werden eine Beschleunigung des Wachstums des Mod-Ökosystems und ein größerer pädagogischer Nutzen

1 Kommentare

 
GN⁺ 2025-10-30
Hacker-News-Kommentare
  • Erstaunlich, dass Minecraft zwar eine so starke Modding-Community hat, Entwickler aber trotzdem mit dekompilierten, obfuskierten Java-Binärdateien arbeiten mussten
    Ihre Hingabe ist beeindruckend: Über mehr als zehn Jahre haben sie immer wieder deobfuskiert und reobfuskiert und dabei ihre Tools weiterentwickelt

    • Ich habe 2004 ein MMO auf einem Piratenserver gespielt, und der Serverbetreiber hat direkt mit einem Hex-Editor Binärdateien verändert, um Funktionen hinzuzufügen
      Es war eindrucksvoll, wie er wie ein Hacker aus Matrix auf Hexzahlen starrte und Zeichen für Zeichen änderte
    • Das ist ein weiterer Beleg dafür, dass man Software auch ohne Quellcode modifizieren kann
      Bei Java ist das aber ohnehin relativ leicht zu dekompilieren; die eigentliche Hürde ist weniger die Obfuskation als die Komplexität objektorientierter Strukturen
    • Tatsächlich stellt Mojang seit 2019 offiziell Mapping-Dateien bereit
      Man muss sie also nicht mehr wie früher in der Community selbst erstellen
    • Java lässt sich leicht dekompilieren; wenn man JVM-Code versteht, kann man schnell damit arbeiten
      Es reichte, die VM-Struktur und das Konzept von Objektdispatch zu kennen
      Die frühe Minecraft-Modding-Community war wirklich ein großartiger Ort und eines der prägendsten Coding-Erlebnisse, die ich hatte
    • Ich kannte mich mit Minecraft auch nicht gut aus und dachte, es gäbe ein offizielles Plugin-System
      Umso überraschender war, dass dieses Ökosystem größtenteils durch Reverse Engineering entstanden ist
  • Spiele wie Minecraft, Roblox, Geometry Dash und Trackmania sind Beispiele für Erfolg durch die Stärke der Community
    Wenn die Engine geschlossen ist oder die Entwicklung schwierig, ist Wachstum schwer — wie bei Vision Pro oder dem Metaversum
    Eine Community entsteht nur, wenn Hobbyentwickler und kleine Nutzergruppen leicht mitmachen können

    • Auch die Flight-Simulator-Reihe hat ein riesiges Addon-Ökosystem aufgebaut
      Am Ende ist aber vor allem wichtig, dass das Spiel selbst gut ist
      Wenn die Community wächst, fängt ein Teil davon ganz natürlich mit dem Modding an
      Richard Burns Rally etwa war ursprünglich gar nicht für Modding gedacht, doch Fans haben Autos, Strecken und sogar Online-Funktionen hinzugefügt
      Bei der Voxel-Engine Luanti sieht man ein ähnliches Phänomen
    • Die frühe Engine-Qualität von Roblox war wirklich hervorragend
      2006 konnte man kostenlos sofort Tausende 3D-Multiplayer-Spiele starten, inklusive zerstörbarer Gebäude und verformbarem Terrain
      Das war für die damalige Zeit revolutionär, und genau diese einfache Zugänglichkeit half später dabei, den Kindermarkt zu dominieren
    • Ich halte Minecraft für eine Ausnahme
      Schon in der Alpha war das Singleplayer-Erlebnis hervorragend, und die Balance zwischen Survival und Kreativität war perfekt
      Schon damals machte es Umsätze in Millionenhöhe
    • Ein weiterer Grund, warum das Metaversum gescheitert ist: Niemand will es wirklich
      Kaum jemand möchte ein teures VR-Headset tragen
    • Ich stimme nicht zu, dass VR-Engines schlecht seien
      Unity, Unreal und Godot unterstützen VR alle gut
      Das Problem ist, dass es zu wenige Nutzer im Verhältnis zu den Entwicklungskosten gibt
      Man muss Zugänglichkeit, UX, Motion Sickness und vieles mehr berücksichtigen, wodurch die Entwicklung viel teurer wird
      Schon Untertitel in einer 6DoF-Umgebung darzustellen, ist schwierig
  • Die Obfuscation Mappings, die Mojang 2019 veröffentlicht hat, waren eine Liste zum Auflösen obfuskierter Namen
    Dadurch mussten Modder nicht mehr bei jedem Codefragment raten, aber es bleibt die Frage, warum nur die Hälfte veröffentlicht wurde

    • Viele Modding-Tools waren bereits auf die communityeigene Benennungssystematik abgestimmt
    • Ich kann mir vorstellen, dass die Rechtsabteilung beim Wort Deobfuskation fast die Nerven verloren hat
    • Vielleicht lag es auch einfach an rechtlichen Gründen oder an prozeduraler Bequemlichkeit
    • Ich frage mich, ob die Mappings vielleicht nur als offizielle API-Form für bestimmte Klassen oder Methoden gedacht waren
  • Ich frage mich, ob Minecraft Java Edition irgendwann als Open Source auf GitHub veröffentlicht wird
    Es würde sich wahrscheinlich wie Skyrim auf praktisch jeder Plattform weiterverkaufen

    • Open-Source-Launcher funktionieren bereits problemlos, solange man bei der Kontoauthentifizierung aufpasst
      Die Spieldateien lassen sich außerdem kostenlos von Microsoft-Servern laden, daher wirkt es nicht so, als würde eine Open-Source-Veröffentlichung großen Schaden anrichten
    • 2010 hatte Notch versprochen: „Wenn die Verkäufe nachlassen, werde ich den Quellcode veröffentlichen“
      Archiv der damaligen Webseite
    • Wie bei Doom wäre es auch ein guter Weg, nur die Engine als Open Source freizugeben
      Die künstlerischen Assets blieben weiterhin urheberrechtlich geschützt
    • Ähnliche Alternativen sind Minetest oder Luanti
    • Heute könnte man wohl den Quellcode veröffentlichen und nur den Zugang zu den Kontoauthentifizierungsservern kostenpflichtig lassen, ohne die Umsätze stark zu beeinflussen
  • Ich arbeite inzwischen lieber an Luanti
    Man kann dort per Modding fast dieselbe Erfahrung wie in Minecraft umsetzen, und es gibt auch Spielmods wie VoxeLibre
    Auch der Quellcode der in Lua geschriebenen Mods ist größtenteils offen zugänglich
    Besonders Zoonami ist interessant, weil es ein Pokémon-ähnliches Spielerlebnis bietet

    • Ich frage mich, ob es für Luanti auch große Modpacks wie AllTheMods 10 oder Meatballcraft gibt
    • Zoonami scheint das Ziel zu erreichen, an dem Tuxemon gescheitert ist
  • Minecraft lässt sich ohnehin schon leicht raubkopieren, daher wäre der Schaden durch eine Offenlegung des Quellcodes wahrscheinlich gering
    Die meisten behalten ihren legitimen Account, um Mojangs Authentifizierungsserver zu nutzen
    Das Projekt ist sogar groß genug, dass auch eine Open-Source-Freigabe mit nichtkommerzieller Einschränkung denkbar wäre

    • Mit einer „nicht kommerziell“-Klausel wäre es allerdings kein echtes Open Source mehr, sondern Source Available
  • Die aggressive Obfuskation von Proguard macht Code schwer verständlich, indem Klassennamen stark verfremdet und sogar Inlining eingesetzt wird
    Insofern ist dieser Schritt ein großer Fortschritt

  • Gute Nachrichten! Für die Minecraft-Modding-Community eröffnen sich neue Möglichkeiten

  • Die communityerstellten Mappings standen unter einer freien Lizenz, Microsofts Mappings dagegen nicht
    Das könnte eine Art Falle gewesen sein

    • Aber jetzt, da die Mappings selbst verschwunden sind, ist mir nicht klar, worin diese Falle eigentlich bestanden haben soll
    • Ich frage mich, ob selbst auf Variablennamen Urheberrecht liegen kann
  • Wenn man es wirklich einfacher machen will, wäre es wohl am besten, den Quellcode unter einer moddingfreundlichen Lizenz zu veröffentlichen