Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

151–160 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#151

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.

Java is pretty easy to decompile and it's not a huge amount of effort to poke into the generated JVM code and start doing things. If you have a decent idea of how VMs work, C-like languages work, and how object dispatch works it's really not that hard. Also the early modding scene for Minecraft was really fun. I was a huge Minecraft player at the time and was early into the deobfuscating -> modding scene and the community was one of the most fun computing communities I've been in. Due to how focused it was on the game and its output it wasn't bogged down in nearly as much bikeshedding and philosophy as most FOSS projects get. Honestly one of the highlights of the coding I've done in my life.

Re: Minecraft removing obfuscation in Java Edition

#152

Earlier quoted context omitted.

Not only working around proguard, but Minecraft mods are built on top of an incredibly cool and flexible runtime class file rewriting framework that means that each JAR can use simple declarative annotations like @Inject to rewrite minecraft methods on the fly when their mod is loaded or unloaded. This massively revolutionized mod development, which was previously reliant on tens of thousands of lines of manually com…

The devs for Java Edition really have mods in mind nowadays. - They left in the code debug features that they used to strip out. - They left in the code their testing infrastructure that they used to strip out as well. - They started making everything namespaced to differentiate contents between mods (like in this week's snapshot they made gamerules namespaced with the "minecraft:" prefix like items and blocks and wh…

They've also been working with a lot of modders on the rendering engine over the past year or two.

Re: Minecraft removing obfuscation in Java Edition

#153
post #91
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,…

how big was Roblox in 2006? > In that era, I'd have to download Steam, buy individual games like Counterstrike, and the wackiest thing would be the "surf" gamemode. You could also play any Source mod. Also WC3 maps were insane at the time.

Roblox was tiny in 2006. I joined in 2008. It was still leading the market.

To give an example, Roblox added user-created cosmetic t-shirts as a way to monetize the platform. Developers immediately scripted their games to recognize special "VIP t-shirts" that would provide in-game benefits. And quickly created idle games called "tycoons" where you could wait 2 hours to accumulate money to buy a fortress, or buy the t-shirt to skip all that.

I don't think there were any modding systems with mtx support.

Re: Minecraft removing obfuscation in Java Edition

#154
post #75

Earlier quoted context omitted.

The sounds maybe, but the music? If there's one game whose music I always turn off instantly it's Minecraft. Touhou Youyoumu Minecraft ain't.

The music is definitely considered classic, you can find tons of people online talking about how it means a lot to them - and personally, I really loved the music.

It's even recognized by the Library of Congress!

https://www.loc.gov/static/programs/national-recording-prese...

Re: Minecraft removing obfuscation in Java Edition

#155
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.

Why do they obfuscate if they're just going to provide the mappings?

Re: Minecraft removing obfuscation in Java Edition

#156

Minecraft, Roblox, Geometry Dash, Trackmania...these are games that succeeded because of their communities. Alone, they don't provide much for the average player, but creative players build interesting things that appeal to everyone. I think one of the reasons Vision Pro and metaverse have been struggling is because their engines are bad. Not just locked down, but hard to develop on (although I don't have personal ex…

You can add the Flight Simulator series to the list, which spawned a vast ecosystem of add-ons, both free and commercial. I believe though, that what you actually need as a big or small company, is good game first and foremost; the engine is secondary. When the community around a game reaches a critical mass, the very small percentage of its members who have the skills to modify things becomes significant as well. Fo…

The thing is, Minecraft of 10 years ago (or more) wasn’t even really that great of a game. It wasn’t bad, I enjoyed it, but it wasn’t that great.

What it did do right was be very open-ended and be conducive to modding, both of which were amplified by multiplayer capabilities.

I would wager that most of the fun players have had in Minecraft is from experiences that were built on top of Minecraft, not from the game’s own gameplay.

Re: Minecraft removing obfuscation in Java Edition

#157
post #137

Earlier quoted context omitted.

More proof that you don't need the source code to modify software. Then again, Java has always been easy to decompile, and IMHO the biggest obstacle to understanding is the "object-oriented obfuscation" that's inherent in large codebases even when you have the original source.

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 taught me to avoid applying for jobs that used Java.

I like OOP and often use it. But mostly just as an encapsulation of functionality, and I never use interfaces or the like.

Re: Minecraft removing obfuscation in Java Edition

#158

I wonder what Minecraft sales are like these days. I'd imagine most of the people who are going to buy it already have. Makes me wonder if they'll ever open the whole thing up.

Just think of the untapped market of fresh 9 year olds who've never seen/played the game before. It's infinite, there will always be more people who have never played Minecraft.

Re: Minecraft removing obfuscation in Java Edition

#159
post #94

Earlier quoted context omitted.

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

Why do they obfuscate if they're just going to provide the mappings?

Well, maybe that's why they're not obfuscating anymore.

Re: Minecraft removing obfuscation in Java Edition

#160
post #94

Earlier quoted context omitted.

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

Why do they obfuscate if they're just going to provide the mappings?

Proguard can also apply optimizations while it obfuscates. I think a good JVM will eventually do most of them itself, but it can help code size and warm-up. I'm guessing as JVMs get better and everyone is less sensitive to file sizes, this matters less and less.
Post reply on HN