Improbable Icon

Forums

SpatialOS for MMO


#1

I came here after searching around for potential network replacements for unity/unreal since out of the box Unitys network is being put back in the box and Unreals network is built for session based activity but can have dedicated and is always server authoritative.

From my team we run an emulator for a dead game (so basically a private server), but that game, after receiving a older version of the source code, is extremely bad in terms of design choice and networking management, how much control the client has. As a result the emulator reflects that management but with as much MVC design as possible to keep it clean and efficient; which only goes so far.

So, I started building the game in the engines, started with Unity and then went over to Unreal, I know both engines as I work with them and have done for the past 4 years as well as an extra 4 years in University.
I got some decent process through Unreal with login validation, map switching, but I eventually realised that Unreal doesn’t have a persistence layer for the server, it is dedicated… For that instance, it doesn’t spool up other instances, which I think is possible to do but not exactly safe or the easiest thing to do when digging into the actual engine code.

I have read around about multiple rooms/maps and they basically suggest that it would be a single map, which is fine for the final product although it might limit how many systems it can be deployed to, but in that case I would probably be better off sticking with Unreals networking, in Unity I can see the advantage because it utilizes the ECS; but to develop for that requires its own set of learning which I find a little sparse to get adequate resources in order to run through entity development in this situation. Of course entities are better for an MMO and usually recommended.

I may be over thinking implementation wise, but I am right in saying that even Spatial OS would require a single map to manage rather than split instances? The game would never get to a situation where it needs to spin up multiple shards and phase players into different ‘maps’.

Bit of an idea from my side;
Client launch -> Login system (REST) -> Load all characters created (REST) -> Join last connected map

The map side would have been something like {SomeIP}:{Port} where the map would be hosted by that port.
It seems like it would work like:
Join Map-> Get last position-> Update.

Any clarification on whether this is the correct idea that I have for spatial or if multiple instances are possible would be great.

Also if I need to clarify anything because I think i went off once or twice.


#3

Hey @Vegeta,

It’s possible to run multiple deployments inside one SpatialOS project. These would appear something like this in your Console:

You can automate the management of deployments (that is, creating and destroying deployments) using CI. We’ll be releasing more detailed guidance on managing the back-end of your game in the future.


#4

Ah thanks for the quick reply.

I will have to look further in the documentation if there is some based on managing the deployments, I am assuming in my case each deployment would act as the map, and I would just be copy pasting the majority of the workers for individual maps unless there is a special map.