Concurrency Library 2.0

Last year I wrote up a post on the Disruptor pattern and solicited some general opinions about it’s potential application in gaming.

Since then I’ve been working with Apache Storm and at its heart it uses the Disruptor. Storm uses the disruptor in a way that wasn’t originally defined by it’s creators. Storm can process an incredible volume of data distributed over multiple servers.

https://github.com/apache/storm/blob/master/storm-core/src/jvm/org/apache/storm/utils/DisruptorQueue.java

The queue itself is called by Clojure code so it’s not directly obvious in the java how it’s implemented. :frowning:

I’ve been thinking: “What if you could create a game server cluster that shared the workload of updating the world?”

Once, I think this is already done. Large scale business applications work on clusters with shared data, scientific applications as well, so I’m pretty sure games can do that, too.

Second, the only effect is that you can run larger worlds with more players, and have less need to separate regions into instances. Instances can always be distributed among a cluster easily, since they are isolated from the rest of the games world.

I don’t think it will be a very fundamental change. Instances may be partly driven by technical constrainst, but for most multi player games they are also required for gameplay reasons - players in different stages of the game need to experience different views on the world, and this is usualyl done by providing instances that fit the “story progress” of the characters - e.g. the change of before and after a quest has been completed.