MC is already partially multithreaded. However the only part that is multithreaded is the chat system, but really that's so low-priority on any system that shoveling it onto a separate thread almost seems like a comical insult.
If MC were to do multithreading (I think an operation of this magnitude would break every single mod), I suggest 3 layers of threading with multiple threads intermediately woven.
These three layers are critical/primary/auxiliary
Each layer has different threads:
CRITICAL
world update for radius 3X (adding/removing blocks, PC/NPC behavior, entity drawing).
light update for radius 3X (changing/calculating light levels).
fluid updates for radius 3X
This is what is required to have the game playable under high FPS. This is considered critical because the player WILL notice changes happening here.
PRIMARY
redstone/logic update (all redstone/logic code is placed here regardless of proximity to player (assuming it remains loaded)
world update for radius 6X
light update for radius 6X
This is allowed to lag a little bit, if the auxiliary is hit too hard, then it starts feeding from here.
AUXILIARY
all other fluid updates (water/lava/sand/gravel)
all particle effects
world update for radius 12X
light update for radius 12X
This is allowed to drop off the map should lag present a problem. If a system is really laggy, then this will be the first to go, especially since it the least likely to truly affect the performance of a player.
For the above, the radius of X is whatever render settings the player selects.
The X can be 1/3 (close), 1/2 (near), 3/4 (fine), 1 (far), 1.5 (fancy). Since chunks are loaded as whole values, round the radius down. 12x on close is 4.
I think what you mean is increased parallelization since the game is technically multithreaded already. Yes, we all want this, but it's an obvious suggestion. Kind of like asking them to fix all the bugs or rewrite Minecraft in C.
Also, using multiple cores isn't a piece of cake. The developers have to find things that can be run in separate threads, try to get it so the load is relatively balanced, and make sure everything stays in sync.
Didn't know Minecraft uses one CPU core only. I guess that's why my processor spits blood every time I run the game.
I fully support this. +1
Edit:100th post yay
Java by itself uses like 30. I'm not sure if it runs any game processes on those or if they're all for the JVM. By the way, does Bukkit have good multithreading?
The answer is to create an actual multi-threaded Minecraft that simultaneously does not break every mod ever created.
This is an impossibility on sight, as I think the next update is going to break modding anyway.
Mojang had already attempted to rebuild the MC core, but this recursed into a net-zero-sum gain. It's not totally for naught, as the attempt has taught them new tricks/techniques to further optimize MC.
With that said, this leaves room for another game to come and do things right where MC seems to be dragging their feet. Nocte is working on Hexahedra which shows a lot of promise, so it may come out as a powerful alternative to MC. I don't have a "slower" computer myself, so I don't know how it's performance works on said machines.
It should probably split up rendering and world updates into 2 'main' threads. It should also use threads to do stuff such as network connections/file io (which it already does afaik).
Yes. Optifine has a nice multi-core chunk loading system, too. I'm assuming there's some timer producing game ticks that can run on its own thread, then there can be a few threads for chunk loading and one or more for rendering.
Yes!! I got an intel core i7 double quad core processor (8 cores!) and i am still lagging with Glsl shaders
Again, not 8 cores. 4 cores, but it looks like 8 due to hyperthreading, and the extra virtual cores do not even come close to doubling the performance. In theory, a program running a balanced load on 4 threads would not benefit from splitting into 8 and running on a hyperthreaded CPU. But Minecraft puts most of its processing on one thread, so it would be great to split it up.Minecraft is also getting bloated. 1.4-1.8 beta ran fine on my old computer, a 2005 iMac G5 (256MB of RAM, NOT a fast computer), and my laptop, a 2006 semi-destroyed MacBook (which I got for free). And now the iMac can't handle it, and the MacBook can hardly play on lowest graphical settings.
Hyperthreading is a really loose terminology. It's like SEGA's Genesis having "blast processing". What does that even mean.
I'd like to see MC split into a dozen+ threads with a distributed load across them all. This would mean increased performance as the number of physical cores increases.
Also, increasing the speed of your processor doesn't mean an increase in system speed. It simply means you opened the gate on a performance bottleneck. You also need ram running at adequate speeds, local media (hard disks) running at adequate speeds, etc.
As with people, you're only as fast as your slowest part. If you break your leg, you're only going to be moving as fast as your broken leg will allow you, it doesn't matter how fast the rest of you is.
Also, increasing the speed of your processor doesn't mean an increase in system speed. It simply means you opened the gate on a performance bottleneck. You also need ram running at adequate speeds, local media (hard disks) running at adequate speeds, etc.
My guess is that the GPU would be the next bottleneck for most people if it isn't already the bottleneck for them. Installing Optifine then enabling all the cool visual enhancements shows you what it's like to be GPU-bottlenecked.
AMD already thread splits even single core apps to disperse core loads. I'm pretty sure Intel chips have the same going on. The difference is the game dividing the information (optimum) and the computer deciding the split (passable).
I do support the OP. The game would be more accessible with less FRD for those will older computers.
Minecraft needs to support multi-core some day or another. Computers are getting better and better and almost all new computers have multiple cores. And we are still playing a game that uses one core. Extremely inefficient.
If MC were to do multithreading (I think an operation of this magnitude would break every single mod), I suggest 3 layers of threading with multiple threads intermediately woven.
These three layers are critical/primary/auxiliary
Each layer has different threads:
CRITICAL
world update for radius 3X (adding/removing blocks, PC/NPC behavior, entity drawing).
light update for radius 3X (changing/calculating light levels).
fluid updates for radius 3X
This is what is required to have the game playable under high FPS. This is considered critical because the player WILL notice changes happening here.
PRIMARY
redstone/logic update (all redstone/logic code is placed here regardless of proximity to player (assuming it remains loaded)
world update for radius 6X
light update for radius 6X
This is allowed to lag a little bit, if the auxiliary is hit too hard, then it starts feeding from here.
AUXILIARY
all other fluid updates (water/lava/sand/gravel)
all particle effects
world update for radius 12X
light update for radius 12X
This is allowed to drop off the map should lag present a problem. If a system is really laggy, then this will be the first to go, especially since it the least likely to truly affect the performance of a player.
For the above, the radius of X is whatever render settings the player selects.
The X can be 1/3 (close), 1/2 (near), 3/4 (fine), 1 (far), 1.5 (fancy). Since chunks are loaded as whole values, round the radius down. 12x on close is 4.
OFFICIAL POSTING/REPLYING GUIDELINES
UNOFFICIAL POSTING GUIDE (PRT)
UNOFFICIAL REPLYING GUIDE (FTC)
Also, using multiple cores isn't a piece of cake. The developers have to find things that can be run in separate threads, try to get it so the load is relatively balanced, and make sure everything stays in sync.
Java by itself uses like 30. I'm not sure if it runs any game processes on those or if they're all for the JVM. By the way, does Bukkit have good multithreading?
The answer is to create an actual multi-threaded Minecraft that simultaneously does not break every mod ever created.
This is an impossibility on sight, as I think the next update is going to break modding anyway.
Mojang had already attempted to rebuild the MC core, but this recursed into a net-zero-sum gain. It's not totally for naught, as the attempt has taught them new tricks/techniques to further optimize MC.
With that said, this leaves room for another game to come and do things right where MC seems to be dragging their feet. Nocte is working on Hexahedra which shows a lot of promise, so it may come out as a powerful alternative to MC. I don't have a "slower" computer myself, so I don't know how it's performance works on said machines.
OFFICIAL POSTING/REPLYING GUIDELINES
UNOFFICIAL POSTING GUIDE (PRT)
UNOFFICIAL REPLYING GUIDE (FTC)
What, because they wanted money for their work?
Yes. Optifine has a nice multi-core chunk loading system, too. I'm assuming there's some timer producing game ticks that can run on its own thread, then there can be a few threads for chunk loading and one or more for rendering.
Allocate more RAM to Java, that's all. You also don't have 8 cores...
Again, not 8 cores. 4 cores, but it looks like 8 due to hyperthreading, and the extra virtual cores do not even come close to doubling the performance. In theory, a program running a balanced load on 4 threads would not benefit from splitting into 8 and running on a hyperthreaded CPU. But Minecraft puts most of its processing on one thread, so it would be great to split it up.Minecraft is also getting bloated. 1.4-1.8 beta ran fine on my old computer, a 2005 iMac G5 (256MB of RAM, NOT a fast computer), and my laptop, a 2006 semi-destroyed MacBook (which I got for free). And now the iMac can't handle it, and the MacBook can hardly play on lowest graphical settings.
I'd like to see MC split into a dozen+ threads with a distributed load across them all. This would mean increased performance as the number of physical cores increases.
Also, increasing the speed of your processor doesn't mean an increase in system speed. It simply means you opened the gate on a performance bottleneck. You also need ram running at adequate speeds, local media (hard disks) running at adequate speeds, etc.
As with people, you're only as fast as your slowest part. If you break your leg, you're only going to be moving as fast as your broken leg will allow you, it doesn't matter how fast the rest of you is.
OFFICIAL POSTING/REPLYING GUIDELINES
UNOFFICIAL POSTING GUIDE (PRT)
UNOFFICIAL REPLYING GUIDE (FTC)
My guess is that the GPU would be the next bottleneck for most people if it isn't already the bottleneck for them. Installing Optifine then enabling all the cool visual enhancements shows you what it's like to be GPU-bottlenecked.
I do support the OP. The game would be more accessible with less FRD for those will older computers.
Some Minecraft optimization won't hurt
I support.
In addition, it will be nice if you could choose the number of cores. (default: 1)
(Click on one of them :P)
Minecraft needs to support multi-core some day or another. Computers are getting better and better and almost all new computers have multiple cores. And we are still playing a game that uses one core. Extremely inefficient.