1
\$\begingroup\$

How is a gameworld of super large size handled? I was always wondering how games handle large MMO worlds. Until now I thought that separation of areas was the key for games like World of Warcraft. In WoW there are continents, that are handled by different threads. And each continent can be multiphased and each phase would be handled by different thread. But recently I started playing a game called Dual Universe. This game features a single shard space of size more than 100 000km x 100 000km x 100 000km. There is no loading when moving around and you can be anywhere with your 2m tall character and build anything of even smaller size. So, how is this possible? Do they just have one core to process this whole game world? (of course use different threads for networking, user input validation, database, etc) Or did they come up with some way how to split game world into zones and handle each one by different thread and then do some syncing and handovers when something happens near the zone edges? I always thought that this is impossible, because all MMOs do some kind of world splitting like continents/planets/solar systems/realms.

\$\endgroup\$
3
  • \$\begingroup\$ That sounds like a question to ask the developers of Dual Universe. They're very likely the only ones who know the details of how they implemented their solution. If you want to implement something similar in your own game, try phrasing your question in terms of your own game and the types of interactions it needs to support, and we can suggest approaches that will fit your game's needs (or ways to re-scope so that your needs are achievable). \$\endgroup\$
    – DMGregory
    Oct 25, 2022 at 19:37
  • \$\begingroup\$ I wanted to do something similar but simpler. For example lets say MMO pacman but on size of 100 000x 100 000 km and with possibly 100 000 online players(or how much network allows). There can be millions of objects and players should be able to move around without loading. But I was just wondering if there is some pattern on how to split world in parts and handle each part with different thread. Dual Universe is the first game I see where im almost certain they must have done something like that, but maybe someone did it in the past already and I just missed it. \$\endgroup\$
    – plomba
    Oct 25, 2022 at 19:48
  • 2
    \$\begingroup\$ Please keep in mind that when you want to reword what you're asking or add a bit more details, you need to edit the question as that's what folks will read and that's about what folks will provide answers, it's not about what's in the comments. \$\endgroup\$
    – Vaillancourt
    Oct 26, 2022 at 0:15

1 Answer 1

0
\$\begingroup\$

There is little reason for things to interact with something a kilometer away. So there is no reason for the entire world being a single shard.

This means that if you segregate the world into chunks each in their own thread/process, there is only the boundaries where those things need to interact across shards. And where players traveling through need to get migrated from one shard to another.

There are a few ways to design those areas to encourage players to stay away from them:

If those boundaries are non-pvp-combat zones then it's less critical that sudden interactions need to happen instantly.

Remove the farmable critters in those boundary areas and you naturally create a zone where players just travel through quickly.

Other options to design a boundary is long corridors with sight blockers at either end (not uncommon in MMOs to create an entrance to a building). As the player runs through you migrate them from one shard to another.

As an aside: there is no reason that a shard only needs a single thread. There are plenty of strategies of dealing with multiple players and entities interacting with the world and each other and resolving that spread over all the cores in a server.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .