Комментарии:
🎉
ОтветитьSo how 2b2t updated to 1.19 if it couldn't to 1.13?
ОтветитьWell this aged well
Ответитьnow that the server is updated and runs smoth as butter every kid cries, it is what it is
ОтветитьThis aged well
Ответить19 tps on 1.19
Ответить;)))
ОтветитьFolia: Am I a joke to you?
Ответитьand here we are july 2023 and the server is still running on 1.12
ОтветитьInterestingly Minecraft Bedrock Edition does support multi-threading. Perhaps this limitation will be the downfall of Minecraft Java and potentially a steady transition towards using BE.
ОтветитьNon-thread safe minecraft still, meh... Microsoft might be experts in it, as how much they do collaborate with intel, so...? What's now, in 2023?
ОтветитьWho is here from the Hearts of Minecraft's server?
Ответитьfolia. regionalised multithreading.
multipaper. each region has its own server.
bungeecord and its forks, including velocity and stuff: multiple servers linked together
There are now projects like MultiPaper and Folia which make more features multithreaded. 2b2t actually ran Folia for 1 day and had 600 players online at once with nearly 20 TPS.
ОтветитьI someone is reading this 2/3 years after, there is a project from papermc that is called folia. Folia is a multithread server and I saw some people even say that its on 2b2t But idk if thats truth
ОтветитьYears later. PaperMC launched folia. It's amazing that a few years later it's now possible.
ОтветитьDonut smp with 5k players
ОтветитьMe with version spoofing even after 2 years:
ОтветитьIt's surprising a multi-core cpu can't support hundreds or thousands of players. Especially if they are in separate little groups out of each other's render distance.
Seems like everything is running on one thread :/
Install plugin, epic
Ответитьmoe yang
ОтветитьLots of people here are saying "it's not as simple as that; a rewrite would be necessary to implement multithreading". I think that still underestimates the problem. Game engines in general are very, very difficult to parallelize effectively even if you try to plan for it from day one, since they usually lack any useful overarching patterns to make it possible.
edit: Revisiting this now, I have to admit the claim about games in general is kind of nonsense; I'm not sure what I was thinking. The bulk of entity-related logic is often relatively easy to parallelize, and tends to constitute most of the necessary processing as a whole (ignoring rendering, I guess). Minecraft is kind of special in this regard since while you can have all of your 50 ms per tick consumed by entity processing, it might just as well be block updates (hard to parallelize), or just some random ad-hoc piece of bad code that Mojang has neglected for some reason, like the entity tracker mentioned by tranquilcam13 in the replies. While I'll retain my earlier self-indulgent ramble below for historical interests, there is a stronger and more coherent argument to be made here (much the same as tranquilcam13's): the sentiment expressed in the video neglects not only the difficulty of shoehorning parallelism into a 10+ year old codebase originally written in large part by a mental 10- year old, but also the sheer amount of general issues in said codebase, both architectural and algorithmic, irrespective of the single-threaded design. The claim that a lack of parallelism is "the biggest problem" with your game is categorically false when you're doing 2500+ block updates to depower a redstone line, and your entities are giant heap-allocated blobs, since Notch seemingly missed a memo most game developers received sometime during the 2000s. And, um, hopper lag. I just looked into this. For every hopper with no container above, every tick, 2 times per hopper, the game iterates through every chunk section in the y,z plane containing the hopper to find the ones actually near the hopper (because 1-8 hash map lookups would've been too lame, I guess; oh wait, they are doing those, too!), and searches them for item entities. Well, too bad that hit-testing every pair of entities stored in lists is O(n*m). It's not like hoppers, as block entities, might already be stored in a highly-efficient spatial partitioning structure affectionately known as the f***ing block array? Oh well, rant over.
--
Multithreading is not a silver bullet. You need to be able to divide the task at hand into multiple independent pieces that don't depend on each other's outputs, so that they can be executed in parallel. The pieces need to represent a sufficiently large amount of work each, so that synchronization overhead won't outweigh any benefits. This means that the parallelism will need to be implemented in relatively broad sections of the engine that deal with large amounts of data, i.e. going through entities sequentially and parallelizing updates to their x, y and z coordinates won't yield a 200% speedup; it'll be more like -99%.
What turns this from difficult to basically impossible is the baggage of a long-standing synchronous engine on an already existing game. Take block updates, for instance. One might think this would be relatively easy, by executing each step of block updates in parallel writing results to some kind of back buffer, then copying from back to front and repeating until things have settled. There are a couple problems with this approach.
First of all, because block updates may need to modify blocks other than the one being updated, conflicts will need to be handled somehow. Things like redstone torches updating neighboring components aren't too big of a problem by themselves since they will generally agree on what the new blockstate should be, and conflicts between a poweredness update and a destruction of the block, for instance, could be resolved by basically hardcoding an order of precedence for different kinds of updates. However, pistons are hard. When resolving a conflict between two pistons extending into the same block, one of the extensions necessarily can not happen. A cancelling mechanism of some sort is needed. This needs to be able to roll back both the piston arm and any blocks that moved with it, and it needs to be efficient enough not to defeat the point of implementing parallelism. What do you do when a lava source block is simultaneously pushed by a piston and turned into obsidian? There will be many, many corner cases to deal with, and it will be very difficult to maintain a sane implementation that developers can actually work with and add new features on top of without setting off a butterfly effect resulting in inconsistent behavior, dupe glitches and whatnot. It'll be worse than the current Java edition codebase, imagine that.
Second of all, block updates in current Minecraft occur in a "depth-first" order, where any chain effects are processed recursively before proceeding to others triggered by the same update. In the single-threaded case this makes it much easier to deal with the previously discussed problems. However, it would be even harder than the breadth-first approach described above (read: impossible) to parallelize properly. This behavior can be observed in-game in situations such as the piston conflict that I already mentioned, and some voodoo redstone devices actually rely on these details. While breakage between versions is to be expected with weird redstone, a parallelism update would most likely break all of it at once, with the new mechanics potentially being more inconsistent, and less useful.
As others have mentioned, some parts of Minecraft, especially world generation, do lend themselves well to parallelism, and Mojang has already started making changes to take advantage of this. Still, these are a far cry from the fully parallelized engine that people seem to want from them. I hope I've shed some light on why this is never going to happen, not because "Mojang lazy" or whatever, but because it's actually impossible. Certainly easier said than done at the very least.
I have heard something about multipaper and that it could hold 1000 players can someone tell me about it more? seems very interesting
Ответить6b6t is jump updating to 1.19.2
ОтветитьHow bout you use bedrock
ОтветитьLet’s say a server runs on a intel i9 processor, 1 divided 16 multiplied by 100 means that current servers are using 6.5% of a cpu, can you believe it? 250 players = one core, 250 multiplied by 16 equals 4000 players, we are stuck at 250 instead of the 4000 we could have had, this is sad.
ОтветитьBro I live in Australia and can't connect to any major server with less than 200 ping. So yeah, that
ОтветитьIt’s hard to have over 200 people on any sever for any game
ОтветитьHave you looked at something called "MultiPaper"? It allows multiple servers use the same world, so you can theoreticaly have 1000s of players
ОтветитьMinecraft Online is also stuck to 1.12.2 lol
ОтветитьAre there any mods that fix this?
Ответитьmoeyang
Ответить2B2T IS UPDATED
ОтветитьMultithreading has actually been an issue plaguing many video games
Ответитьlol turns out Notch may have made spaghetti code but Jeb makes cobweb code.
ОтветитьAh, so Minecraft servers are in need of one those speciality high frequency (5-6GHz) single core processors.
Ответить1.12.2 is my go to version of MC... i can play on almost every server
ОтветитьImagine you can only have one roughly 200 people inhabit the entire Earth. Any more people and time begins to slow down.
That is life on a multiplayer Minecraft server.
And the most accommodating version is 1.12.2, which is 5 years old!
the way he pronounces "mojang"
ОтветитьNow ther are 2 flaws xD
Ответитьits now on 1.19
ОтветитьBro the way he said Mojang
Ответитьmoyang
Ответитьits mojang not mon somthing
Ответитьyou could always get someone to write utilizacion mapper for java and trick java into thinking that all the cores wereit's not really that hard it would just be troublesome to optimize for the number of cores on the CPU
Ответитьi need to know its pronunciation moyang or mojang
ОтветитьWorldQL could be the solution.
Ответитьi haven't ever played on 2B2T but i think if they brought it all the way up to 1.16+ there would be a massive power difference, with the addition of netherite. some people would get way more netherite than others and there would be even more of a power difference between someone that's been on the server for a long time and a brand new person.
Ответитьits on 1.18.2
Ответить@Minecraft @Microsoft
...can you do this on yt lol