_______ __ _______
| | |.---.-..----.| |--..-----..----. | | |.-----..--.--.--..-----.
| || _ || __|| < | -__|| _| | || -__|| | | ||__ --|
|___|___||___._||____||__|__||_____||__| |__|____||_____||________||_____|
on Gopher (inofficial)
URI Visit Hacker News on the Web
COMMENT PAGE FOR:
URI Minecraft removing obfuscation in Java Edition
nullfield wrote 2 hours 48 min ago:
One and only account (Mojang) that I can think of that I lost because
it got taken over, and I couldnât get support to help fix it
(something about âgo make another Mojang accountâ?)⦠and since I
donât really get the migration process they did or final outcome,
itâs more of a âoh well losing that sucksâ.
Alex4386 wrote 4 hours 40 min ago:
"Minecraft: Java Edition" has been obfuscated since the release. <
Classic Microsoft move.
No, It was obfuscated since around 1.8 when you (Microsoft) buy up
Mojang Studios. before that? meh, It wasn't. That's the main reason why
JE has broader mod ecosystem from the start., result being 1.7.2 being
the one of the most active modded versions since most of them can't get
passed to around 1.8.
The motive behind this is probably due to them finding out people can
not get their mods/server software updated in-time (due to extra work
required) and this leading people being really reluctant to update
their versions.
creatonez wrote 26 min ago:
> No, It was obfuscated since around 1.8 when you (Microsoft) buy up
Mojang Studios. before that? meh, It wasn't.
Huh? This is not true. The very first version released in 2009 was
obfuscated with ProGuard, the same obfuscator used today.
The reason Minecraft 1.7 was a popular version for modding was
because Forge was taking too long to come out, and the block model
system was changed in a fundamental way in the next update. Has
nothing to do with obfuscation.
> The motive behind this is probably due to them finding out people
can not get their mods/server software updated in-time (due to extra
work required) and this leading people being really reluctant to
update their versions.
Not really accurate. The Minecraft modding ecosystem has more agility
right now than it ever had in the past. In the past 3 years, people
have actually started updating their game & targeting the latest
version. Minecraft 1.21.1 has the highest number of mods in the
history of the game.
pta2002 wrote 42 min ago:
I learned to code by modding Minecraft, starting at ~1.6 a few years
before the Microsoft acquisition.
It was definitely already obfuscated by then, the Microsoft
acquisition had nothing to do with it.
If anything, looking back all the years, Microsoft has largely
delivered on the promise to not fuck up the game and its community.
Theyâve mostly kept their hands off it, besides the Microsoft
account stuff (which makes sense why they did it, but a lot of people
are still understandably annoyed). Hell, theyâve kept up two
separate codebases in fairly close feature parity for _years_. I
doubt theyâd have kept JE if there werenât people in that team
who genuinely cared.
xboxnolifes wrote 1 hour 10 min ago:
Minecraft has been obfuscate since the start. Even 1.7 is still
obfuscated.
nxobject wrote 6 hours 27 min ago:
I got my start coding by modding Minecraft - I added a quest system;
one day I wanted to add dialogue trees and slowly turn it into a RPG. I
hope future generations will always have this wonderful opportunity,
this low barrier to entry opportunity to do substantial
personal-passion mods.
SurceBeats wrote 7 hours 39 min ago:
These are definitely good news!!!
time4tea wrote 8 hours 1 min ago:
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.
kachapopopow wrote 4 hours 50 min ago:
minecraft had none of these, it only had clean and predictable name
obfuscation.
charcircuit wrote 10 hours 51 min ago:
I would rather see allowing creators to monetize their Java edition
mods again, and to get rid of their restrictive rules on mods. The old
version of the EULA actually gave people a lot of freedom, but then
they changed the rules on everyone and locked it down. Obfuscation is
not a true problem compared to those.
ReFruity wrote 11 hours 16 min ago:
One of my favorite mods ever across any game is Create for Minecraft.
It is well-made and polished, and sparked a whole ecosystem of mods
that work with it. I wonder what possibilities the de-obfuscation can
bring to that ecosystem.
huhtenberg wrote 11 hours 32 min ago:
Ha, this explains then why MSFT dropped 4% after hours!
ilsubyeega wrote 8 hours 16 min ago:
might be another issue: the azure outage
James_K wrote 11 hours 46 min ago:
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.
smlacy wrote 9 hours 35 min ago:
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.
James_K wrote 6 hours 2 min ago:
They're playing Roblox and Fortnite these days, both free of
course.
bityard wrote 11 hours 54 min ago:
Asking from a place of sincere ignorance: TFA says the code was
obfuscated from the beginning, and that they deliberately kept it
obfuscated all these years, and acknowleded the huge community that
built mods for Minecraft in spite of it. But what TFA doesn't say:
Why did they keep it obfuscated for so long even after it became
readily apparent that almost everyone buys Minecraft to (eventually)
play the mods?
Why did they keep it obfuscated even though they acknowledged it didn't
really stop modders (or anyone else) from understanding the program?
What occurred recently that caused them to change their mind?
unleaded wrote 8 hours 14 min ago:
"It does have some technical benefits for us, but it is a symbol that
this game is not open source. You still can't publish the maps or the
code decompiled, even using the maps."
URI [1]: https://twitter.com/Dinnerbone/status/1169242801508376582
LelouBil wrote 12 hours 23 min ago:
Maybe they'll publish javadoc jars down the line !
txrx0000 wrote 12 hours 29 min ago:
This is surprising. Perhaps the Minecraft devs and community are
dedicated and capable enough to prevent it from being enshittified by
Microsoft. It might even be open-sourced someday.
RGBCube wrote 12 hours 29 min ago:
Even if they made it Source Available it wouldn't hurt them much,
because Minecraft is very easy to pirate and the reason anyone pays for
anything at all is because you need an account in Mojang's
authentication servers (which people do not want to move off of for
various reasons).
Hell, they could even make it Open Source with a clause preventing
other companies from using to code to make a profit. It's too big to
fail.
TheDong wrote 10 hours 46 min ago:
> Hell, they could even make it Open Source with a clause preventing
other companies from using to code to make a profit
Such a clause would immediately make it Source Available not Open
Source.
spullara wrote 13 hours 6 min ago:
You know what would make it even easier? Releasing the source code with
a license that allows for modding.
nisegami wrote 13 hours 10 min ago:
I consider Microsoft to be genuinely evil as an institution, but this
is still nice to see.
kgwxd wrote 7 hours 54 min ago:
I fear it's the first step to announcing the discontinuation of Java
Edition development.
squigz wrote 2 hours 2 min ago:
I don't really think this would be the end of the world, would it?
Much of the content they've added over the past few years has been
of questionable merit, at least to me. Surely at some point they'll
run out of ideas that can reasonably fit inside vanilla Minecraft?
(But no, I don't think they're going to stop JE development. I'd
bet it's still the far more popular version, and they probably
still make plenty of money from sales)
nurettin wrote 13 hours 14 min ago:
Maybe they should open source the loader instead of offering a solution
to already solved problems so people don't have to resort to using
third party loaders for on-prem gaming.
mmis1000 wrote 12 hours 39 min ago:
The game is still a licensed game though. You technically must pay it
and go though proper verification to start the game. (Although it's a
100% public secret that how to load it as you want, and basically
every single mod dev kit does that for local dev)
I guess Microsoft won't want to deal with the license issue of
publishing the loader part.
nurettin wrote 3 hours 4 min ago:
I doubt they care about this or that license. They just want people
to upgrade.
64718283661 wrote 13 hours 21 min ago:
The community obfuscation mappings unrestrictively licensed. The
Microsoft ones are not. It's a trap.
einsteinx2 wrote 11 hours 0 min ago:
But the whole point is there are no more mappings. Iâm not sure
what the trap is supposed to be?
throwaway290 wrote 7 hours 41 min ago:
Your mod uses variable name FooBar in ways Microsoft don't like,
Microsoft sues you for copyright
before the judge would have to admit it was just coincident.
rstat1 wrote 2 hours 2 min ago:
They've had plenty of opportunity to do this and haven't, so
would find it incredibly unlikely they would magically start to
have a problem now
Not to mention doing would basically kill game as one of the
biggest reason people even still play Minecraft is the modding
scene, not the minimum viable effort that have been the official
updates for last number of years.
poly2it wrote 12 hours 7 min ago:
Does copyright apply to variable names?
jagged-chisel wrote 11 hours 42 min ago:
Given the Oracle v Google decision, the likely answer is yes. But
then thereâs a fair use argument to be made.
NelsonMinar wrote 13 hours 31 min ago:
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.
strbean wrote 2 hours 7 min ago:
This was how many Runescape bots were developed back in the OSRS
days. At some point (RS2?) they made the client super thin so there
were no longer methods for high level game functionality (walk to
here, get amount of gold in inventory, etc.).
quantified wrote 2 hours 56 min ago:
I watched one of my young children power themselves through the
obfuscation to learn advanced modding. There was zeal for the
knowledge and mods in that community.
kachapopopow wrote 4 hours 48 min ago:
it's actually pretty trivial and something a single person can do I
had to rebuild a server jar to source since the guy maintaining it
disappeared and it had special behaviors in it that were relied upon
for the game networks playability.
gretch wrote 7 hours 48 min ago:
In 2004 I played an MMO game on a pirated server. The owner of the
server somehow got a version of the server binary, and used a hex
editor (!) to add new features to the binary over time.
It's the closest I've ever see to someone literally being one of the
hackers from Matrix, literally staring at hexadecimal and changing
chars one at a time
twothreeone wrote 2 hours 56 min ago:
That approach is also super useful if you're manually flashing an
image onto some embedded thing (like an ECU, or other types of boot
rom). Of course on many modern systems you'll have to get around
the checksum guards, but there's typically all sorts of glitch
hacks to do that.
madog wrote 3 hours 42 min ago:
Presumably they were using a decompiler e.g. IDA Pro to know what
characters to change in the hex editor? I've done that before to
find offsets in the binary to NOP out some function calls.
int_19h wrote 6 hours 48 min ago:
URI [1]: https://doomwiki.org/wiki/DeHackEd
Loughla wrote 7 hours 26 min ago:
That's a level of dedication that I have never devoted to anything
in my life.
That's energy that could change the world if harnessed correctly.
abtinf wrote 6 hours 55 min ago:
It did change the world - it made it better for players of the
game.
Karrot_Kream wrote 10 hours 21 min ago:
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.
ZeWaka wrote 12 hours 23 min ago:
To be fair, since 2019 Mojang has been providing the mappings instead
of everyone having to use community-created ones.
undeveloper wrote 4 hours 50 min ago:
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.
creatonez wrote 43 min ago:
PaperMC exclusively uses Mojang mappings, and it's the most
popular loader for server-side modding these days.
ZeWaka wrote 3 hours 12 min ago:
Ah, I was aware of the different Fabric (Yarn) mappings and
internal names (due to the few mods like architectury) but I
think Forge switched over to Mojang's?
> As of 1.16.5 [(2021)], Forge will be using Mojangâs Official
Mappings, or MojMaps, for the forseeable future
Pretty sure this applies to NeoForge as well:
URI [1]: https://neoforged.net/personal/sciwhiz12/what-are-mappin...
zachrip wrote 9 hours 49 min ago:
Why do they obfuscate if they're just going to provide the
mappings?
singron wrote 9 hours 31 min ago:
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.
mort96 wrote 8 hours 51 min ago:
And there's no way to do only the optimisation part? Surely you
could optimise without messing up class and method names..?
the_hoser wrote 8 hours 6 min ago:
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"
voxic11 wrote 4 hours 58 min ago:
Yeah in some ways the obfuscation and mappings are similar
to minification and sourcemaps in javascript.
kulahan wrote 9 hours 31 min ago:
Well, maybe that's why they're not obfuscating anymore.
tripplyons wrote 10 hours 53 min ago:
It took me a while to find how to obtain the official mappings, but
this article seems to have instructions: [1] According to the
article, official mappings can be found here:
URI [1]: https://minescript.net/mappings
URI [2]: https://piston-meta.mojang.com/mc/game/version_manifest_v2...
mikkupikku wrote 10 hours 44 min ago:
They're also linked on the wiki page for each release, along with
links to the client and server jars:
URI [1]: https://minecraft.wiki/w/Java_Edition_1.21.5
userbinator wrote 12 hours 28 min ago:
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.
5- wrote 8 hours 45 min ago:
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.
abraae wrote 10 hours 58 min ago:
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 the real world a person can be both employee and
contractor at the same time, can flit between those roles and many
others, can temporarily park a role (e.g sabbatical) and many other
permutations, all while maintaining history and even allowing for
corrections of said history.
It would be hard to find any domain less suited to OO that HR
records. I think these terrible examples are a primary reason for
some people believing that OO is useless or worse than useless.
userbinator wrote 1 hour 31 min ago:
It's all about the problem domain imo. I can't imagine building
something like a graphics framework without some subtyping.
The keyword being "some".
Yes, there are those who can use OOP responsibly, but in my
(fortunately short) experience with Enterprise Java, they are
outnumbered by the cargo-cult dogma of architecture astronauts
who advocate a "more is better" approach to abstraction and
design patterns. That's how you end up with things like
AbstractSingletonProxyFactoryBean.
Brian_K_White wrote 1 hour 52 min ago:
If everyone does it wrong, then that alone means it itself is
wrong.
qwertytyyuu wrote 2 hours 58 min ago:
That's why we use depedency injection now~~!
tormeh wrote 54 min ago:
I've always wanted my editor's go-to functionality to take me
to an abstract class instead of the place where the actual
logic resides. Good times.
haglin wrote 3 hours 42 min ago:
I find inheritance works best when you model things that don't
exist in reality, but only as software concepts, for example, an
AbstractList, Buffer or GUI component.
andai wrote 6 hours 34 min ago:
Tried to modify one boolean in a codebase a few weeks ago and I
had to go thru like 12 levels of indirection to find "the code
that actually runs".
jdswain wrote 7 hours 43 min ago:
(Hi Andrew)
It's the misuse of OO constructs that gives it a bad name, almost
always that is inheritance being overused/misused. Encapsulation
and modularity are important for larger code bases, and
polymorphism is useful for making code simpler, smaller and more
understandable.
Maybe the extra long names in java also don't help too, along
with the overuse/forced use of patterns? At least it's not
Hungarian notation.
abraae wrote 1 hour 42 min ago:
Jason! Couldn't agree more.
Retr0id wrote 8 hours 42 min ago:
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.
devjab wrote 8 hours 52 min ago:
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.
rcruzeiro wrote 7 hours 46 min ago:
> 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.
This, this, this. So much this.
Back when I was in uni, Sun had donated basically an entire lab
of those computers terminals that you used to sign in to with a
smart card (I forgot the name). In exchange, the uni agreed to
teach all classes related to programming in Java, and to have
the professors certify in Java (never mind the fact that nobody
ever used that laboratory because the lab techs had no idea how
to work with those terminals).
As a result of this, every class from algorithms, to software
architecture felt like like a Java cult indoctrination. One of
the professors actually said C was dead because Java was
clearly superior.
anonzzzies wrote 1 hour 30 min ago:
> One of the professors actually said C was dead because Java
was clearly superior.
In our uni (around 1998/99) all professors said that except
the Haskell teacher who indeed called Java a mistake (but c
also).
rasz wrote 2 hours 51 min ago:
And now you know how Nvidia CUDA got so popular.
mayoff wrote 3 hours 30 min ago:
Probably the Sun Ray computer.
URI [1]: https://en.wikipedia.org/wiki/Sun_Ray
taneq wrote 7 hours 58 min ago:
Much like Agile, or Hungarian notation. When a general
principle becomes a religion it ceases to be a good general
principle.
mywittyname wrote 9 hours 35 min ago:
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.
locknitpicker wrote 3 hours 0 min ago:
> 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.
Perhaps I'm not following, but dynamically loaded objects are
the core feature of shared libraries. Among it's purposes, it
allows code to be reused and even updated without having to
recompile the project. That's pretty useful.
Interfaces are also very important. They allow your components
to be testable and mockable. You cannot have quality software
without these basic testing techniques. Also, interfaces are
extremely important to allow your components to be easily
replaced even at runtime.
Perhaps you haven't had the opportunity to experience the
advantages of using these techniques, or were you mindful of
when you benefited from them. We tend to remember the bad parts
and assume the good parts are a given. But personal tastes
don't refute the value and usefulness of features you never
learned to appreciate.
athrowaway3z wrote 4 min ago:
We're talking about OO Java. You bring up shared libraries,
list a bunch of things not unique to Java nor OO, then claim
`etc.` benefits.
You really haven't argued anything, so ending on a "you must
be personally blind jab" just looks dumb.
jjmarr wrote 3 hours 24 min ago:
It's very useful in C++, funnily enough. This is because I can
have a non-templated interface base class, then a templated
impl class.
Then my templated impl header can be very heavy without killing
my build times since only the interface base class is
#included.
Not sure if this is as common in Java.
vasvir wrote 12 min ago:
Java uses type erasure which are very cheap in compile time
but you cannot do things like
t = new T(); // T is a template parameter class
C++ uses reified generics which are heavy on compile time but
allows the above.
Nursie wrote 5 hours 14 min ago:
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.
Quekid5 wrote 10 hours 23 min ago:
> I can't imagine building something like a graphics framework
without some subtyping.
While React technically uses some OOP, in practice it's a pretty
non-OOP way do UI. Same with e.g. ImGUI (C++), Clay (C). I
suppose for the React case there's still an OOP thing called the
DOM underneath, but that's pretty abstracted.
In practice most of the useful parts of OOP can be done with a
"bag/record of functions". (Though not all. OCaml has some
interesting stuff wrt. the FP+OOP combo which hasn't been done
elsewhere, but that may just be because it wasn't ultimately all
that useful.)
MobiusHorizons wrote 6 hours 44 min ago:
React is most likely not what the author had in mind by a
graphics framework. The browser implementation of the DOM or a
desktop widget system is much more likely the idea.
pavo-etc wrote 10 hours 46 min ago:
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 methods that are
sometimes hidden behind getters so you can't even easily tell
where the computation is happening, etc
quantified wrote 2 hours 51 min ago:
Separation of data and algorithm is so useful. I can't really
comment on how your senior is doing it, but in the area of
numeric calculations, making numbers know anything about their
calcs is a Bad Idea. Even associations with their units or
other metadata should be loose. Functional programming provides
such a useful intellectual toolkit even if you program in Java.
Sorry to learn, hope you don't get scar tissue from it.
Romario77 wrote 9 hours 31 min ago:
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.
taneq wrote 8 hours 1 min ago:
You gotta admit, though, that a language which strongarms you
into writing classes with hidden state and then extending and
composing them endlessly is kinda pushing you in that
direction.
Itâs certainly possible to write good code in Java but it
does still lend itself to abuse by the kind of person that
treated Design Patterns as a Bible.
stirfish wrote 4 hours 36 min ago:
>kind of person that treated Design Patterns as a Bible
I have a vague idea of what the Bible says, but I have my
favorite parts that I sometimes get loud about.
Specifically, please think really hard before making a
Singleton, and then don't do it.
taneq wrote 3 hours 5 min ago:
OK yeah that's a pretty good general principle. You think
you only need one of these? Are you absolutely certain?
You SURE? Wrong, you now need two. Or three.
stefs wrote 8 hours 33 min ago:
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.
fiddlerwoaroof wrote 3 hours 44 min ago:
On the other hand, Java's tooling for correctly refactoring
at scale is pretty impressive: using IntelliJ, it's pretty
tractable to unwind quite a few messes using automatic
tools in a way that's hard to match in many languages that
are often considered better.
ed_elliott_asc wrote 11 hours 18 min ago:
Tbh decompiling software and figuring out how it works isnât easy
but that is part of the fun :) - itâs the reason ive ended up
following many of the weird paths in computing that I have
pphysch wrote 12 hours 3 min ago:
Agreed; modding obfuscated Java is impressive, but not quite on the
level of modding in the (Nintendo) emulation community. The things
that have been achieved with classic Nintendo titles are absurd,
like adding high-performance online multiplayer to Super Smash Bro.
Melee.
karlding wrote 11 hours 34 min ago:
Said online multiplayer [0].
The devs also wrote a write-up here about how they handle the
desyncs in netcode [1].
[0] [1]
URI [1]: https://slippi.gg/
URI [2]: https://medium.com/project-slippi/fighting-desyncs-in-me...
1313ed01 wrote 12 hours 59 min ago:
I am terrified by Minecraft mods always being distributed from dodgy
download sites and not rarely come with their own Windows EXE
installers. And as far as I know there is no sandboxing at all in the
game (uhm, no pun intended) so once installed the mod has full access
to your computer?
pdntspa wrote 11 hours 21 min ago:
Yes, much like how most software for PC has been written since the
beginning of time?
quamserena wrote 11 hours 25 min ago:
Yeah mods are just regular Java .jars that can do anything. To
circumvent this issue Mojang introduced datapacks but they are
super limited in what they can do. Theyâre basically just
Minecraft commands in a file along with some manifest files to
change e.g. mob loot drop rates. These Minecraft commands are
Turing complete but a huge PITA to work with directly, no concept
of local variables or if statements, no network access, etc. Every
entity in MC has associated NBT data that is similar to JSON that
stores values like position, velocity, inventory, etc. You can
change NBT with commands for mobs, but in what can only be
described as a religious decision, Minecraft commands are unable to
modify player NBT. So for example it is impossible to impart a
velocity on a player.
One wonders why Mojang didnât embed Lua or Python or something
and instead hand-rolled an even shittier version of Bash. The only
reason MC servers like Hypixel exist is because the community
developed an API on top of the vanilla jar that makes plugin
development easy. Even with that there is still no way for servers
to run client-side code, severely limiting what you can do. They
couldâve easily captured all of Robloxâs marketshare but just
let that opportunity slip through their fingers. Through this and a
series of other boneheaded decisions (huge breaking changes,
changes to the base game, lack of optimization), they have
seriously fractured their ecosystem:
- PvP is in 1.8 (a version from 2015) or sometimes even 1.7 (from
2013)
- Some technical Minecraft is latest, some is in 1.12 (from 2017)
- Adventure maps are latest version
- Casual players play Bedrock (an entirely different codebase!)
The words âstable APIâ have never been said in the Mojang
offices. So the community made their own for different versions,
servers use the Bukkit 1.8 API, client 1.8 mods use Forge, latest
mods use Forge or Fabric. The deobfuscated names are of little
utility because the old names are so well ingrained, and modders
will also probably avoid them for legal reasons.
charcircuit wrote 10 hours 56 min ago:
Bedrock has proper mod support and you can program with
Typescript.
quamserena wrote 10 hours 30 min ago:
Better than datapacks overall but lacks a way to plug into the
rendering pipeline or make custom dimensions. Java mods have
more capabilities
xp84 wrote 11 hours 40 min ago:
As someone whose kid has pulled me into the world of using mods
(though not (yet) making them for Java Edition) I think this PSA is
worth sharing of how to use minecraft mods without pain and with
minimal risk, in case anyone is getting started, or has gotten
started and finds it frustrating:
1. Use MultiMC to manage instances with various mods, since mods
are rarely compatible with each other, and since each version of a
mod only is compatible with a single specific point release of the
game itself.
Never download any EXE files to get a mod, that does sound sketch
AF.
2. mods are always packaged for a particular Loader (some package
for multiples and some require Forge, Fabric, or NeoForge), and
MultiMC can install any of them into a given instance. Aside from
different startup screens there seems to be no difference so idk
why we need 3 different ones.
3. Curseforge's website and modrinth both seem to be legit places
to get mods from. I personally find the installable Curseforge
program itself to be bad and spammy, and would never use that, but
the site still lets you directly download the jars you need, and
lets you check "Dependencies" to find out what other mods you need.
vintermann wrote 2 hours 41 min ago:
Curseforge is OK, Modrinth is a less commercial alternative. The
ten first Google hits if you search "Minecraft mods" are probably
NOT OK, most Minecraft-related stuff is SEO optimized to hell by
sites which are very fishy.
yrxuthst wrote 10 hours 25 min ago:
There are actually two versions of the Curseforge client, the
"Overwolf" version that is built on that platform (and is quite
bad as a result) and a newer standalone version that doesn't use
Overwolf, it's much better.
mikkupikku wrote 11 hours 20 min ago:
If you're using MuliMC or one of its various forks, you can
search for and install mods from modrinth or curseforge right in
the launcher. I fine it more convienent than doing it with a
browser and dragging them in, but either way works.
SkiFire13 wrote 12 hours 29 min ago:
> I am terrified by Minecraft mods always being distributed from
dodgy download sites and not rarely come with their own Windows EXE
installers.
That's not their main mean of distribution, most often those sites
were just third parties unrelated to the mod authors that
repackaged the mod and somehow got a better SEO. But TBF back in
the days the UX/UI for installing mods was pretty terrible.
Nowadays there are more standardized and moderated distribution
websites from which you just download the .jar of the mod.
> And as far as I know there is no sandboxing at all in the game
(uhm, no pun intended) so once installed the mod has full access to
your computer?
This is totally true though.
superb_dev wrote 12 hours 42 min ago:
This is not the norm these days! There are popular mod loaders like
curseforge that pulled from moderated repositories. Itâs still
not bulletproof, but a far cry from trusting some installer
executable
Imustaskforhelp wrote 12 hours 23 min ago:
I prefer modrinth as well, both are good but curseforge has done
some things which makes us require an api etc. for true
automation where modrinth is genuinely nice.
I used to use prism launcher which would just give me a search
box and It on the side would have things like modrinth /
curseforge etc., Usually I preferred Modrinth but there were some
modpacks just on curseforge only but I never really downloaded a
shady modpack from some random website aside from these two, In
fact sometimes I never opened up a website but just prismlauncher
itself lol
superb_dev wrote 8 hours 22 min ago:
+1 for Prism Launcher and Modrinth! I use Prism on my Steam
Deck. I wouldâve mentioned them both but Curseforge was the
only name I could remember
trenchpilgrim wrote 12 hours 58 min ago:
Yup very common to take a popular minecraft mod, insert malware,
rehost it, and seo your way into getting downloads.
krackers wrote 13 hours 14 min ago:
Me too. Having only a vague familiarity with the game, I thought that
mods were using some official plugin system. I had no idea that
minecraft modders (presumably kids/teens?) were not only reverse
engineering things but also creating an entire ecosystem to work
around proguard.
creatonez wrote 39 min ago:
> I had no idea that minecraft modders (presumably kids/teens?)
[...]
Players who were teenagers when the game first came out are now 29
to 35 years old. It's a pretty ancient game at this point. From my
experience, most contemporary modders are in their late 20s.
We're still relying on legacy code written by inexperienced kids,
though...
userbinator wrote 2 hours 30 min ago:
I wonder how much overlap Minecraft modders have with the Android
custom ROM/app-modding community, another thing that the easy
"reversibility" of Java has spawned.
chillfox wrote 6 hours 51 min ago:
While I don't doubt that some mods are created by teens, just under
half of Minecraft players are adults.
Philip-J-Fry wrote 11 hours 5 min ago:
Most modders aren't reverse engineering the game. There's a small
community that are doing the obfuscation and then everyone else is
effectively working from normal Java code.
vintermann wrote 2 hours 46 min ago:
It's that way for most modding scenes. Someone makes an API/mod
loader which makes it easy, then a lot of enthusiastic players
make mods.
Nition wrote 12 hours 16 min ago:
I remember Notch saying in 2010 that he planned to add an official
modding API, but it never actually happened.
---
Edit:
URI [1]: https://web.archive.org/web/20100708183651/http://notch.tu...
nightpool wrote 11 hours 58 min ago:
Data packs were released in October 2017! And we had command
blocks in 2012 for custom maps
nightpool wrote 12 hours 32 min ago:
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 compiled patches that would create "modding
APIs" for developers to use. Putting the patching tools in the
hands of the mod developers has really opened up so many more
doors.
Minecraft also has a plugin system based around JSON file
datapacks, but it's a lot more limited. It's more at the level of
scope of adding a few cool features to custom maps then completely
modding the game.
LelouBil wrote 12 hours 26 min ago:
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 whatnot)
- They are adding a lot more "building blocks" type features that
both allow new /easier things in datapacks, and in mods as well.
Method patching with Mixins is less needed now because the game's
internal APIs are more versatile than ever.
ZeWaka wrote 10 hours 14 min ago:
They've also been working with a lot of modders on the
rendering engine over the past year or two.
nightpool wrote 12 hours 0 min ago:
That's definitely true, and I think that's a testament to
Minecraft / Java's strong OO designâit dovetails very nicely
with the Open/Close principle. However my view is that for a
mod to be a mod, there's always going to be stuff that you
can't/shouldn't implement just with datapacksâwhether that's
complex rendering features, new entity logic, or whatever. The
Mixin processor makes it really easy to build these kinds of
features in a very compatible way
hyghjiyhu wrote 11 hours 15 min ago:
These tools sound very powerful, could they find use for
other Java codebases?
6SixTy wrote 12 hours 34 min ago:
There is and kind of isn't. There are community led modding apis,
but also datapacks that are more limited but still allow someone to
do cool stuff leveraging tools, items, etc already in the game.
If you remember entire contraptions of command blocks doing stuff
like playing Pokemon Red in Minecraft or "one commands" that
summoned an entire obelisk of command blocks, the introduction of
datapacks pretty much replaced both of those.
bitexploder wrote 13 hours 3 min ago:
Over time people learned the key APIs and classes that you needed
to interact with. And obfuscated Java is like an order of magnitude
easier to work with than machine code. Once someone figured out how
to do something it was generally pretty easy to use that interface
to do your own thing. Modders of course still often hit edge cases
that required more reversing, but yeah, it was really cool to watch
over the last 15+ years :)
hackthemack wrote 13 hours 35 min ago:
I much prefer just writing stuff for Luanti (formerly minetest).
You can, pretty much, get the Minecraft experience by downloading mods.
Or just use the VoxeLibre game mod. [1] The mods are written in lua and
you can find the source code for most of them.
One I like is Zoonami which turns the experience into a Pokemon like
game.
URI [1]: https://content.luanti.org/packages/Wuzzy/mineclone2/
URI [2]: https://content.luanti.org/packages/isaiah658/zoonami/
nickstinemates wrote 7 hours 36 min ago:
does something like AllTheMods 10 exist for Luanti? Or Meatballcraft?
hackthemack wrote 6 hours 6 min ago:
The Luanti client lets you search and install mods from
content.luanti.org
It differentiates between mods and games. A game changes the core
game to be much more different, but sometimes a game is just a
collection of some other mods. [1] Personally, I find it more fun
to just go and click on about 6 to 8 mods that are interesting and
see how the game goes. [2] Some of my picks are... [3] [4] [5]
URI [1]: https://content.luanti.org/packages/?type=game
URI [2]: https://content.luanti.org/packages/?type=mod
URI [3]: https://content.luanti.org/packages/ElCeejo/animalia/
URI [4]: https://content.luanti.org/packages/random-wizard/gear_up/
URI [5]: https://content.luanti.org/packages/TenPlus1/farming/
URI [6]: https://content.luanti.org/packages/FreeLikeGNU/goblins/
cachius wrote 12 hours 48 min ago:
URI [1]: https://github.com/luanti-org/luanti
anthk wrote 12 hours 49 min ago:
Zoonami will achieve what Tuxemon didn't.
PaulKeeble wrote 13 hours 46 min ago:
As I understand it way back in the early Beta days of Minecraft
obfuscation was added to avoid mods being embedded into the JAR and it
being released as a combination enabling piracy of the game with mods
embedded.
This has been a pain to workaround for years as the modding scene has
gotten bigger. Hopefully this makes modding a bit more accessible.
kevincox wrote 13 hours 56 min ago:
I'm pretty excited this but for a slightly strange reason. I have a
little monitor for the logs that posts things like player joins and
deaths to a chat room. It is fun and also encourages people to hop on
the server when someone joins.
However the source information was always missing and strange in the
logs making matching some messages difficult. Hopefully this will make
more messages more unique so that I can easily match the ones I am
interested in.
squigz wrote 14 hours 20 min ago:
For those in the modding scene, what difference, if any, will this
make? Will this enable anything that was previously not possible?
yrxuthst wrote 13 hours 45 min ago:
Main difference for NeoForge developers will be method parameter
names in the IDE, the current mapping doesn't include those. We have
community mappings (Parchment) for common methods, but there are a
lot of less used functions that just have decompiler names. I don't
use Fabric so I'm not sure how it will affect those devs.
axus wrote 13 hours 57 min ago:
It's possible that the de-obfuscated symbols will be more
backwards-compatible, since they don't need to change with every
minor release. Though I'd imagined Forge and Fabric were supposed to
provide a stable platform, yet plugins for those still need a
different jar for every minor version.
VikingCoder wrote 14 hours 13 min ago:
At a guess, it will enable quicker updates on major revisions, where
things move around a lot. There will be less reverse-engineering
needed.
ZeWaka wrote 12 hours 20 min ago:
They were already releasing official mappings.
the_gipsy wrote 14 hours 17 min ago:
Should make it easy to have mods running on latest releases.
squigz wrote 14 hours 12 min ago:
But the only version that matters is 1.20.1!
kachapopopow wrote 4 hours 46 min ago:
1.2.5, the modding golden age (probably because of nostalgia)
xboxnolifes wrote 13 hours 24 min ago:
I think you typoed 1.7.10
ZeWaka wrote 12 hours 20 min ago:
I think you typed b1.7.3
Modified3019 wrote 13 hours 29 min ago:
Speak for yourself, Create supports 1.21.1 (neoforge) which is
what my bloated and fragile mess of a mod pack is built on.
Traubenfuchs wrote 14 hours 28 min ago:
I'd like to see a benchmark between the obfuscated and non obfuscated
version.
xxs wrote 13 hours 42 min ago:
same, except for meta space used - the class/variable names don't
have pretty much any meaningful impact on java runtime, when the code
is JIT'd. Even before (interpret mode) that the
className/fields/methods are just references in the constant pool
PaulKeeble wrote 13 hours 48 min ago:
The files will be a little smaller obscured but it doesn't usually
impact much other than RAM usage. The algorithms are all the same.
Given the size of methods for being JIT compiled is token based not
text size I don't think it even impacts that choice. So expect it to
be identical.
internetter wrote 14 hours 21 min ago:
Probably virtually the same. If I recall, the "obfuscation" was
mostly mangling
SkiFire13 wrote 12 hours 13 min ago:
AFAIK it also shortens the names, which might make the jar smaller
or make it take less time to do name resolution at runtime. It
probably won't be very relevant though, especially after startup.
Traubenfuchs wrote 14 hours 18 min ago:
Luckily I have never had to deal with obfuscation, but from what I
have seen there are some grotesque things like defining every
single randomly named method call in an array or map with random
order or weirdly combining or tearing apart methods.
The only time I encountered it was when I was working for the
government, we were working on the rules that decide who gets
audited in depth by the tax police. The .jar it compiled to was
obfuscated.
circuit10 wrote 12 hours 23 min ago:
For Minecraft itâs just removing names and replacing them with
random strings
xxs wrote 13 hours 38 min ago:
I have seen =tons= of obfuscation (non-minecraft). Back in the
late 90s it used to be popular, unfortunately.
Most of the stuff is like naming every method a or b, and using
the fact they are overloaded, given one-letter-name or a reserved
keyword like 'if' to classnames (or packages) was popular, too.
Pretty much constant pool modifications w/o too much
byte-code-editing.
Overall cheap and unnecessary and has not stopped anyone.
ok123456 wrote 11 hours 2 min ago:
It's still pretty popular. Most large smartphone applications
are obfuscated to some degree. At least for Android, because
it's bytecode for a VM, it's still trivial to disassemble and
understand what is happening at a high level.
wtallis wrote 14 hours 5 min ago:
My decade-old recollection is also that Minecraft's obfuscation
didn't do anything structural, just mangled class and method
names. Think of it more like JavaScript minification than a
serious attempt to thwart reverse engineering.
duskwuff wrote 13 hours 46 min ago:
Minecraft - like most Java games - just used Proguard. It
renames classes/fields/methods and sometimes inlines private
methods, but doesn't make any substantial changes to control
flow.
giancarlostoro wrote 14 hours 30 min ago:
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.
OkayPhysicist wrote 11 hours 18 min ago:
At this point, they could open source it, and just charge for
Minecraft accounts being able to authenticate with their login
servers to join authenticated Minecraft servers, and it wouldn't
change sales much.
NelsonMinar wrote 13 hours 32 min ago:
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.
URI [1]: https://web.archive.org/web/20100301103851/http://www.minecr...
umpalumpaaa wrote 6 hours 56 min ago:
Sales are still good though- right? Itâs the no paid iOS game.
PeaceTed wrote 7 hours 4 min ago:
Notch has said a lot of things over the years. Many after the sale
to Microsoft were not so great. Suddenly without purpose and more
money than he would ever need in a life time, he found a new
purpose that wasn't so great.
A lot of Qanon rants and other conspiracy things. Just goes to show
you that some times it is best you don't get what you wish for.
ntoskrnl_exe wrote 13 hours 20 min ago:
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.
pixl97 wrote 8 hours 56 min ago:
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.
ikamm wrote 13 hours 27 min ago:
Notch has said he would do many things and rarely follows through
with them. I'm still waiting for 0x10c.
I_AM_A_SMURF wrote 2 hours 39 min ago:
TBF sales didn't start dying
einsteinx2 wrote 11 hours 1 min ago:
> Once sales start dying
Has that part ever happened?
ecshafer wrote 13 hours 15 min ago:
He sold the game to Microsoft, his promises kind of don't matter
anymore.
ikamm wrote 13 hours 6 min ago:
I think you meant to reply to the parent comment, I never
mentioned Minecraft
mikkupikku wrote 13 hours 54 min ago:
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.
giancarlostoro wrote 7 hours 17 min ago:
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.
kachapopopow wrote 4 hours 52 min ago:
the client and server are the jar file, but net.minecraft.client
deleted, client has both.
kragen wrote 14 hours 7 min ago:
It sounds like you might be looking for Minetest/Luanti.
ajkjk wrote 14 hours 1 min ago:
no, I think they're looking for the official game to be open
sourced... that's much more appealing than a knockoff since it's
the version everyone actually plays.
kragen wrote 13 hours 56 min ago:
It's much less appealing because it's much harder to mod.
unleaded wrote 12 hours 32 min ago:
less appealing to who? Lots of 13 year olds learned to code by
writing minecraft mods so it can't be that hard. You also get
the benefit & satisfaction of it actually being in
Minecraftâyes, they are both very similar games where you
explore and place blocks in a procedurally generated world, but
it really does matter. I can't really explain why if you don't
get it but it's evident people do care even when they know
about Minetest.
herewulf wrote 4 hours 40 min ago:
IMHO, "actually in Minecraft" is roughly akin to "my shoes
are actually Nike".
That said, I never had any interest in playing on a server
that was populated by anyone but my small circle of friends.
Now my kids are growing up doing the same which I find great
because I know exactly with whom they are interacting and
have no worries about it.
willis936 wrote 13 hours 6 min ago:
It's much more appealing because it has a much more vibrant
modding community.
kragen wrote 12 hours 57 min ago:
Community can go a long way towards compensating for worse
technology, yeah.
nmilo wrote 10 hours 26 min ago:
Community is the entire goal. The technology just has to
meet some minimum threshold. You know any 13 year olds
playing Minetest?
herewulf wrote 4 hours 49 min ago:
My kids are younger than that and play Minetest/Luanti
all the time. They are well aware of Minecraft but are
completely engrossed by the modding first approach of
Luanti.
kragen wrote 9 hours 21 min ago:
I don't know any 13-year-olds, but I hear that a lot of
them do play Minetest.
throwaway48476 wrote 14 hours 23 min ago:
More games should be open source like doom. It doesnt effect the art
assets which are still copyrighted.
dontlaugh wrote 13 hours 58 min ago:
Amusingly, Minecraft is a counter-example. It has very few assets
and they are hardly essential to the experience.
xboxnolifes wrote 13 hours 25 min ago:
The music and sounds play a large part into the experience
though, and are much harder to replace than the textures.
tmtvl wrote 12 hours 50 min ago:
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.
MangoToupe wrote 4 hours 33 min ago:
Cannot disagree more. Probably my favorite video game music
of all time.
sodapopcan wrote 11 hours 51 min ago:
Interesting, I love Minecraft's music. I do listen to it
intentionally outside of the game, but it's not quite the
same as having it suddenly start up during gameplay. The
first I heard of someone "obviously turning off the music"
was, I kid you not, yesterday, and now I'm hearing it for a
second time today. Would woulda thunk!
tmtvl wrote 7 hours 38 min ago:
There are soundtracks I listen to outside of their games:
Castlevania Symphony of the Night, Chrono Trigger,
Shadowgate,... but Minecraft would be way near the end of
the list. The music is too generic to be worth the
attention, yet too present to work as ambiance. It kinda
reminds me of Silent Hill's soundtrack.
sodapopcan wrote 6 hours 18 min ago:
"Generic"? Ouch, lol.
xigoi wrote 11 hours 54 min ago:
I like Minecraftâs music. If there was a way to have it not
play when the game is paused or on the title screen, I would
probably keep it on.
gbear605 wrote 12 hours 43 min ago:
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.
ollien wrote 9 hours 55 min ago:
It's even recognized by the Library of Congress!
URI [1]: https://www.loc.gov/static/programs/national-recor...
HaZeust wrote 1 hour 27 min ago:
It's not hard to get into the library of congress? It's
purposely extremely easy. I forgot who it was, but there
was one big right-wing talk show host that would end all
of his segments by saying it's being added to the Library
of Congress as if it's an exclusive accolade, and people
rightfully called him out on his shit for how easy it is
to do that
speedgoose wrote 12 hours 7 min ago:
I remember the early Minecraft musics from C418 to be
relatively unconventional, especially some of the jukebox
discs.
I started playing Minecraft again recently and while it
sounds like itâs the same artist, and itâs still
somewhat contemplative, itâs not dissonant anymore.
vintermann wrote 1 hour 59 min ago:
It's not the same artist. C418 had a very good deal with
Notch's Mojang, letting him keep rights. Microsoft
demanded that he sign over the rights to further music as
work for hire. He refused, as a result the newer music in
Minecraft is made by other composers who signed on to
that deal and try to make music fitting with C418's
style.
duskwuff wrote 13 hours 49 min ago:
There are so many third-party texture packs for Minecraft that
losing access to the official ones would hardly even be an
obstacle.
pwdisswordfishy wrote 14 hours 37 min ago:
> 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 called anymore. But why stop there?
Indeed, why did they even bother with this half-measure in the first
place?
naruhodo wrote 2 hours 7 min ago:
If my memory serves, the stated justification for not going open
source was copyright and trademark protection. Apparently, that is no
longer a concern, if it ever really was.
Now I'm bracing for them to drop support for Java Edition entirely
and go strictly Bedrock in a couple of years.
Perhaps Minecraft 2.0 is finally nearing release.
ethmarks wrote 12 hours 16 min ago:
Perhaps it was easier? There were also probably legal reasons.
matteotom wrote 12 hours 29 min ago:
Were the mappings only a subset of the obfuscated
classes/methods/etc? Basically making the mapping a sort of public
API
Macha wrote 14 hours 24 min ago:
A lot of mod tooling was built around the obfuscated or community
names for those APIs.
tantalor wrote 8 hours 50 min ago:
Hyrum's Law
quamserena wrote 11 hours 16 min ago:
Still is for legal reasons. Also the community names (Yarn) come
with javadoc that actually explains what the function does
gs17 wrote 13 hours 42 min ago:
I wouldn't worry too much about it breaking anything with how
version-specific modding already is. And by the time the full
release is out, I'm sure every tool will have updated based on the
new names from the snapshots.
rirze wrote 14 hours 29 min ago:
If I had to guess, the legal team's brains started melting when
de-obfuscation was mentioned.
armchairhacker wrote 15 hours 10 min ago:
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 experience, I've
heard this about VR in general). If you want to build a community, you
must make development easy for hobbyists and small users*. I believe
this has held even for the biggest companies, case in point the
examples above.
* Though you also need existing reputation, hence small companies
struggle to build communities even with good engines.
andrewxdiamond wrote 4 hours 32 min ago:
I would throw Rimworld into that list as well. A fine game by itself,
if a bit simplistic. But the mods make the game massively
customizable and lets the player do basically whatever they want
haunter wrote 11 hours 38 min ago:
> these are games that succeeded because of their communities
To me an interesting thing when a game succedes despite its
community. As if people can endure a lot of toxicity as long as the
game is good
bsimpson wrote 12 hours 1 min ago:
Fortnite has been attempting to be a platform rather than a game for
years now. (Epic Games Store too, so you ridiculously have to launch
one then the other before you can pick your game.)
Curious to know to what degree the "Creative" maps have fueled
Fortnite's success as opposed to the 1st and 2nd party developed
experiences.
pugworthy wrote 12 hours 7 min ago:
I think Valve wouldn't exist as they do now except for modding.
Counter-Strike's popularity must have driven a lot of purchases early
on, which allowed Valve the freedom to do things at their own pace
rather than under pressure from publishers.
YesBox wrote 12 hours 37 min ago:
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.
joemi wrote 9 hours 23 min ago:
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.
kvam wrote 13 hours 6 min ago:
Agree! We saw this a lot. Launching with the Quest 3, we were often
the first company to do X, Y, Z despite being months after new
features had been released in the SDKs because they were poorly
documented (and often even conflicting).
Diverging even slightly from the demo use case would quickly feel
like Sisyphus; so close, but never succeeding in getting over the
hill.
Good for marketing in certain cases (to be the first), but bad for
the community of builders
jjmarr wrote 13 hours 29 min ago:
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, buy individual games like Counterstrike, and the
wackiest thing would be the "surf" gamemode. Most games I'd buy on
CDs. I certainly couldn't knock down entire buildings with grenades.
If you contrast with Second Life/Habbo Hotel, you could walk around
and talk to people I guess?
The community that spring up around it eventually carried it into
total dominance of gaming for American children, but the basic parts
of the engine like "click button, load into game, blow stuff up" were
a decade ahead of the curve.
Also Blockland cost money, Roblox was free.
throwaway89201 wrote 10 hours 44 min ago:
> I'd have to download Steam, buy individual games like
Counterstrike, and the wackiest thing would be the "surf" gamemode.
It's interesting that you chose Counter-Strike as an example, as
that is a Half Life mod itself, and by 2006 there was a large
ecosystem [1] of Half Life modifications using Metamod and AMX Mod
(X). The last one in a weird C-like language called Small or Pawn,
which was my first programming language that I made serious
programs with.
Especially the War3FT mod where users gained server-bound XP in
combination with a reserved slots plugins which allowed top-XP
users to join a full server really created a tight community of
players on my tiny DSL home-hosted server.
URI [1]: https://www.amxmodx.org/compiler.php?mod=1&cat=0&plugin=&a...
skeaker wrote 11 hours 0 min ago:
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.
ehnto wrote 5 hours 32 min ago:
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.
jjmarr wrote 5 hours 3 min ago:
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.
Sweepi wrote 12 hours 26 min ago:
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.
jjmarr wrote 9 hours 55 min ago:
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.
mminer237 wrote 13 hours 32 min ago:
All of those were also all $0â$20. It's kind of a chicken and egg
problem to build a user and developer community. Games have to build
a strong playerbase with limited content, then enough gamers have to
be invested enough to become creators. Enough have to be able to
actually pull off the development, yes, but I think the even bigger
problem is that they'll never have a reason to with the small number
of users inherent with platforms that cost $500â$3500 for special
hardware to get onto.
stronglikedan wrote 13 hours 48 min ago:
The Meta Quest is very easy to develop for. There's tons of games of
all caliber from solo devs up to full studios. The reason the
Metaverse is failing is because no one wants it, even though they
keep shoving it down people's throats. VR gamers just want to play
games, not dick around in "worlds". Meta is tone deaf to this.
cubefox wrote 12 hours 58 min ago:
There isn't yet a game that involves all the players in one huge
level, without shards, but there might be eventually. Current game
engines don't support levels with that many players simultaneously.
There is an interview with Neal Stephenson and Tim Sweeney on the
Metaverse where Sweeney says supporting massive multiplayer is what
he plans for Unreal Engine 6: [1] > So one of the big efforts that
we're making for Unreal Engine 6 is improving the networking model,
where we both have servers supporting lots of players, but also the
ability to seamlessly move players between servers and to enable
all the servers in a data center or in multiple data centers, to
talk to each other and coordinate a simulation of the scale of
millions or in the future, perhaps even a billion concurrent
players. That's got to be one of the goals of the technology.
Otherwise, many genres of games just can never exist because the
technology isn't there to support them. And further, we've seen
massively multiplayer online games that have built parts of this
kind of server technology. They've done it by imposing enormous
costs on every programmer who writes code for the system. As a
programmer you would write your code twice, one version for doing
the thing locally when the player's on your server and another for
negotiating across the network when the player's on another server.
Every interaction in the game devolves into this complicated
networking protocol every programmer has to make work. And when
they have any bugs, you see item duplication bugs and cheating and
all kinds of exploits. Our aim is to build a networking model that
retains the really simple Verse programming model that we have in
Fortnite today using technology that was made practical in the
early 2000's by Simon Marlow, Simon Peyton Jones and others called
Software Transactional Memory.
URI [1]: https://www.matthewball.co/all/sweeneystephenson
criddell wrote 13 hours 12 min ago:
I don't think they're tone deaf, they just know that inexpensive
gaming headsets can't make them enough money. They've invested
something like $100 billion into VR and "only" sold 20 million
headsets The revenue generated annually is almost nothing.
astrobe_ wrote 13 hours 58 min ago:
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.
For instance, Richard Burns Rally was not intended to be modded at
all, yet the fans added new cars, new tracks, online scoreboards,
etc.
In the Luanti [1] community (a voxel games engine/platform, designed
to be moddable nearly from the start), one begins to see something
similar as well: notable games gets mods, others don't (the former
default game is a particular case; it is not exactly good but go tons
of mods because of its status, and games based on it benefit from
that ecosystem). Yet all use the same engine (perhaps Roblox is
similar in that respect, I'm not sure if they have "reified" whole
games like Luanti did).
URI [1]: https://www.luanti.org/
vintermann wrote 1 hour 49 min ago:
Not sure if I understand exactly what you mean by reified, but
Minecraft has a ton of minigames based on server-side mods which
clone other popular games. Sometimes popular Minecraft
minigames/mods even get implemented as standalone games.
Battle royale games were almost certainly heavily inspired by the
Minecraft minigame which predates them. Factorio has the old
industrialcraft mod as an acknowledged inspiration. Vintage Story
is basically standalone Terrafirmacraft (and by a dev from that, as
I recall).
nkrisc wrote 9 hours 39 min ago:
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.
vintermann wrote 1 hour 41 min ago:
It was, as far as I can tell, the first game which was infinitely
procedurally generated yet changeable. Huge procedurally
generated games have a long history but in e.g. Elite or Seven
Cities of Gold you couldn't modify the world in any meaningful
way. The closest is probably dwarf fortress, but there the
modifiable world is pretty small (or was when Minecraft came
out).
That made it a great game. I think it was inevitable that the
first game which combined these two, infinite procedural worlds
and free modifiability, would be a huge success. Worth noting
also that infiniminer, despite the name, didn't have the infinite
part worked out!
Nition wrote 12 hours 11 min ago:
I'm always impressed when I check it, that flightsim.com is still
running, and still has everyone's mods going right back to the 90s.
Just in case anyone still wants the poor quality airport I uploaded
for Flight Simulator 2000 twenty-something years ago.
maeln wrote 14 hours 7 min ago:
> 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 experience,
I've heard this about VR in general). If you want to build a
community, you must make development easy for hobbyists and small
users*. I believe this has held even for the biggest companies, case
in point the examples above.
Unity and UE have pretty good VR support nowadays, and even godot is
getting there. Plus making a custom engine for VR was never that much
harder than for a normal 3D game (well, once some API like OpenXR got
normalized).
The big issue with VR right now is that it is more costly to develop
for than normal apps and games, while having less user. It makes it a
hard sell. For some indie dev, I allow them to profit from a market
that is not yet saturated (right now, with no good marketing, you
just get buried on steam, any app store, etc).
There are many factors that make it more costly, like having to
support several mobility and accessibility features for games (for
example smooth and jump locomotion, reduce fov when moving the view,
etc), that you usually don't have to care for in other plateform.
And there is the issue of interactivity. UX (and in many ways UI) is
still very far from ideal. Most VR apps and games just try things
out, but there is still a world of pattern and good practice to build
up. This makes using anything VR often an annoying experience.
Especially since some issue can be an absolute no-go for some user.
As an example, displaying subtitle in a 6dof environment can be
tricky. Some game put it at a fix point of your view, which can cause
nausea and readability problem, some move still follows the head/view
but with a delay, which reduce nausea issue but can be distracting
and also has readability issue (the subs can go out of view).
Nextgrid wrote 8 hours 9 min ago:
I think thereâs a difference between âindie devâ aka either
an experienced SWE trying it or some really motivated person with
an established identity, credit card & income stream and a
kid/teenager tinkering around.
In a âfree for allâ setting, anyone (including kids) could
potentially learn enough (or even just download pre-made scripts)
and try their hand at modding software/games.
In a modern situation with developer registration, etc someone
would need some sort of established identity, potentially going
through age verification, paying some nominal fee for a license,
accepting an EULA and so forth. This is a huge barrier to entry for
kids/teenagers just wanting to tweak the game experience for
themselves/their friends. I remember my first time trying to
install Apache on Windows I guess around 2008-09, and the (very
well-made!) install wizard asked me for a domain name. At the time
I wasnât aware of how DNS/etc worked and was scared to continue,
thinking I would either take up some other companyâs name or not
being âallowedâ to use a random name Iâd pick and get
myself/my parents in trouble.
All these âregulatedâ ecosystems make it scarier for
well-meaning but inexperienced devs to get started, while doing
little to deter dedicated attackers who know the game and know
actual cybercrime enforcement is both lacking and trivial to defeat
in any case.
The âfree for allâ environment made me the developer & sysadmin
(or DevOps person as the techbros call it) I am today despite no
formal training/education and I am sad to see this opportunity go
for the younger generations.
jon-wood wrote 14 hours 26 min ago:
The other reason being that nobody is asking for The Metaverse, and
definitely donât want to spend huge chunks of cash on a funny hat
to wear in order to access it.
kragen wrote 14 hours 6 min ago:
A lot of people seem to be spending huge chunks of cash on enormous
monitors, dual monitors, curved monitors, etc., and the appeal of
that is mostly that it gets you a little bit closer to wearing a
head-mounted display.
mikkupikku wrote 13 hours 50 min ago:
Monitors load my desk, not my neck.
shermantanktop wrote 14 hours 1 min ago:
Makes sense that a primate with front-facing eyes that is both
predator and prey would prefer to look at things at arms length
rather than encase their head in a cocoon that is designed to
block environmental awareness.
cubefox wrote 13 hours 14 min ago:
Depends on what you mean with "environmental" awareness.
Awareness of reality or virtuality?
kragen wrote 13 hours 56 min ago:
That's a function of what software you have running on it.
beeflet wrote 14 hours 18 min ago:
Some people are asking for The Metaverse. Currently, the entire
VRChat userbase. But you're right that there is not a large
population of people willing to throw cash at it outside of a
minority of virtual furries
kragen wrote 14 hours 5 min ago:
Probably half the people who grew up with Instagram cat filters
are furries now.
tmtvl wrote 12 hours 53 min ago:
I am now instantly reminded of that clip of the cat whose human
filter wasn't working. 'I'm not a cat', indeed.
kg wrote 14 hours 15 min ago:
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.
rcxdude wrote 6 hours 39 min ago:
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 they keep pushing a
vision that seems to be a uniform 'normality' even more extreme
than the real world)
ehnto wrote 5 hours 25 min ago:
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.
hnuser123456 wrote 12 hours 28 min ago:
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?
ehnto wrote 5 hours 21 min ago:
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.
armchairhacker wrote 13 hours 44 min ago:
Examples that demonstrate why lockdown hurts ease-of-use and
therefore non-intrinsically hurts community. Meta or Apple may
not realize people want on desktop want to use VR software;
they may want people to spend more (although a smaller
community may generate less overall revenue); they may want
people to have the âtrueâ experience (their idea of what
the users want, instead of what they actually want); they may
not want to spend the budget and expertise to develop webcam
face/hand tracking.
If they released a cheap or impressive enough VR headset, I
doubt desktop or face-tracking would matter. But I think the
next best thing, a decent headset with an open platform that
enabled such things, wouldâve saved them.
Mr_Bees69 wrote 14 hours 33 min ago:
UE5 is decent for vr.
bigyabai wrote 14 hours 38 min ago:
> Not just locked down
The lockdown is a big part of it, though. The industry has
cross-platform VR/AR SDKs like OpenXR that Apple refuses to
implement. A big reason their platform isn't supported day-and-date
with multiplat VR releases is Apple's insistence on reinventing the
wheel with every platform they make.
If the rumors of Valve's VR headset being able to run flatscreen
games are true, it's more-or-less Game Over for the Vision Pro. The
appetite for an iPad-like experience with six DOF is already handled
by much cheaper machines.
armchairhacker wrote 14 hours 19 min ago:
Many creative people donât care about being âlocked inâ,
since they already make mods that can be broken by updates (and
often are, unintentionally) and threatened legally (for violating
IP and DRM). I think the much bigger problem with locked-down
engines is simply that the lockdown methods used make it harder to
develop on them.
DIR <- back to front page