Client device cant keep up

Hi,

I have implemented an mmo-server by extending the golang runtime framework. A couple of days ago we ran some open beta tests with our community and found that players on mobile are getting kicked. I would assume this has to do with the device cant keep up with the messages being sent. We are sending each message it as json.

We have made tons of optimizations to try to fix this, but it is just not enough.

Im now looking into protobufs, as a last resort. My question is, is there any documentation on how to use it in Nakama, and does Godot support this format?

Thanks in advance,
/G

Hello @gruset,

It may be interesting if you share (maybe in another post) in detail how you’re currently mapping players to matches, how many connected players per match, how many messages are being received by the clients and etc.

If you can generate the protobuf stubs for Godot then it should be as simple as encoding/decoding the match messages with those stubs, and then use the golang stubs to do the same on the server. The project-template can serve as an example on the server side (but not that you’d use the proto marshaler/unmarshaler instead of protojson). The proto definitions are in the api folder.

Hope this helps.

Its very hard for me to “share” how we do it - the project is huge.

Essentially, all players are connected to one match and one match only. The server is then keeping track on where in the world all the players are. We only update the players in their local space, meaning in their neighbouring chunks.

I have optimized the outgoing messages to being sent in one large batch instead of several smaller messages.

Everything works like a charm on desktop, but mobile players (i would assume lower end devices) is being kicked.

/G