Live data from Hacker News

Minecraft removing obfuscation in Java Edition

minecraft.net

161–170 of 478 posts

Re: Minecraft removing obfuscation in Java Edition

#161
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…

I am currently being radicalised against OOP because of one specific senior in my team that uses it relentlessly, no matter the problem domain. I recognise there are problems where OOP is a good abstraction, but there are so many places where it isn't. I suspect many OOP haters have experienced what I'm currently experiencing, stateful objects for handing calculations that should be stateless, a confusing bag of meth…

You could write crappy code in any language. I don't think it's specific for Java. Overall I think java is pretty good, especially for big code bases.

Re: Minecraft removing obfuscation in Java Edition

#162
post #81

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…

I disagree with regard to Minecraft (only game I played in that list). I bought the game while it was in alpha and even then the single player experience was outstanding and sucked me in. I still have vivid memories from 15+ years ago. The balance of creativity and survival (and friggen creepers) was perfect. I dont think I am alone in saying this. IIRC the game was making millions while still in alpha.

Yeah, I think Minecraft definitely still would have been a hit without any modding. Though it might not have become the absolute juggernaut that it is now without it -- it's hard to say for sure.

Re: Minecraft removing obfuscation in Java Edition

#163
post #148
post #73

Earlier quoted context omitted.

Community can go a long way towards compensating for worse technology, yeah.

Community is the entire goal. The technology just has to meet some minimum threshold. You know any 13 year olds playing Minetest?

I don't know any 13-year-olds, but I hear that a lot of them do play Minetest.

Re: Minecraft removing obfuscation in Java Edition

#164

Earlier quoted context omitted.

Back in 2010 Notch promised > Once sales start dying and a minimum time has passed, I will release the game source code as some kind of open source. https://web.archive.org/web/20100301103851/http://www.minecr...

I'm pretty sure A Minecraft Movie has already made more money that the game had made when he made that promise. Back then he couldn't have foreseen the size of the money printing factory that the game would become.

I remember when Minecraft was sold for $2 billion and people thought it was madness and would never make the money back.

Since then they've made that back on game copies alone, and god only knows how much from movie/merch rights and microtransactions.

Re: Minecraft removing obfuscation in Java Edition

#165
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…

I think the OO hatred comes from how academia and certain enterprise organisations for our industry picked it up and taught it like a religion. Molding an entire generation og developers who wrote some really horrible code because they were taught that abstractions were, always, correct. It obviously weren't so outside those institutions, the world slowly realized that abstractions were in many ways worse for cyclomatic complexity than what came before. Maybe not in a perfect world where people don't write shitty code on a thursday afternoon after a long day of horrible meetings in a long week of having a baby cry every night.

As with everything, there isn't a golden rule to follow. Sometimes OO makes sense, sometimes it doesn't. I rarely use it, or abstractions in general, but there are some things where it's just the right fit.

Re: Minecraft removing obfuscation in Java Edition

#166

Earlier quoted context omitted.

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.

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

Re: Minecraft removing obfuscation in Java Edition

#167
post #10

> But we encourage people to get creative both in Minecraft and with Minecraft – so in 2019 we tried to make this tedious process a little easier by releasing “obfuscation mappings”. These mappings were essentially a long list that allowed people to match the obfuscated terms to un-obfuscated terms. This alleviated the issue a little, as modders didn’t need to puzzle out what everything did, or what it should be call…

A lot of mod tooling was built around the obfuscated or community names for those APIs.

Hyrum's Law

Re: Minecraft removing obfuscation in Java Edition

#168

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.

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.

indeed. with how good and cheap/free decompilers have gotten over the years my preferred way to read abstraction-happy c++ and rust code is to compile it with optimisations and debug symbols and then read the decompiler output.

Re: Minecraft removing obfuscation in Java Edition

#169
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…

As a reverse engineer, I totally get the phrase.

Even with non-obfuscated code, if you're working with a decompilation you don't get any of the accompanying code comments or documentation. The more abstractions are present, the harder it is to understand what's going on. And, the harder it is to figure out what code changes are needed to implement your desired feature.

C++ vtables are especially annoying. You can see the dispatch, but it's really hard to find the corresponding implementation from static analysis alone. If I had to choose between "no variable names" and "no vtables", I'd pick the latter.

Re: Minecraft removing obfuscation in Java Edition

#170

Earlier quoted context omitted.

I am currently being radicalised against OOP because of one specific senior in my team that uses it relentlessly, no matter the problem domain. I recognise there are problems where OOP is a good abstraction, but there are so many places where it isn't. I suspect many OOP haters have experienced what I'm currently experiencing, stateful objects for handing calculations that should be stateless, a confusing bag of meth…

You could write crappy code in any language. I don't think it's specific for Java. Overall I think java is pretty good, especially for big code bases.

But there's a real difference how easy it is to write crappy code in a language. In regards to java that'd be, for example, nullability, or mutability. Kotlin, in comparison, makes those explicit and eliminates some pain points. You'd have to go out of your way and make your code actively worse for it to be on the same level as the same java code.

And then there's a reason they're teaching the "functional core, imperative shell" pattern.

Post reply on HN