_ __ __ _
(_)__ / /_________ / /________ _______(_)
/ / _ \/ __/ ___/ _ \/ __/ ___/ / / / ___/ /
/ / __/ /_(__ ) __/ /_/ / / /_/ / / / /
__/ /\___/\__/____/\___/\__/_/ \__,_/_/ /_/
/___/
(Originally posted to Cohost on Fri, Mar 29, 2024, 11:10 PM)
Beta 1.7.3 runs great but micro-stutters every 2 seconds, probably due to autosave. OptiFine fixes this by letting you configure the autosave interval
Optimized 1.7.10 runs very well, and flying around in Creative doesn't lag the game too much (if anything, it's hard to outrun the loading chunks!)
Optimized 1.12.2 comes in at a close second, but is noticeably more stutter-heavy when flying around
My testing of optimized 1.16.5, 1.18.2 and 1.20.1 is limited, but one thing I notice that they all share in common is that their stuttering gets worse each version
While not Java, ClassiCube -- based off of Minecraft Classic -- runs as great as ever, while Minetest has pretty heavy internal server lag
Also, starting with 1.17, Minecraft requires Java 17 and OpenGL 3.2. To work around the latter, you can:
fake your version by using the
MESA_GL_VERSION_OVERRIDE=3.2
environment variable (tested
on 1.20.1 with Create)
use Zink, the GL-to-Vulkan compatibility layer, via
MESA_LOADER_DRIVER_OVERRIDE=zink
(slower, probably
buggy)
use ForceGL20 (black screen)
use software rendering via LIBGL_ALWAYS_SOFTWARE=1
(VERY slow)
All setups with optimization mods, are also friendly towards low RAM allocations. Optimized 1.7.10 and 1.12.2 can go as low as 384MiB, maybe 256MiB. Optimized 1.16+ can go even lower with the help of ModernFix.
Warning: This blog post's embedded images (using a combination of Discord and the Wayback Machine) may or may not display.
The Minecraft wiki claims:
Any computer can actually run Minecraft - even with a low processor and graphics card - but high RAM is required. However, for an enjoyable experience, it is encouraged to consult the recommended requirements.
Let's see what versions work and what optimization can do.
When people think Minecraft on the Pi, they think Pi Edition. I wanna see if I can explore Java Edition on a Pi 4 with 2GB RAM, and what version I should target for my next server as a result.
zramSwap.enable
(which by default
provides 1GB ZRAM) and nothing else.xrandr --output HDMI-1 --scale 0.625
Boot to title: 8 seconds
World generation: 14 seconds
Fast (4 chunks): 29 fps (59 fps at 480p)
Fast (8 chunks): 18 fps (23 fps at 480p)
Fancy (4 chunks): 11 fps (this includes smooth lighting)
There's a micro-stutter every 2 seconds, probably due to the game's autosave, and there was a freeze of (what felt like) 5-8 seconds when I was exploring a world for the first time
Advanced OpenGL disabled. In my experience, it tanks the performance
Boot to title: 11 seconds
World generation: 17 seconds
Fast (4 chunks): 17 fps (27 fps at 480p)
Fancy (4 chunks): 13 fps (20 fps at 480p)
Fast (8 chunks): 12-13 fps (15 fps at 480p)
Fancy (8 chunks): 8 fps (11 fps at 480p)
RAM allocation: At least 256 MiB
Mods: ArchaicFix 0.7.2, Angelica 1.0.0-alpha35, CoreTweaks 0.3.3.2, WorldEdit 6.1.1
Boot to title: 1 minute (1m53s without CoreTweaks)
Fast (4 chunks): 21 fps (37 fps in 480p)
Fast (8 chunks): 19 fps (32 fps in 480p)
Fancy (4 chunks): 18 fps (31 fps in 480p)
Fancy (8 chunks): 16 fps (25 fps in 480p)
In initial testing with just ArchaicFix and Angelica, the game hitches for a moment similar to Beta 1.7.3's freeze, but the rest of the session is fine.
I found Angelica to be more performant than Neodymium for this use case. I wasn't happy with the latter's default performance.
World generation is faster and smoother, probably the best yet.
It probably doesn't make too much of a difference, but I set "Chunk Update Threads" to 1.
The game also works
Mods: Angelica, ArchaicFix, Backhand (dual-wielding), Biomes o' Plenty, CoreTweaks, Grimoire of Gaia, Hunger Strike, OpenComputers, Serene Seasons, WorldEdit
Boot to title: 1 minute, 51 seconds (2m45s without CoreTweaks, Backhand and WorldEdit)
World generation: 31 seconds
I mostly did this to see if the RAM usage would climb and FoamFix would be needed. It seems good so far, but there's a bug where the game has a darker tint when looking at modded items. The only workaround I found was right-clicking an OpenComputer computer
Boot to title: 31 seconds
World generation: 34 seconds
Fast (4 chunks): 29 fps (33 fps at 480p)
Allocation: At least 256 MiB
Mods: Alfheim, Universal Tweaks, and VintageFix
Boot to title: 1 minute, 34 seconds
World generation: 47 seconds
Boot to title: 1 minute, 21 seconds
World generation: Almost 2 minutes
Fast (4 chunks): 14 fps
Boot to title: 1 minute, 6 seconds
World generation: 30 seconds
Fast (4 chunks): 15 fps (35 fps at 480p)
As usual with optimization mods, world gen is faster and RAM usage is less abysmal. Plus it lacks the overhead of Forge. I'd consider it playable.
But how far can we go before it's completely unplayable?
MESA_GL_VERSION_OVERRIDE=3.2
as an environment variable for
the game to start. Otherwise it vomits a "GLXBadFBConfig" error.Boot to title: 1 minute, 15 seconds
World generation: 54 seconds
Fast (4 chunks): 18 fps (32 fps at 480p)
I think the Pi 4's ZRAM is getting slammed, so TPS was slower than it should be for a minute (probably due to ticking water physics and other things). But it doesn't look much worse than 1.16.5. Let's try harder.
Note: Outdated. Updated results in the TL;DR.
HOW is it still running?
Boot to title: 1 minute, 28 seconds
World generation: 1 minute, 4 seconds
Fast (4 chunks): 22 fps (38 fps at 480p)
I've made an attempt to run Distant Horizons, but it crashed before it even booted (probably due to unsupported GL draw calls).
I haven't crashed from flying around yet, but my ZRAM usage was at its highest yet and the game struggled to keep up with my movement (stuttering at like 5fps when moving)
Fun fact: The ClassiCube project started work on a PS1 port and DS port. Why wouldn't I give it another look? It's the DOOM of this blog at this point.
Full 128x64x128 world: 34 fps (49 fps at 480p)
Full 256x256x256 world: 9 fps (10 fps at 480p)
128 blocks render distance: 29 fps (39 fps at 480p)
Though I tried out the 128-block render distance on a 512x512x512 world and it dipped to 21 fps. Probably because the world's taller too?
A popular "alternate branch" mod of Minecraft that picks up from where Beta 1.7.3 left off.
Boot to title: 18 seconds
World generation: 17 seconds
Fast (4 chunks): 20 fps (39 fps at 480p, 40 fps at 0.25x, 37 fps at 0.5x)
Again, world generation isn't lightning quick, but I consider it playable. I took a screenshot from another angle and I was able to play at 8 chunks on Fast at a higher framerate than previously specified.
It sounds like a great idea in theory, but my experiences with 5.8.0 on the Pi 4 weren't as good as I'd've hoped. Flying too fast led me hitting an invisible wall while I wait for the server to keep up (tested with v7 mapgen), and MineClone 2's internal game logic felt laggy. Trying to create a large, empty area in Worldedit (about 256x64x256) ended up crashing the game, which surprisingly didn't happen with 1.7.10.