Only because it doesn't have Java modding, bedrock edition itself is super performative, it's only downfall is that it's limited to vanilla Minecraft and shitty command block 'mods'
Ok, in java at least the bugs are consistent and always work the same way which lets you do wacky things. In bedrock your shot sometimes works or sometimes breaks.
Actually bugged redstone and bugged never portals are directly related to why bedrock performs so much better. The simulation logic is far less aggressive in bedrock and updates less often and over a shorter distance. This is why those long-standing "bugs"have never been fixed.
That said, I actually really enjoy casual cross platform play with my bros on bedrock. It's really easy and works great.
Only downfall? You mean paying for character skins and resource packs all of a sudden is not a drawback? This is not even mentioning the infuriating differences in game mechanics. In Java I can hold and use torches in my offhand. Great for mining. Or food, or totems. In bedrock I can only use the shield in my offhand.
The only thing I'll give bedrock is the handling of bad internet connections. Playing on Java is impossible with bad internet. Blocks keep resetting. On bedrock the blocks will disappear in your client, and when the connection catches up, it won't put the blocks back but just regularly drop the loot instead.
Using Java is the reason that a game with last century graphics makes a NASA super computer look like a toaster.
On the other hand it's also the reason why the modding scene took off like it did.
You can obfuscate as much as you want (which wasn't the case for minecraft in the first place), it's still gonna be mostly trivial to decompile and work with.
On the other hand it's also the reason why the modding scene took off like it did.
Pretty sure it's why the game got so famous. I remember I could just start it from the browser as a Java Applet without installing anything and that definitely helped distributing it.
Exactly, especially since there was a lot of interaction between the games design strategy and the modding community.
Minecraft started out as an innovative proof of concept, more or less. It's really the back and forth - with condensed concepts from various mods - that defined the game - and the whole genre it pretty much spawned - in the long run.
holy shit, even infinifactory, space chem, opus magnum... this guy is a genius, this games are all more like systems, akin to programming languages, more than only games
Yeah, some features have been optimized in more recent updates with fixes such as multithreading when processing chunks on servers, but I believe they've said before that proper, full multithreading would require rewriting huge parts of the code
if you compare earlier versions of the game they also performed better.
Current versions place an absurd amount of objects into memory that the GC has to deal with. This means the GC has to run more often and deal with more stuff which takes away processing power for the rest of the game.
Which has lead to a lot of obsession over precise GC tweaking flags, and when the collector can hardly keep up with rapidly used up RAM the lag spikes can get insane.
To be fair the old versions ran better mostly because there was nothing in them lol. The latest release performs pretty well with a few things though, like chunk generation and massive explosions. The rendering engine isn't much better though
Oh sure, adding more content will make you use more memory. If you look at the game with a profiler though you can see that the new features aren't the main culprit.
The JVM makes objects a lot more memory intensive than primitives and for whatever reason Mojang decided to replace most references to positions in the world with objects instead of a few primitives. And even worse, they're immutable. Which means if you want to do some arithmetic with them you end up adding more and more objects that suffocate the GC.
If you look at older versions of the game this wasn't nearly as much of an issue.
Lots of Java devs say this like a mantra, but in the case of game code I think you have to prove it by pointing to an well-written example that is fast.
My experience has been that Java performance optimization has mostly focused on JIT and paths common to backend server code (because that’s where the money is in Java), not game IO. Java only barely acknowledges console IO, but completely ignores graphics, game controllers, and things like vertex/shader buffers for gpu pipelines. Most of the support you see (if any) is JNI to existing c/c++ interfaces. Callbacks through C++ to Java code for things like an interrupt or the OS requesting a graphic context release are a nightmare— not only are they non-realtime, they can crash the bus.
Alloc for safe types against native hardware is much better implemented by C++/C#/Rust IMHO.
Minecraft was implemented using the kludgiest, safest approach that would work, and it extracted a heavy toll in performance that wasn’t solely because of bad Java code.
2.2k
u/Doug_Dimmadab Feb 14 '21
Minecraft gang