It would be great to add GameMaker Studio 2.0 support but I don’t have much knowledge about GMS. We do have a REST API but don’t document it because we have a Swagger spec that can be used to generate the outline of a client sdk.
Would you be interested to collaborate on a GMS client sdk?
Let me see what I can do. I will start by bringing all REST API implementation to GMS2. Not sure how long it might take, because this is my side project. Also I might need some help when I come to the real time stuff. Could you please give me more information on that?
Also I might need some help when I come to the real time stuff. Could you please give me more information on that?
Sure. Happy to help.
Before I cover the realtime protocol in more detail I’ll describe how we maintain the client sdks for each game engine or language we support.
Each client sdk codebase has a small Go application which is used to generate the low level client object/struct (I’ll use the .NET sdk as a reference). The Go application reads the Swagger spec and generates a single file with minimal or no dependencies that is used as the “low level” client. We then wrap around it with another client object to make the API nicer to use.
With the realtime protocol we manually generate the message types to send over the wire when you send JSON but with Protobuf you can just send binary messages. Have a look at this code for how you connect and do the protocol upgrade:
The only requirement of the socket implementation is that it must respond to PINGs (frame control messages) sent by the server. This checks the liveliness of the socket which helps greatly to detect bad disconnects quickly.