Improbable Icon

SpatialOS as a multiplayer hosted solution?

general

#1

I’m wondering if there is some internal discussion about using SpatialOS in a way that lets users start their own servers?

My scenario is wanting to have the ability for users to modify a local worker through a scripting interface.
Cloud hosted workers will “help out” with base logic such as entity position updates, but the local modified worker will run custom scripts.

Imagine a case where it would make sense to use SpatialOS for load balancing but allow users to start their own dedicated servers, like Rust or DayZ.


Realtime modding inside SpatialOS?
#2

Funny, i asked almost the same via mail today!

My idea was to let the users rent their own servers (deployments) and provide them a possibility to adjust the game configuration themselves.


#3

Hey @AtomiC,

That looks like an interesting use-case indeed and it has some similarities with other idea’s for games with SpatiaoOS that I’ve heard. Still, I’m not sure that I fully understand it yet. Could you tell me more about:

  • What kind of “local” worker modification do you want to allow?
  • What type of things should the “local” worker control and would be specific to each user’s server?

Some general observations about such user-controlled modifications & the bring-up of dedicated (private) deployments:

  1. You can definitely allow people to bring up their own servers. The main point is that you would need to take care yourself of the billing (possibly based on some detailed information you get from Improbable about your account billing). You would also need to create your own custom tool (or we might provide one in the future -> pure speculation) to spin-up the deployments your user requests.
  2. A possible way of implementing configuration would be to spin your own authentication mechanism in your client in order to identify the specific “owner” user. Then you have a dedicated “world” entity that stores the global parameters and that is only delegated specifically to the “owner’s” client that is identified via your authentication service or else a default managed worker that you control if the “owner” is not present.

These are of course only the first steps towards such a game & service but I hope this gives some food for thought. Also if I have some answers to my initial questions then I might be able to elaborate further. :wink:

Duco


#4

Is there a way to do this, maybe a webservice REST-API?


#5

I would like to allow for full modification of a local worker. Even if you only distribute a binary with a scripting interface, people will, from experience, decompile and add their own modifications outside of the interface.
Having the developer of the game be able to compile a managed dll for the users to hook into would be enough.
The dll would expose an event interface and commands. Not in the current way, (the Writer and Reader) way but a simple OnEvent(EventType type, …) and SendCommand(CommandType type, …)

The worker would simply receive events and react to them through commands.


#6

Hey @AtomiC!

There are some really awesome ideas, and definitely along the direction we see SpatialOS eventually heading.

  • There’s nothing stopping you right now integrating a scripting language into your server workers, such as http://www.moonsharp.org/. You could then allow server-side scripting, as well as the local worker mods!

  • In terms of allowing your players to manage deployments of your game, this is something we’ve talked a bit about internally. This is something you could do yourself, through integrating with our deployment tools, or is something we could eventually add as a first-class feature on the platform.

Cheers,
Rob


#7

@daschatten: Currently the easiest - half-hackyish - way to do this would be to run your own server (cloud instance) outside of SpatialOS that receives spin-up queries from your users, performs the necessary authentication, billing tracking, etc. and then runs a spatial deployment launch with the right parameters.


#8

I won’t need this feature short-term or mid-term, so please add a REST-API to your feature list :slight_smile:


#9

Good to hear that this is being talked about :slight_smile:

Another idea about this as a first-class feature is that users could “rent” space, through improbable, on google cloud clusters with spatialos credits. The users hosting custom servers would pay for bandwidth/cpu with their own spatialos credits.

I don’t know…maybe the developer could take their own cut on top of that?


#10

Thanks for the feedback and ideas @AtomiC
We dont have details to share yet but we are definitely looking into allowing your players to manage deployments of your game.


#11

Hey mathieu,

Friends of mine wanted to know if SpatialOS could be used as a replacement for typical multiplayer games with lobby/matchmaking systems such as League of Legends ish games.

I referred them to this thread but I was wondering if there are any updates to this?

Basically I want to present a solution that isn’t a workaround.