06-01-2013, 01:08 AM
I've had another of those "lightbulb" moments, so I'm gonna offload it here for later inspection and refinement.
People keep asking us whether MCServer can run on multiple machines in parallel. Theoretically it is not possible due to technical reasons. *BUT*! Let's ask, what's the most visible most expensive server task? I doubt anyone would say anything else than "world chunk generation". The good news is, our architecture makes it not only possible, but even practical, to run chunk generator on multiple machines, with one MCServer using the chunks, then.
(The mischievous news is that neither Vanilla nor Bukkit could do that easily, because of their chunk generation architecture. We'd be the first!)
The idea is, we could make the ChunkGenerator code relatively independent of the other MCServer code, then split it to another project, the ChunkServer. That ChunkServer would receive requests for chunks from MCServer, generate those chunks and send them over to MCServer. There could be several such ChunkServers serving one single MCServer instance. Heck, we could even make it run on the same machine, thus gaining multi-threaded world generation.
People keep asking us whether MCServer can run on multiple machines in parallel. Theoretically it is not possible due to technical reasons. *BUT*! Let's ask, what's the most visible most expensive server task? I doubt anyone would say anything else than "world chunk generation". The good news is, our architecture makes it not only possible, but even practical, to run chunk generator on multiple machines, with one MCServer using the chunks, then.
(The mischievous news is that neither Vanilla nor Bukkit could do that easily, because of their chunk generation architecture. We'd be the first!)
The idea is, we could make the ChunkGenerator code relatively independent of the other MCServer code, then split it to another project, the ChunkServer. That ChunkServer would receive requests for chunks from MCServer, generate those chunks and send them over to MCServer. There could be several such ChunkServers serving one single MCServer instance. Heck, we could even make it run on the same machine, thus gaining multi-threaded world generation.