15 votes

Minecraft now releasing obfuscation maps with every release

6 comments

  1. Wes
    Link
    Typo in title: obfuscation. This is huge news. It'll make a big difference for updating mods quickly. Plus Forge and Fabric using the same mapping will really improve code reusability between both...

    Typo in title: obfuscation.

    This is huge news. It'll make a big difference for updating mods quickly. Plus Forge and Fabric using the same mapping will really improve code reusability between both modloaders.

    What's going to be really interesting is learning all the new Mojang names. We've all gotten used to SRG mappings over the years.

    7 votes
  2. [3]
    Weldawadyathink
    Link
    I don't get why this is needed. Wouldn't it be easier and have the same effect if they just didn't obfuscate it in the first place?

    I don't get why this is needed. Wouldn't it be easier and have the same effect if they just didn't obfuscate it in the first place?

    5 votes
    1. [2]
      Wes
      Link Parent
      I think the biggest reasons they didn't are: The obfuscation step is also an optimization pass. It shortens names, and optimizes out any classes that don't need to be included in the production...

      I think the biggest reasons they didn't are:

      1. The obfuscation step is also an optimization pass. It shortens names, and optimizes out any classes that don't need to be included in the production jar.
      2. Legally, this may offer them more protection. At least with attached mappings they can be more explicit about the terms.
      3. Changes to build toolchains can break things. This is easier to do.
      4 votes
      1. imperialismus
        Link Parent
        You can turn off the option that minifies and obfuscates names and still keep the other optimizations in. I doubt that keeping debug symbols in has that much of an impact on binary size. Also,...

        The obfuscation step is also an optimization pass. It shortens names, and optimizes out any classes that don't need to be included in the production jar.

        You can turn off the option that minifies and obfuscates names and still keep the other optimizations in. I doubt that keeping debug symbols in has that much of an impact on binary size. Also, most of these optimizations are already done by the compiler (some by the Java-to-bytecode compiler and others by the bytecode-to-machine-code JIT). Using a third-party tool for additional optimization when using an optimizing compiler toolchain in many cases is counterproductive, because modern compilers are very clever and you might be removing some of the information that allows them to be so. In effect, preventing the optimizing compiler from doing its job while implementing your own half-assed thing that does the same, but worse.

        Also, as far as legality goes, what they're doing right now is explicitly encouraging decompilation. If they had problems with people decompiling the game for malicious purposes before, how's it going to look in court that they made tools specifically for that purpose available? Whereas leaving in full symbols is something they could have done quietly and maintained more plausible deniability about the reason why, if they're trying to cover their ass.

        I think 3. is probably the best guess. It should be much easier to turn off the option than to add the tools to reverse it. However, most production code accumulates cruft and crossed wires over time, to the point where sometimes it's easier to add an entire extra component that doesn't interact with the rest of the system than it is to make a seemingly trivial tweak to an existing component. Which is kind of sad but it is what it is.

        4 votes
  3. [2]
    nothis
    Link
    What's the state of Java Edition? It seems like they really want to drop it in favor of the native version but kinda are stuck with Java because that's where most of the hardcore community is?

    What's the state of Java Edition? It seems like they really want to drop it in favor of the native version but kinda are stuck with Java because that's where most of the hardcore community is?

    5 votes
    1. Wes
      Link Parent
      I haven't gotten any indication that they're planning on dropping it. They're still investing heavily in the engine; new rendering engine, blockstates, new command parser, and recent talks of an...

      I haven't gotten any indication that they're planning on dropping it. They're still investing heavily in the engine; new rendering engine, blockstates, new command parser, and recent talks of an API*.

      The last update added a lot of content, and currently they're doing a bugfix pass.

      • I know, I know. But API plans transitioned to Bedrock years ago. Revitalized interest in a Java API is new. And releasing the deobf maps show some commitment to that.
      4 votes