Minecraft: Java Edition now uses SDL3 (minecraft.net)
333 points by ObviouslyFlamer a day ago
malteeez 21 hours ago
The lwjgl bindings for this were written by a member of the GTNH modpack team, thereby completing the chain of vanilla->modded->vanilla once more https://github.com/LWJGL/lwjgl3/pull/1033
bombcar 20 hours ago
GTNH has done more for Minecraft than Microsoft has, arguably. The level of care and work there is incredible- and that’s not just because I’ve contributed a bit here and there.
vintermann 9 hours ago
They've made it easy to fix things too. Just yesterday I ran into a bug in one of the mods they manage, I dreaded setting up deobfuscation and all the stuff necessary to get modding for an ancient forge version going, but nah - they've automated and standardized all that. It was just download, fix and build.
bombcar 7 hours ago
LelouBil 21 hours ago
How many people working on Minecraft now were modders ?
And how many current persons working on Minecraft are also Modders ?
somat 10 hours ago
The impressive part is how big modding is in minecraft despite Mojang never providing a mod interface, I don't know it may be different now but the general route for a long time was decompile the java byte code make your mod and recompile. There were a number of heroic teams that made mod interfaces out of this but a whole lot of nothing from the actual devs. I came off the quake modding scene and was a bit horrified by the whole situation, with quake they gave you the game code, map compilers and later the source to the engine.
tech234a 8 hours ago
DaiPlusPlus 18 hours ago
> how many current persons working on Minecraft are also Modders?
Probably less than you'd think: lots of people recognise they need to leave their work behind at work and not get too emotionally invested in something they love, because at work they'll be exposed to the gut-wrenching business-decision sausage factory.
connicpu 17 hours ago
RugnirViking 12 hours ago
> how many current persons working on Minecraft are also Modders ?
Beyond small toy mods id be truly shocked if anyone really was able to muster the strength to go right back to working on product after a long day of working on product, especially in game dev. With it being such a passion driven industry already, too.
rbits 11 hours ago
2001zhaozhao 10 hours ago
greg
vintermann 7 hours ago
I remember Greg was actually a pretty controversial modder back in the 1.5 - 1.7 days. Many people did NOT care for the Factorio-like direction he took IC2 in (before Factorio was a thing! Apparently they cited IC2 as an inspiration), and at least once I think he accidentally inflicted that gameplay on modpacks which didn't expect it, removing metal block recipes as I recall. But it's very cool that his mod should get such a legacy.
peterus 19 minutes ago
bondolo 9 hours ago
I recently converted a game, Tribal Trouble (https://github.com/bondolo/tribaltrouble) from GLFW to SDL3. It was mostly a painless refactor though I did have some issues with full screen exclusive modes and desktop full screen but was eventually able to resolve those.
I ended writing a demo for screen mode handling to test and document the fiddly bits.
https://github.com/bondolo/SDL3-Fullscreen-Demo
The game is Java, like Minecraft, the demo is C because I wanted to keep it as simple as possible.
badsectoracula 2 hours ago
That name is a blast from the past! I remember Tribal Trouble's devs mentioning they chose Java because they wanted to use "weird/unusual" languages for gamedev :-P
myng111 9 hours ago
Out of curiosity, what was the reason you chose to do this rewrite? Was there some issue with GLFW?
shakna a day ago
> Known Issues
> Exclusive fullscreen mode on Windows may cause the game to crash in certain situations, especially when using multiple monitors
> Entering Exclusive fullscreen mode crashes the game on Wayland
Those, together, kinda seem like the kind of blocking bug that would usually delay a snapshot... Lets hoping it gets fixed before release lands...
TheDong 21 hours ago
> delay a snapshot
The point of a snapshot is that it's a snapshot of current main, bugs and all, even release-blocking bugs.
In my head, the order of stability expectations are (noting that minecraft doesn't do most of these levels, nor do most projects):
1. Long-term support / extended support release
2. Release
3. Release candidate
4. Beta
5. Alpha
6. Snapshot
7. Just-merged master commit
8. Unmerged pull request from a developer on the project
9. Unmerged draft pull request from a developer on the project
10. Unmerged pull request from a stranger
11. .patch file for the source code hosted on pastebin and linked by a total stranger on a cryptocurrency related discord server
12. GitHub's servers
I would expect a fairly major bug to delay a release candidate or beta.
I would expect an absolutely critical bug to prevent merge.
I would not expect any bug which passes the CI tests and gets merged to delay a snapshot, since snapshots are just effectively a scheduled cronjob of "at this date, we cut a release of current main so people can play with it and give feedback if they want without having to figure out how to compile main themselves"
mort96 a day ago
Delay a release? Sure. But delay a snapshot? Why? By releasing the snapshot in this state, they learn both 1) how big of a problem those known issues are (how often does entering exclusive fullscreen crash the game on Windows? They presumably have telemetry for this), and 2) if there are other, as of yet unknown issues they need to fix before release. The earlier you learn these things, the better.
There hasn't ever been a promise that snapshots are bug free; the expectation is rather the opposite.
repeekad a day ago
Are snapshots explicitly a beta channel? Or do users get auto updates to them? Testing for bugs in prod shouldn’t be acceptable unless users expect bugs in exchange for getting latest features early in something like a beta channel
piperswe 21 hours ago
creatonez 19 hours ago
mort96 a day ago
nkrisc 15 hours ago
gopher_space 18 hours ago
poly2it 20 hours ago
functionmouse a day ago
Pretty sure minecraft has used borderless full screen for a long time unless you go out of your way to tell it not to. Lots of platforms, services, and applications have been deprecating exclusive full screen over the past decade or so.
theschmed a day ago
Yes, and any game that is frequently streamed or otherwise recorded is wise to. Exclusive full screen doesn’t play well with others.
peesem a day ago
in this same release Minecraft removed exclusive fullscreen on MacOS, i wonder why they haven't done the same on Windows & Linux - maybe people still have uses for that stuff on those operating systems? in my experience exclusive fullscreen is Awful on MacOS
Rohansi a day ago
Grombobulous a day ago
rafram a day ago
flohofwoe a day ago
Tbf, exclusive fullscreen is quite exotic nowadays (as opposed to rendering into a fullscreen window). Window managers will typically apply the same optimizations to a frontmost fullscreen window as was done in the past only for exclusive fullscreen.
rbits a day ago
Well that's why it's a snapshot. It will probably be fixed in the next snapshot.
velcrovan a day ago
Anyone got any advice for a techy dad with no (zero) Minecraft experience who wants to set up a Minecraft server for the family in 2026? Kids right now are playing on their iPads, and (sometimes) old macbooks/windows PCs.
AkBKukU a day ago
Minecraft comes in two flavors, Java and Bedrock. All of the mobile, console ports, and windows store versions are based on bedrock. Java is the one you download directly from the website. Bedrock isn't really about custom hosted servers, but there is a way.
You can run a standard Java Minecraft server however you like, and then you can wrap it to also work with the Bedrock using Gyser[1] which will protocol translate it on the fly. It can require some workarounds on the more restrictive bedrock clients but it does work. That will let you setup and control the server from Java which has more options available.
yoz 16 hours ago
Apologies for hijacking an advice thread, but I'm another dad who's had to deal with this incompatibility nightmare, and I really really want to know what the hell happened within Microsoft & Mojang to end up with this mess.
No, seriously, I'm fascinated by the story. It's been over ten years. I'm happy to assume that most of the people involved are smart and good with decent intentions. I also bet there were many kinds of commercial and organisational pressures, especially because it's (a) Microsoft and (b) one of the biggest gaming acquisitions ever.
Does anyone here have any insider knowledge they could share?
sbuttgereit 2 hours ago
km3r 13 hours ago
bl4ckneon 15 hours ago
somat 14 hours ago
LtdJorge 13 hours ago
tialaramex a day ago
Geyser sounds very interesting especially if you know some or all players wouldn't be willing or perhaps able to play Java Minecraft and so they have to run Bedrock, but some would play Java and they'd enjoy being together.
Java Minecraft is just a better toy, I'm not altogether sure it's a better game, depending on how you define game, but it's a better toy because it's so flexible. I assume Geyser can't magically donate much of that flexibility to a Bedrock client, but if the players can co-exist then that's a boon in itself.
augusto-moura 20 hours ago
cogman10 a day ago
My main advice, ignore all advice online about JVM tuning minecraft. It's dated and often just wrong.
The best thing you can do is run on the latest JVM, set your max memory as high as you can tolerate, and use ZGC. That's it.
The JVM tuning guides for minecraft will have you switching and toggling every JVM flag under the sun with extremely dubious "evidence" of the payout for the flags they switch. In some cases, they will set contradictory flags. For example, setting eden size and target pause time. The fine tuning flags disable the heuristic flags like target pause time.
KISS. ZGC has very low latency and the larger the heap you give it the less it'll slow things down (though, do keep it under 32gb. Object header compression works on heaps less than 32gb). And using the latest JVM reduces the memory needed and increases the performance in general of the JVM. Win-win.
Night_Thastus a day ago
It did used to be required. Older Java versions performed pretty terrible. However, Java 17+ completely fixed that. Even the heaviest modded setups run buttery smooth, even on older versions which are not well optimized.
cogman10 a day ago
pjmlp a day ago
Velocifyer 20 hours ago
Do not set the heap size to more than 8GiB, even if using heavy modpacks. Anything above 8GiB actually makes the game run worse, unless you have tons of players, because of GC lag.
cogman10 19 hours ago
preg_match 19 hours ago
int0x29 19 hours ago
int0x29 21 hours ago
Set JVM heap to half available memory. Mincraft is very much the kind of appication that benifits from filesystem cache to help with loading chunks.
Also if for some reason you are setting the heap size high avoid going past 32 gb unless you tune object alignment. Allocating between 32 and 47 gb will result in an effectively smaller heap. Allocating more than 32 gb can result in performance penalties.
inigyou 21 hours ago
Velocifyer a day ago
Go to https://minecraft.wiki/w/Tutorial:Setting_up_a_Java_Edition_... for how to create a vanilla server for Minecraft Java edition (which is the best version, but is only on Windows and MacOS and Linux, unlike the significantly inferrior bedrock edition, which is way buggier but is avalible elsewhere).
If you need more performance, install [fabric](https://fabricmc.net/) and then install [lithium](https://modrinth.com/mod/lithium), but do not use mods like paper or spigot or purpur as they will mess up farms.
pjmlp a day ago
And less capable as one is limited by the official extension points, instead of the anything goes with bytecode manipulation.
Velocifyer 20 hours ago
VCFundedGenYer a day ago
The edition of Minecraft on phones/tablets/etc is more locked down and limited than Java, so unfortunately your options might be somewhat limited (though not impossible).
I have run a Docker Minecraft Server (itzg/docker-minecraft-server) for years and it's been rock solid. Best part is not having to install a lot of dependencies, the image just does it all. I think they also have a Bedrock Edition server but I never got it working right (see above).
You'd need everyone to run the Java Edition on Windows/Mac/Linux systems if you want to do it with the least amount of pain. Otherwise, people are just paying for "Realms" which are hosted servers.
hnlmorg 20 hours ago
Bedrock has always worked fine for me. That’s how I’ve self hosed for my kids.
hjkl0 a day ago
Most comments here ignored the kids’ preference to play on the iPad. With that in mind, you may want to check out the Realms offering. I believe you get a 10 user server for ~$7. Note that is also highly fragmented, and there are different realms subscriptions for Java and Bedrock and also different tiers.
Depends on what your goals are with the family server, Realms may not be a good fit at all. But in terms of getting kids playing together simply and quickly, it’s the easiest way to go.
As a side note, I know kids who switched to Java after years of insisting only on Bedrock and sorely regretted not making the move much sooner. This is part of growing up these days.
bennyp101 3 hours ago
I've been running this[0] for a few years now, moved it a couple of days ago to a portainer VM on proxmox with 6GB ram, its running perfectly fine for 3 of us, and works fine from tablets and PC.
Can also run on the nintendo switch if you setup a cname to redirect to your server IP, i.e: mco.lbsg.net x.x.x.x play.lbsg.net x.x.x.x
Then choose the "Lifeboat" server
[0] https://jamesachambers.com/minecraft-java-bedrock-server-tog...
abstractbill a day ago
I've been admining our family minecraft servers for about 5 years, and just handed off that job to my 12 year old daughter who now knows more than enough of the linux command-line to do it. I thoroughly recommend it, it's been great!
There are many ways to get it done. What worked best for us was choosing java over bedrock, renting a cheap linux vps, and writing some very simple shell scripts for starting, stopping, changing worlds, etc. Happy to talk you through anything you get stuck on!
munchbunny 21 hours ago
If it’s a problem you’re willing to solve with money and don’t want any special stuff like mods, you can pay for a server with Realms and then you don’t need to think too hard about it.
But the canonical way to do it that is both free and infinitely customizable is to host your own server. It’s pretty straightforward to do these days. However, before you do, I would suggest playing the game a bit to understand what the settings are/mean. You and your kids could play together a bit on a Realms server or a community/public server to get a feel for what you want in a custom server.
TrueSlacker0 21 hours ago
I recently did this so the kids and their friends could all play together. I ended up running the paper minecraft server on one of our home linux computers. It runs the java version but this is ok as there is a mod for bedrock to connect to java. I set it up so that the service starts every time the computer boots up so they dont have to run anything to start it. Then once you have it running and open the appropriate ports on your router, technically anyone with a valid java version can connect. But now its time to install 3 mods. geyser, floodgate and via version so its easier for everyone to connect from bedrock on tablets and on versions that are too high while your server is a version behind. As of writing this paper server is still stable on 26.1 not yet to 26.2.
[0] https://modrinth.com has a bunch of mods the kids have enjoyed as well.
cogogo a day ago
I just run the server off of the fastest laptop and one of them also uses that machine to play and lock it all down with tailscale. Honestly probably not worth the effort when the java edition allows them to play together over the wifi network out of the box. Have not found a solution I like to open up to other kids at school.
echoangle a day ago
If you want to selfhost and use docker for Java edition, this is the easiest way:
https://github.com/itzg/docker-minecraft-server
There’s also a version for bedrock (the version that’s supported on mobile devices).
Guvante 19 hours ago
Minecraft realms aren't as powerful as a server but if you are doing Bedrock to support iPads then it is certainly the easiest way to do it.
stpedgwdgfhgdd 4 hours ago
My son setup a minecraft server on a mac mini using claude, was pretty smooth. If your kids just use it in house you do no need to worry about security issues. In my case I did create a dedicated user account for the server.
hedgehog 21 hours ago
Luanti with Mineclonia plug-in works well if you are willing to move entirely to Mac/Windows/Linux clients. The whole stack is open source so it's easier to make changes etc if you want. No hacky binary patching of Java bytecode. Originally I was going to try Minecraft proper first since I'd already paid for that, but Microsoft doesn't honor old licenses and in the end the Luanti path probably works better.
harrigan a day ago
Minecraft servers are resource hogs even when idle. Enable the built-in idle server shutdown (IDLE_SERVER=true). It automatically stops the server after a few minutes with no players and starts it again when needed. It's not enabled by default.
ChoosesBarbecue a day ago
I'm struggling to find documentation on `IDLE_SERVER`, do you know of any? The only place I see it documented is on ArchWiki [0], but I don't know if that is an Arch distribution specific feature.
I do see `pause-when-empty-seconds` [1] when looking at the wiki, which seems the closest, although I can't find doc on what "paused" means (this is the closest [2]). Looks like a fairly new feature (2024), but it's neat they've thought about it.
[0]: https://wiki.archlinux.org/title/Minecraft/Java_Edition_serv...
[1]: https://minecraft.wiki/w/Server.properties
[2]: https://www.reddit.com/r/admincraft/comments/1k330eg/what_ha...
harrigan a day ago
syrrim a day ago
paradox460 11 hours ago
I run it on fly.io quite well
https://pdx.su/blog/2024-07-08-running-a-minecraft-server-on...
pridkett 20 hours ago
GeyserMC will be your friend if using Bedrock and Java.
But the big thing is that community is a little all over the place. I use ChatGPT to walk me through everything to securely set up a couple of servers. Kids love it.
Most chatbots will be smart and recommend things you need for permissions, rollback, backups, and most importantly, whitelisting. For giggles I left an unprotected Minecraft server up on the default port of my residential IP and the thing was griefed to heck within days. The griefers were just griefing other griefers.
maccam912 a day ago
I've been on this journey! I am definitely not doing it the easiest way, but I've got it deployed on Kubernetes with https://github.com/itzg/minecraft-server-charts and then use prism launcher on my kids computers to get the versions to match up and stuff. I also use automodpack so I can install some quality of life mods on the server and they'll just sync to the clients.
willis936 17 hours ago
Docker compose + systemd, automated backups (bonus points for coordinating with restic/borg + rsync cronjob), and ram disks. Ram disks in particular are a game changer for game feel. For the backups you'll need to leverage a feature that exports the world. This used to need to be a mod, but it's possible it's been folded into vanilla.
madduci a day ago
I run the itzg Docker Image behind a Wireguard VPN, all hosted on an embedded board (a armbian powered Radxa 12L with 16 GB Ram).
So far so good, we have an offline server, so even if the Microsoft Server is down, we can play (we use PolyMC on PC with offline accounts as well, for the same reason). By default, new users are in "spectator" mode, so they can't do anything without an activation from admin.
Friends get Wireguard QR codes, periodically we rotate them.
himata4113 a day ago
https://pufferfish.host/ they have the most powerful and easy to use panel.
AussieWog93 a day ago
Genuinely, install Ubuntu Server Edition into an old computer, set up SSH then tell Claude Code the account and IP for login.
You can ask if to set up damn near anything you want and it'll do it.
If you're using a laptop make sure it disables all of the sleep on lid close stuff, as well as other laptop-specific power optimisations.
A VPS would work too if you want something always available with a datacentre network connection.
skipkey a day ago
Absolutely this. I had installed wekan for a home chores kanban board on a $5 vps and had spent several hours trying to get the proxy working to make it externally reachable, and then I did this. Well, I used grok build to evaluate it, but I just told it where to ssh, and in about 10 minutes it was working, security was configured properly, backups were set up, etc. all of those post install things that I might never have gotten around to for a simple home setup.
kelvinjps10 a day ago
You can actually host a server for bedrock https://www.minecraft.net/en-us/download/server/bedrock The version that mobile and console uses and that in PC you can choose
lizimo 21 hours ago
I'm surprised no one mentioned https://github.com/pumpkin-mc/pumpkin in this thread. It's the fastest Minecraft server implementation and it's written in Rust.
terribleperson 20 hours ago
If you decide to do mods, you can make your life much, much easier by using a launcher. I use Prism, but I haven't looked for anything new in the last few years so it's possible there are better options now.
Also, find a world backup solution and use it.
JamesSwift 19 hours ago
The server is simple, theres plenty of docker examples online. Cross play between bedrock and java edition, and connecting to custom servers on eg switch is the harder part. And using linux as a client is more advanced.
nkrisc a day ago
I run a docker image with the Java server and GeyserMC to allow Bedrock clients to connect to it so my son can play from my iPad while I use my computer.
If they’re playing from MacOS/Windows then the GeyserMC layer isn’t necessary as they can run the Java client.
kitd 21 hours ago
I tried running my own but it turned out to be more complex than I was expecting (and desiring). I ended up paying a bit for a hosted server at ShockByte.
hnlmorg 20 hours ago
Just run the either the Java or bedrock server as a docker container. There’s good community-maintained containers out there.
burner54828182 21 hours ago
I had Claude code do this for me last night. Setup the whole thing in about 10 minutes with directions on connecting
sebmaynard 21 hours ago
I ran geyser with paper for years.. now I pay for 2 realms, and it's so much easier for them and their friends
poly2it a day ago
Are all of your family playing on Bedrock edition? There is a version split between console editions (plus some Windows users) and the original Java edition, with most of the (verbal?) online community playing on the latter.
If you are not all playing on the same edition, you can use something called GeyserMC (https://geysermc.org/) to allow Bedrock players to join your Java server.
Modding your server can greatly improve your server performance. Java is the platform with the best modding support. The modding APIs are however community built, due to historical and upsteram reasons. The subjectively best API for development (in my opinion) is Fabric (https://fabricmc.net/), but many older mods have only targetted Forge. Due to a split in the Forge development team, this API was recently superceded by NeoForge (https://neoforged.net/). Most relevant mods support both Fabric and NeoForge.
To explore mods, I would recommend using Modrinth. It has a pleasant and powerful interface, and links to source code on open source mods.
Here is a search filter for an overview of server-side optimisation mods:
https://modrinth.com/discover/mods?g=categories:fabric&l=ope...
To set up your Minecraft server, I would recommend NixOS (https://nixos.org) for devops with nix-minecraft for server configuration:
https://github.com/Infinidoge/nix-minecraft
Feel free to ask clarifying questions if you have any, I might have written this somewhat compactly!
mikepurvis 20 hours ago
I run the crafty controller Docker container on my unraid machine and it's easy and pretty hands off.
spicyusername 21 hours ago
Just buy a Realm subscription from Mojang.
I ran a private server for my kids for a while and it was a huge headache. Bedrock is purposely made to not make it easy to DIY. It was difficult for their friends to join, everyone was mad when it was down when they wanted to play, and I had to take great care to not lose their progress.
Paying for a Realm doesn't scratch that DIY itch, but your kids will actually get to enjoy playing, which is really the point, isn't it?
Alternately, run a Java server and use the Java-to-Bedrock plugin / proxy / adapter.
bombcar 19 hours ago
No joke serious - play GTNH. You can turn off the mobs if needed and the quest book is phenomenal and the feeling of accomplishment is real.
And you can stay in steam forever if you wanted.
icase 21 hours ago
i did this and it’s so worth it.
just get everyone on java. i play on my framework laptop, my wife on her mac and my son on a steam deck.
BoingBoomTschak 16 hours ago
Minetest?
preisschild a day ago
itzg has OCI container images and kubernetes helm charts
speed_spread a day ago
I used a Docker image. Good enough as is for LAN usage. I assume it could be exposed online with a Cloudflare tunnel but I wouldnt trust it to not be hacked. Docker may also make it harder to customize (install mods).
hiccuphippo 21 hours ago
Icculus has some great videos of porting games from SDL2 to 3, here's the one porting Doom: https://www.youtube.com/watch?v=ixdeGhsoxy8
jiffygist 8 hours ago
I didn't know Chocolate was getting SDL3 port moreso by icculus himself.
Of doom ports I know, Woof! already did migrate https://github.com/fabiangreffrath/woof
LelouBil a day ago
It's really amazing how much Minecraft is becoming more and more a game engine on it's own rather than just a game.
p0w3n3d 7 hours ago
Unless some dapper people won't screw all the things up...
toxik 21 hours ago
Soon enough it'll read email [_]
_ https://en.wikipedia.org/wiki/Jamie_Zawinski#Zawinski%27s_La...
NelsonMinar 15 hours ago
One of my favorite easter eggs in Nethack was the way a Mailer Daemon would arrive in-game and deliver a scroll when you received an email on the host Unix system. Which then became a game exploit because there were some obscure in-game uses for the scroll items.
gavmor 21 hours ago
I'm sure it already can with the right mod/plugin.
reilly3000 18 hours ago
mort96 a day ago
Is the rationale for switching away from GLFW documented anywhere? I'd love to read about it, I have some projects which use GLFW myself and I'm always wondering whether or not SDL would be better
creatonez 19 hours ago
Not sure, but they were able to get Wayland support working out of the box in this update. Previously it required workarounds, and even with workarounds, new issues would pop up in a game of whack-a-mole, and nobody really cared because running MC in XWayland was good enough for most people. Whereas SDL3 has very solid Wayland support out of the box. Minecraft only really uses GLFW to create the window, set the taskbar icon, go into fullscreen mode, and accept input, with everything else being handled by raw OpenGL, so this was an easy switchover. Now that Minecraft supports Vulkan, it's able to use a fully modern stack on Linux desktops / Steam Decks.
mort96 18 hours ago
GLFW 3.4 has always just worked under Wayland for me. What has been the issue for Minecraft?
akazantsev a day ago
> I'm always wondering whether or not SDL would be better
SDL supports mobile; GLFW doesn't. Maybe they're unifying codebases between the platforms.
Edit: BTW SDL3 still works even on Android 4.2. I made an app using it and ImGui, without any Java.
mort96 21 hours ago
Your suspicion is that they're going to discontinue Bedrock and replace the iOS and Android versions with Java? Even though iOS doesn't even allow Java with JIT?
akazantsev 21 hours ago
papercrane 20 hours ago
Iron_Ninja5 16 hours ago
Highly doubt it. The current mobile version (Minecraft bedrock) is the version that Microsoft wants everyone to use. Java edition only sticks around because they know it's the version most of the community wants.
LoganDark 21 hours ago
For one, input method editor support.
dismalaf a day ago
SDL is more of a "platform" you can use anywhere. It includes literally everything you'd want from the OS layer (windowing, graphics, audio, input, network code, threads) whereas GLFW is just windowing, graphics context and input, you need to bring your own audio, network code and threading library. Not a big deal for some but SDL does do more... Plus it's even more portable than GLFW.
mort96 a day ago
I'm aware of those things, but are those the reasons? Are they actually planning on moving away from their existing audio, networking and threading solutions and switch it out for SDL's implementations? Are they planning on porting Minecraft Java to platforms GLFW doesn't support?
dismalaf a day ago
groundzeros2015 a day ago
You could make an entire 2D game using the SDL API without OpenGL/vulkan.
creatonez 19 hours ago
Minecraft essentially only uses GLFW (and now SDL3) to create the window and accept input. The game itself is essentially coded in raw OpenGL (and now vulkan).
mort96 a day ago
Are they going to do that? If not, that's not the reason they're doing this either
nekiwo a day ago
osu (the rhythm game) also recently switched to SDL3, from SDL2, and it came with significant performance/latency improvements. SDL3 adoption is a bit slow it seems. Though, I'm surprised Minecraft used GLFW all this time.
One notable thing is that switching to SDL3 eliminated lag from having Discord client open while playing osu. Pretty sure this was from their devlog on YouTube.
jchw a day ago
On Linux, often times you will be using SDL3 regardless, as sdl2-compat and sdl12-compat are the default implementations of SDL2 and 1.2 on some distros. This has a lot of benefits, from more apps working natively on Wayland (which gives lower latency than XWayland) to better controller support. Not sure what this meant for osu but I wouldn't be surprised if it made the actual switch less impactful for some users.
I was, however, somewhat surprised to learn Ubuntu 24.04 didn't even ship SDL3 to begin with. Turns out SDL3 is newer than I remember. This is likely part of the explanation why SDL3 adoption is lower than expected.
mort96 a day ago
Don't most games ship their own build of SDL?
jchw a day ago
chiffaa 18 hours ago
The compatibility layer mention is valid for many projects, and I personally greatly appreciate that it exists, even if it's a bit buggy
osu! however, is only officially distributed on Linux via AppImage (and semi-officially via Flatpak) and bundles its own SDL for the reasons that, to my knowledge, range from the general pinning to a known stable version approach to the team backporting functionality from SDL3 to SDL2 (last one I remember is non-text-based clipboard functionality, not entirely sure though)
BearOso a day ago
It's been double-stable since early 2025 (version 3.2), so it's weird that Ubuntu doesn't have it when even Debian does. I've seen a couple projects holding back on the upgrade because of that.
With the way the software ecosystem works now, a lot of projects just include a copy or submodule because it's self-contained and a good candidate for it. It dynamically loads most dependencies, so it's pretty light-weight, considering. The whole static linking licensing problem is gone now, too.
jchw a day ago
chiffaa a day ago
osu! has spent a lot of time trying to switch from SDL2 to SDL3, but due to their high platform coverage (all three major desktop OSes + iOS and Android) and an attempt to keep all functionality native (so properly working Wayland supporr, along with other things) delayed the switch by around 2 years total. For the first time, the current switch seems actually final
pjmlp a day ago
SDL3 changed several APIs, which doesn't help, especially if using it from binding libraries.
hizyyo 16 hours ago
SDL3 switch makes sense given how much SDL2 was showing its age around GPU API abstraction (Vulkan/Metal support especially). Curious if this fixes any of the longstanding input lag / alt-tab issues that Java Edition has had on Linux, since that's usually where the windowing/input layer causes the most pain.
spacechild1 11 hours ago
They actually switched from GLFW. In that case you would naturally pick SDL3 and not SDL2.
LelouBil 17 hours ago
Honestly, it seems like the way to go to have a very moddable game is a language that's easily decompiled and modified at runtime like Java or C# (or just JVM and .NET CLR if you prefer).
When they do internal modifications, but also have modders in mind, you get to have an amazing modding API basically "for free".
account42 2 hours ago
The only thing you need to have a very modded game is a large enough user base. A little bit of binary patching and dll injection never stopped a dedicated modder.
delduca a day ago
SDL always had a great API design, but in SDL3... Goddamnn!
joss82 20 hours ago
In a good way or a bad way?
delduca 14 hours ago
Very good!
philipallstar 18 hours ago
> Entering Exclusive fullscreen mode crashes the game on Wayland
Pretty good for Wayland.
q2dg 20 hours ago
Luanti is the answer
yonisto a day ago
I'm teaching my son python programming.
Anyone with experience on programming Minecraft with python? Tips?
golph 4 hours ago
Mineflayer, a bot framework built in JavaScript, is also available in Python. [0]
Also a more easy language to look into for Minecraft would be SkriptLang [1]. It has a big community and is mostly easy to understand.
[0]: https://github.com/PrismarineJS/mineflayer/blob/master/examp... [1]: https://github.com/SkriptLang/Skript/
andrewshadura a day ago
> Armadillos no longer try to roll up when submerged in liquids
This sounds hilarious out of the context :D
maxlin 16 hours ago
With the regressions this reads like an april fools post...
nottorp a day ago
I honestly went and read those release notes just to check if they're using this transition as an excuse to make the game less cross platform.
frollogaston 12 hours ago
Or once again change the login system in some way that locks tons of people out
neals 20 hours ago
They still update that? I thought it's all bedrock now?
correct_horse 20 hours ago
All of my gamer friends exclusively play Java edition and so do I. Also minecraft's most active speedrun category (any % glitchless, random seed) uses version 1.16.1 on Java edition. The biggest server of minecraft youtubers, hermitcraft, runs on java edition. I suspect some younger gamers whose parents bought the first copy for them on the microsoft store play bedrock?
rbits 11 hours ago
Yeah I think most of the people who super into Minecraft still play Java Edition if they can. Also MacOS and Linux still don't have Bedrock edition (officially) for some reason.
HelloUsername 18 hours ago
> I thought it's all bedrock now?
What gave you that idea?
frollogaston 12 hours ago
Cause all the other platforms use Bedrock, and Windows can also run it, and it has some special features that would give the impression that it's the first class version. But they do still update the Java one first, which is nice.
revengerwizard a day ago
I kind of don't see the benefit, as it's still going to use only the window, input and platform integrations features, while SDL3 has a whole software renderer built-in and much more.
rbits a day ago
This fixed a lot of bugs related to input. If you scroll down to the bottom of the page you can see all the bug fixes from this snapshot, there are a lot related to input.
superdisk a day ago
You can compile in only the used stuff with various build flags, not sure if they did that though. I've done that before to make a pared down SDL that only does audio playback.
nottorp a day ago
> SDL3 has a whole software renderer
Does this mean SDL3 has a built in 3d renderer or it's the modern meaning where anything is a serverless renderer or something like that?
mort96 a day ago
SDL2 and SDL3 both have hardware accelerated 2D renderers, appropriately called SDL_Renderer. You can tell SDL to upload pixel buffers to GPU textures and tell SDL to draw those textures on the screen with various transformations and color effects.
SDL3 added a way to tell SDL to render vertex-based geometry as well: https://wiki.libsdl.org/SDL3/SDL_RenderGeometry. Those vertexes can have 3D positions, so that counts as a 3D renderer I guess. Though of course the GPU is doing the heavy lifting; SDL is just exposing a little bit more of the GPU's functionality. It's quite useful for some 2D applications as well. I remember reading about how it could enable more efficient drawing of 2D plots or cleaner ImGUI integration, though I don't remember details.