Reading the June 2021 new update I was super excited when I saw the ‘BespokeNetworking’ section with the mention of an API based client-server connection! Let me tell you a bit more about how significant this feature could be!
With experience in cloud and serverless etc. from my day job I can’t help myself but start to think of how I would implement a series of cloud-functions or lambdas that could host the API. Or if latency becomes an issue potentially a serverless container runtime.
So what’s the point in this? What would an implementation like this mean for users? Well these come from the main benefits of serverless tech itself which are the following:
Scale to 0: Serverless compute can scale down to 0 instances. Meaning if no-one is playing on the server you won’t have to pay for any processing. In theory while no-one is playing the only thing you would have to pay for is the storage of the game-state. E.g entity locations, player level states, player’s inventory etc etc.
Pay for what you use: Following on from the previous point even when players are on the server, the compute costs for and API call is pretty cheap.
‘Infinitely’ scalable: Serverless solutions provided by large cloud providers such as GCP, Azure and AWS can scale to thousands upon thousands of instances capable of handling millions of requests per second. Again, in theory the only bottleneck here would be the persistent storage read/write speeds.
Not only this. But also the idea that people could implement their own APIs for their server, or external systems that could interact with the server’s API. For example, you could have a twitch chat bot that could control the movement of an entity within the server based on which direction that is said most in chat over the last 5 seconds. Or other silly/less silly things like that.
Super exciting right!? It would be great (and pretty fun ) to build some tooling around this which abstracts the implementation and would allow community developers and players to run cheap + scalable servers without having to worry about how any of this works.
I can’t wait to get my hands on S&box and start developing cool implementations for stuff like this and see what else the community comes up with!
Who else has any ideas around what you could do with this? Or is just excited by the though and has any comments?