My "largely multiplayer online game" -- is sharding necessary?


I’ve worked professionally in games on and off for the past decade and also do some software development on the side As an enthusiast, this is my “dream project” so to speak and I was hoping to get some feedback on how to continue in regards to Unreal. I’ve played with Unity and TGE previously, Unity being a strong second option – but nothing else I have touched has worked as smoothly and “just worked” quite the way UE4 has for me thus far and the support on this release has sold me.

I am looking to build a small persistent multiplayer world – one which likely could fit easily with the 5km x 5km limitations some have noted for UE4’s map size. I am looking to make a much smaller densely populated world (and mostly indoor) rather than a massive empty one. The maximum target capacity per world would be about 500 users simultaneously, though never on screen or even in the same area of the map at the same time. So please check my sanity…

  1. If the map is designed, simplified and optimized for performance, is creating a very dense map within the recommended specs (5x5) realistic? By dense I mean the map will be divided heavily into intertwining sub-areas and spread across levels.
  2. In a map like this, is it realistic that with a limited amount of customization, UE4 could run the map with 500 players absolute max? Keeping in mind most players will be spread across the map and typically will only be on-screen with each other in limited numbers and for limited durations. I have noted already that there is a soft cap of 64 players or so currently in UE4, but typically people speak with concern to juggling that many players on screen simultaneously more than anything.
  3. Given the circumstances, and pretending that sharding MAY not be necessary in this case (realistically I am expecting sharding will still be a necessity), would sharding be to the benefit of a project of this scale?

A nice noob post to break me in… thanks for your time!


Note: I’m not super good with UE4 and I don’t know the capabilities but here is my “go” at trying to answer your questions.

1.) I’d say with something that size, and with that many textures, polys, and information. You’d get some client side FPS drops, and probably server side lag as well. So my suggestion is try level streaming. Make several maps about 1km x 1km then stream the levels to where there isn’t loading screens.

2.) You’d have to setup LODs or get the culling (I think that’s the proper word) to make it easier on user/server systems.

3.) You’re more than likely going to have to have shards/instances where the whole world is loaded, or within view/draw distance to have an X amount of players. I’d say it’d be better to have shards/instances than not having them.

I had a thought, the TES games do it, I’m sure others do as well. Where when you have buildings that are able to be entered, when they active the door of it, it throws the player into a loading screen and puts them in a level of the interior of that building. To where on the outside it looks like an actual building, but it’s really just a facade. Then when the player loads that “level” it is only loading/rendering the people that are on that level, which the only thing they’re rending is a very minimal interior. On a scale of what I’m guessing you’re thinking, that might be a lot of work, but it would help with performance.

When I create my singleplayer game, that is pretty much how I’m going to have it. Where when a player enters a building they actually load a whole new map.

Hopefully I kind of sort of helped you. I tried my best to answer. And welcome to UE4 and the Forums!

Just FYI. The maximum single world size was increased to 20km, not 5km.

Also, with world composition you could make something infinitely bigger. But then you would have to figure out origin shifting on a multiplayer basis.