I’m looking at using SpatialOS for an upcoming project in UE4.23, and I noticed in the Example Pricing that there is sample specifications for Max Player Density. The project I’m looking into would call for 100+ players, but also it would call for them to be together in a relatively small space. There could be moments where every player is in the same open room together, but the game won’t call for very complex mechanics. It could be thought of as a Social Walking Simulator. Is there a hard upper limit to how many players can see each other at a given time? And if it’s more a question of performance concerns than set limits, are there any specific methods or pieces of advice for optimizing for a large crowd in a small space?
Hello @Light, how are you?
“Is there a hard upper limit to how many players can see each other at a given time?”
SpatialOS does not set a hard upper limit, but of course you will eventually hit
a CPU/GPU/physics engine ceiling. But there’s no clear and magic number as the maximum number of players possible will depend a number of factors, including how you structure, build and optimise your game, the genre, your use of AI, density, the deployment template you’re using, etc.
And from your description I’d assume these players would interact with each other, generating a big amount of sync data, in this sense SpatialOS will help you since we can sync more data than a single game engine.
“And if it’s more a question of performance concerns than set limits, are there any specific methods or pieces of advice for optimizing for a large crowd in a small space?”
Without getting to know your project’s design and architecture better the two SpatialOS features that I believe will be helpful to your project:
Server Offloading, which allows you to divide the compute load between the main Unreal server-worker instance and one or more other server-worker instances of different types. Each instance computes one set of Actor types across the whole game world. - https://documentation.improbable.io/gdk-for-unreal/docs/multiserver-offloading-introduction
QBI (Query-Based Interest) which is a way of specifying the entity components that worker types or instances need to receive updates about - https://documentation.improbable.io/gdk-for-unreal/docs/game-client-interest-management
Have a look at the docs and let me know if I can help you further.