Hello.
Previously, I’ve made some multiplayer games with Unreal and Godot, but maaan, after suffering all the client-server replication thingies and finishing my multiplayer games, then I had to manually make matchmaking stuff, user registration, etc.
Then, I found Nakama: Yay, realtime multiplayer, database storage, user login, google play purchase handling and all of that for free (except servers, you know). So, I got interested on making an Unity game with it.
I went a bit deep into the documentation and, if I understood correctly, there are no RPC events and data is shared with JSON files via webpackets with no udp or something.
Well, then, there’s the question. I want to make an online third person game, like Fall Guys, but simplified. So, I thought on making something like this:
Every player shares to the server their data every 0.1 seconds - So, they’re sharing their location, Z rotation (I only need the yaw rotation, not roll nor pitch) and finally, the player state = 0 is idle/walking , 1 is jumping, 2 is double jumping, 3 is dead… etc) Things like Idle/walking calculation are done on client side after gathering the data by comparing the current location with the last one.
Example:
“x”: 345.34,
“y”: 502.20,
“z”: 302.01,
“rz”: 359,
“s”: 0
That data gets sent to the server, and shared across the clients on a specificmatch.
And that’s it!
I don’t want a server authoritative game, having stuff calculated on the server side seems expensive and probably not worth the effort - hack the game as much as you want if you’re happy winning that way, just eat my ads and I’ll be fine.
So, can I do that? Or are there better ways? Should I even use Nakama?
Also, if sharing that kind of JSON data is the way is the way to go, does it get optimized? I mean,
this:
“x”: 345.34,
“y”: 502.20,
“z”: 302.01,
“rz”: 359,
“s”: 0
seems like a waste of data when we compare it to this:
[345.34,502.20,302.01,359,0]