Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

201–210 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#201

I wonder if they'll ever just open source the Java Edition on GitHub. People will buy Minecraft on every platform it is released on, just like Skyrim.

There's no reason for them not to. Open source launchers using the "honor system" for account verification are already established and normalized. It's trivial to just comment out that verification. The jars and assets are free to download from Microsoft's servers without needing an account. It's a trivial game to get without paying, so I don't see any downside for them to open source the engine.

[deleted]

Re: Minecraft removing obfuscation in Java Edition

#202
post #53

Earlier quoted context omitted.

Roblox had a phenomenal engine when it came out and its terrain destruction is still unmatched. In 2006, I could download the Roblox app and bam, I would play thousands of 3D multiplayer games for free that loaded near instantly. With fully destructible buildings and dynamic terrain. Somehow I didn't get viruses from remote code execution. That was groundbreaking at the time. In that era, I'd have to download Steam,…

In many ways it remains ahead of the curve. Kids that grow up making games in Roblox rarely survive the jump to a dedicated engine because Roblox is just so much easier to develop for in nearly every aspect. One big thing I've heard is that instantly getting working, robust online multiplayer by default baked into the engine is a major plus.

I would call multiplayer out of the box the defining feature for sure.

It's challenging to get networking right, and the effort required doesn't get all that much smaller just because your game is smaller.

Most engines do come with a networking framework or layer these days but Roblox gets to assume a bunch of things an engine can't, and as such provide a complete solution out of the box.

Re: Minecraft removing obfuscation in Java Edition

#203
post #18

Earlier quoted context omitted.

Critically, VRChat works on desktop (though it's an inferior experience), and you can incrementally enhance your experience with it by doing things like webcam face/hand tracking instead of buying an expensive headset.

It's also very highly customisable without being monetized out the wazoo, allows you to host your own servers, and in general avoids the incredibly bland corporate image that meta projects. (Meta, I think, fails to understand that the people that most want a virtual space to interact with, to the point of putting up with the limitations of VR tech, mostly want to not look like regular people in that space, because th…

I think they also would not accept that variability, in both avatars and spaces. Even VRChat developers have struggled with what users do and frankly as a company that makes total sense. It's a wild west which is great for a community, nightmarish for a company with moderation liabilities, copyright concerns etc.

The VRChat community should consider forming and funding an open source group to re-implement the platform as it will eventually get regulated.

For what it's worth I don't use VRChat, I've just been around the internet for long enough to know the pattern.

Re: Minecraft removing obfuscation in Java Edition

#204
post #18

Earlier quoted context omitted.

Critically, VRChat works on desktop (though it's an inferior experience), and you can incrementally enhance your experience with it by doing things like webcam face/hand tracking instead of buying an expensive headset.

VRChat is also consistently active with people making new worlds/maps, avatars, etc. There also used to be a client modding scene with e.g. melonloader but that got cracked down on around 2022. The "metaverse" however, does it even exist? Is there a vrchat-like, meta-built social vr environment available on quest hardware?

No idea, which is notable because I boot into my Meta Quest 3 most nights for sim racing. You'd think I'd have seen it if they were pushing it.

I am glad they don't, the headset should be a general computing device first and foremost, launching apps you choose to participate in.

Re: Minecraft removing obfuscation in Java Edition

#205
post #137

Earlier quoted context omitted.

First time I have heard of object-oriented obfuscation. I get it, but in general I don't get the OO hate. It's all about the problem domain imo. I can't imagine building something like a graphics framework without some subtyping. Unfortunately, people often use crap examples for OO. The worst is probably employee, where employee and contractor are subtypes of worker, or some other chicanery like that. Of course in th…

For me, it's the fact that the mess of DAOs and Factories that constituted "enterprise" Java in the 00s was a special kind of hellscape that was actively encouraged by the design of the language. Most code bases don't need dynamically loaded objects designed with interfaces that can be swapped out. In fact, that functionality is nearly never useful. But that's how most people wrote Java code. It was terrible and taug…

Thankfully those days are not with us any more. Java has moved on quite considerably in the last few years.

I think people are still too ready to use massive, hulking frameworks for every little thing, of course, but the worst of the 'enterprise' stuff seems to have been banished.

Re: Minecraft removing obfuscation in Java Edition

#206
post #202

Earlier quoted context omitted.

In many ways it remains ahead of the curve. Kids that grow up making games in Roblox rarely survive the jump to a dedicated engine because Roblox is just so much easier to develop for in nearly every aspect. One big thing I've heard is that instantly getting working, robust online multiplayer by default baked into the engine is a major plus.

I would call multiplayer out of the box the defining feature for sure. It's challenging to get networking right, and the effort required doesn't get all that much smaller just because your game is smaller. Most engines do come with a networking framework or layer these days but Roblox gets to assume a bunch of things an engine can't, and as such provide a complete solution out of the box.

They originally accomplished this with an interesting approach to netcode you couldn't do today.

Everything was replicated in the client and server. So you could open Cheat Engine, modify your total $$$ on the client, and it would propagate to the server and everyone else playing.

They only fixed this in 2014 with FilteringEnabled/RemoteFunctions but that was opt-in until 2018 and fully rolled out in 2021 (breaking most classic Roblox games). This also made games much harder to develop.

Re: Minecraft removing obfuscation in Java Edition

#207
post #166

Earlier quoted context omitted.

And there's no way to do only the optimisation part? Surely you could optimise without messing up class and method names..?

One of the biggest optimizations it offers is shrinking the size of the classes by obfuscating the names. If you're obfuscating the names anyway, there's no reason that the names have to be the same length. "hn$z" is a heck of a lot smaller than "tld.organization.product.domain.concern.ClassName"

Yeah in some ways the obfuscation and mappings are similar to minification and sourcemaps in javascript.

Re: Minecraft removing obfuscation in Java Edition

#208

Earlier quoted context omitted.

There's no reason for them not to. Open source launchers using the "honor system" for account verification are already established and normalized. It's trivial to just comment out that verification. The jars and assets are free to download from Microsoft's servers without needing an account. It's a trivial game to get without paying, so I don't see any downside for them to open source the engine.

Honestly, I would almost settle for Microsoft open sourcing the Minecraft Java back-end server at a minimum. This alone is long overdue. The massive fanbase could have started to maintain it in ways Microsoft could only fathom.

the client and server are the jar file, but net.minecraft.client deleted, client has both.

Re: Minecraft removing obfuscation in Java Edition

#209
post #94

It's extraordinary to me that Minecraft is both the game that has the most robust mod community out there and that the modders were working from obfuscated, decompiled Java binaries. With elaborate tooling to deobfuscate and then reobfuscate using the same mangled names. For over a decade! What dedication.

To be fair, since 2019 Mojang has been providing the mappings instead of everyone having to use community-created ones.

Very few people use mojang mappings -- the two big modloaders, forge and fabric (and their derivatives) have their own mappings respectively, due to the restrictions of the mojang mappings. It's possible to use the mojang mappings, but much less common.

Re: Minecraft removing obfuscation in Java Edition

#210

Proguard obfuscation, particularly when you get to aggressive renaming (there are a lot of valid characters for a java class or method), flattening, overloading and inlining, can make it very hard to understand what is actually happening. Its great to make this step.

minecraft had none of these, it only had clean and predictable name obfuscation.
Post reply on HN