I was thinking about how multithread could be used inside a networked game emulator like ServUO and I found these points:
  1. Spatial partitioning: execute mobile "commands" in parallel based on where they are, using the already implemented grid system (sectors) or a new spatial partitioning (like quad-tree). Every sector will be a different "microshard" for commands that are isolated by mobile's position
  2. System partitioning: split "commands" (e.g. movements) by their kind and execute them in parallel: this could require an "update late" approach where every state modification will be executed at the end of the loop, so every system (e.g. movements and damage) can read the same state even if they depends on the same data; updates will be applied at the end of the loop
What do you think about those two options? Are the valid?
Maybe there are other options that I didn't find.

I want modify the core in order to use a multithreaded CPU that is the standard by many years: do you want to discuss about these and other options with me?

Thanks!
 
We do take advantage of multithreading.

Look at VendorSearch.cs

It runs on its own thread so as not to bog down the world when players are using it to search vendors.
 
Back