- Joined
- Jun 10, 2014
- Messages
- 2,995 (0.78/day)
Processor | AMD Ryzen 9 5900X ||| Intel Core i7-3930K |
---|---|
Motherboard | ASUS ProArt B550-CREATOR ||| Asus P9X79 WS |
Cooling | Noctua NH-U14S ||| Be Quiet Pure Rock |
Memory | Crucial 2 x 16 GB 3200 MHz ||| Corsair 8 x 8 GB 1333 MHz |
Video Card(s) | MSI GTX 1060 3GB ||| MSI GTX 680 4GB |
Storage | Samsung 970 PRO 512 GB + 1 TB ||| Intel 545s 512 GB + 256 GB |
Display(s) | Asus ROG Swift PG278QR 27" ||| Eizo EV2416W 24" |
Case | Fractal Design Define 7 XL x 2 |
Audio Device(s) | Cambridge Audio DacMagic Plus |
Power Supply | Seasonic Focus PX-850 x 2 |
Mouse | Razer Abyssus |
Keyboard | CM Storm QuickFire XT |
Software | Ubuntu |
I'm well aware of the game having a very crude game engine written in Java using the library LWJGL (I believe), and this language and its libraries with the resulting inability to write efficient and reliable code. Game engines usually interface with the OS to read input events, uses threading smart and efficiently to avoid rendering and IO affecting each other, and hopefully reduce/avoid heap allocations and random memory accesses in performance critical code, etc. all of which is hard or impossible in Java. If this was written efficiently in C using OpenGL well, then it should easily be able to push 2000 FPS with this level of geometry.In Minecraft you can't really expect any scaling in performance that would make sense. You can upgrade from an RTX 2080 to an RTX 3080 and see no improvement at all, even though that would be a big upgrade in other games. There's a couple of reasons for that and they boil down to Minecraft basically being an inefficient Java game (along with the additional inefficiencies of modpacks). The inefficiency of the engine means that it benefits more from processor IPC and that's what limits your framerate performance. CPU bottleneck, basically.
And I don't mean this as criticism of Minecraft as a game, I'm well aware of it starting as a hobby project that went viral. I'm saying this because I'm well aware of the technical limitations of this game, and you are right about it facing effectively a CPU bottleneck (of sorts). But having a vastly faster CPU (which I what I assume you mean by "IPC") will not completely eliminate these performance bottlenecks, in short some highlights why;
- Java will result in layers of extra function calls, many of which will result in cache misses of a type which a faster CPU can't do much.
- Incompatibilities of Java's types and OpenGL's state machine design resulting in loads of heap allocations, Java's garbage collection, and the resulting memory fragmentation. All of these will not scale well with a faster CPU.
- Inefficient use of OpenGL itself, which has nothing to do with Java. Even an infinitely fast CPU can't make up for inefficient batching of operations. The solution is obviously a better engine design.
So there are design bottlenecks too.
Was your comparison of RX 6600 and GTX 1060 with the same or a comparable PC?I'm not sure why the minimums are so crap but those big framerate stutters only happen when you're moving around rendering new chunks. Stay in the same place for any amount of time and the 0.1% lows go way up to over 200fps and it's butter smooth. The Nvidia cards also suffer from the same thing but manage to keep framerates above 60. But yes you can definitely feel that it runs worse on Radeon. I think there's a lot of improvement still to go.
Because I find it interesting that the Nvidia card didn't experience the same level of slowdown. So if your description is correct, it would mean that the difference here is due to overhead on those API calls, not the game engine itself. As mentioned, I suspect it has to do with updates to vertex buffers, and find it puzzling that their new driver implementation is so much worse in this regard.
And scratch what I said about testing my old Radeon card. (I used it in a Haswell machine which broke.) It turns out they dropped support for my R7 260, even though it's 2nd gen GCN. (Thanks AMD!)