this post was submitted on 01 Apr 2024
672 points (96.2% liked)
Gaming
20052 readers
60 users here now
Sub for any gaming related content!
Rules:
- 1: No spam or advertising. This basically means no linking to your own content on blogs, YouTube, Twitch, etc.
- 2: No bigotry or gatekeeping. This should be obvious, but neither of those things will be tolerated. This goes for linked content too; if the site has some heavy "anti-woke" energy, you probably shouldn't be posting it here.
- 3: No untagged game spoilers. If the game was recently released or not released at all yet, use the Spoiler tag (the little ⚠️ button) in the body text, and avoid typing spoilers in the title. It should also be avoided to openly talk about major story spoilers, even in old games.
founded 5 years ago
MODERATORS
Genuine question: why does bedrock exist? What does it bring? Why is there the choice between java, bedrock and "Minecraft for windows"?
How do you fuck up this badly?
I tried using the launcher to move a java install from C: to another drive and it just points there and doesn't do anything? Steam had this stuff figured years ago
Minecraft rewritten for better performance with platform interoperability in mind and so on. Essentially what could've or should've been a replacement to Minecraft if done right. It was not done right. Quite the opposite.
In what world is c++ better for cross platform than Java?
In a world with consoles. Java needs a JVM, and those aren't typical with things like the Switch (2 soon), PS5, and Xbox Series (half the alphabet).
Oh ok that's fair enough. I forget those exist sometimes.
You forget consoles exist?
I think they meant JVMs.
Yeah, except retro consoles.
C++ is generally more performant than Java.
https://programming-language-benchmarks.vercel.app/java-vs-cpp
What's that got to do with making things cross platform? Java programs only need to run in a Java runtime environment of which there's one for basically everything. If you make something that runs in a JRE, it'll be able to run on any device with a JRE that's up to date for it.
given how many targets are supported by llvm there's really little difference in cross platform support asides from building artifacts for the specific target platform. wrapping package delivery in a package manager removes the additional complexity to the end user.
Minecraft Java runs like dog shit. Making a faster port of it was worth it. They just botched it because Microsoft got its hands on it.
Oh yeah that totally explains why it's always been perfectly fine for me as long as I'm not looking at a giant wall of those shelves that display their contents from whatever modpack that was.
Bedrock routinely outperforms java.
https://piped.video/watch?v=qLjOIulsNcM
https://piped.video/watch?v=Z4GrbD2MA5o
https://piped.video/watch?v=p_mCekWWW_8
Just because you're perfectly fine doesn't mean all other machines are.
So? What's that got to do with making it cross platform?
I could ask what makes food hot and you would come in here telling me your refrigerator brand uses less electricity.
I wasn't strictly talking about cross platform. I was talking about performance, which is tangential to the cross platform thing.
If you're planning on making a game cross platform, you should choose a language that performs well for gaming on all platforms. Java ain't that. Which answers your question:
C++ is better for this application.
Good thing we have Minetest and Vintage Story!
Because Bedrock runs on phones, tablets, consoles, and a host of other random crap, and does so relatively well. Because of that the install base and playtime especially among younger players is actually massively skewed toward Bedrock being the more used. Add to that rumors that the Java codebase at least was a terrible mess, and the performance issues Java edition still has to this day and it's no wonder they wanted to do a full rewrite, especially after having to make things like the console editions and even one for the 3DS.
The windows launcher is annoying though.
And it also removes Linux support. Typical Microsoft.
To be fair there's a Linux version of the bedrock server. But yeah not having it on the steam deck is pretty annoying.
Go into desktop mode, there's a bedrock launcher in the package manager store thing, I forgot the names of both of those things, but search "Minecraft" and you should find it. Anyway, it basically loads the Android version of the game. It works pretty well. I play bedrock because everyone I play with is on Xbox
Fairly certain I've had both versions working on our steam deck. It's pretty straight forward like you're saying.
Linux and mac and any other x86 compatible platform that runs java…
Bedrock not Java.
Yes exactly. Java runs on Windows, macOS, Linux and any x86 compatible operating system that supports the Java runtime environment. Minecraft bedrock removes support for all of those but Windows.
And adds support for Playstation, Xbox, Switch, Android, iOS....
They all had minecraft before bedrock was a thing yet. That legacy minecraft without crossplay just got replaced by bedrock.
There's also the fact that Bedrock patches bugs that the Java community freaks out about patching. Several chunk update glitches and undesirable redstone behavior are exploited by the Java players, and they go nuts over the idea of fixing the issues. Bedrock, being a new codebase, obviously didn't port over old crusty bugs and therefore doesn't have to carry over those expectations.
To be fair I'd call it a wash. Bedrock fixes a lot of weird stuff like quasi connectivity and being able to push things like chests with pistons but also introduces it's own bugs like weird timing things and randomly taking fall damage. There's also weird differences like being able to do things with cauldrons or just like minor texture differences that they are slowly bringing into sync.
Thanks for the info + @kadu@lemmy.world & @Opisek@lemmy.world
Also swapped performance issues with more bugs that were there years ago and still persist because they are almost impossible to fix.
In the end, we all know it was done either because they wanted to shove microtransactions down our throat and/or had some kind of deal to maintain the Java edition without microtransactions.
Or, maybe, just maybe, they though "it's just a block game, what could be so hard to rewrite it?" and absolutely failed what a single person got right almost immediately back in the day (like not falling through the floor all the time).
You can remove that word, rly.
Java is a hilariously bad platform for games.
Only if you're incompetent. Otherwise just not optimal.
Starsector, Rise to Ruins and Project Zomboid run well and are made in Java for example. It's harder to pull off but it can be done. (still needs native libraries though)
No it isn't
What makes you say that? I'm genuinely curious
Minecraft. Runescape. Mindustry. Slay the Spire. Project Zomboid. Doodle Jump. Shattered Pixel Dungeon. Delver. Lots of mobile games. Also It's rediculous to say Java is inappropriate for games when C# is used for games via Unity (unity is the value proposition there - c# is very similar to Java)
Java is (or at least used to be) one of the first languages new programmers started with.
Making it very accessible to create new mods.
I haven't modded as of yet but I started off with Java and am now a C# Dev and the transition wasn't too hard since most of the same principles apply to both languages. Unity games, that are often written in C# to me are the most moddable ones, especially considering that there's a ecosystem for Unity mods out of the box
Honestly? Most large companies are more like high school. It's all, friend groups, people rubbing each other's backs, and in-fighting between departments.
A lot of VERY LARGE decisions get made for the stupidest reason.
Minecraft for windows is the old name for bedrock.
it was based on the same MCPE codebase
Is there even a choice? You now get both games when you buy one(and you get the other game for free if you already own one) and you can play on bedrock on java servers with geysermc
I accidentally bought Minecraft for windows for someone when I wanted java.. so that was fun.
The launcher just says "here are the options" it doesn't say why you might want to choose one over another. Ive played since day 0 so I've always gone with java.
Just felt like if bedrock was meant to replace java they should have just done it and dealt with it instead of having so many choices.