I have a similar question. Say you implement your game logic in some language that isn’t Lua, JavaScript, or Go. Maybe you test it in a local setting without authentication or social features, and have entities syncing and interacting well. Then you hook that game to Nakama, and maybe you want to use server-authoritative multiplayer. How do you do that without reimplementing your game logic in another language? This seems especially problematic for some of the projects I’d eventually like to work on, where the client and server are essentially the same game and use the same spaceflight and other systems. The difference is that the client single-player mode is a demo for flying around, learning piloting, etc. while the server/multiplayer mode is an MMO (or maybe not Massive, but a world where several players can fly around and chat.) Single-player mode lets one player fly around and interact with NPCs and such, but multiplayer mode connects with a headless server running the same systems, and syncs changes across the network.
I think maybe the way you do this is by figuring out what you need to sync, then writing JavaScript/Lua/Go code to interact with your server process. So maybe the server exposes a GRPC API, and the various commands use a GRPC library to call it. By the time a request hits the API, Nakama has already authenticated it and can guarantee that the player is issuing commands to the correct entity. Then the chat and other features are layered on top of that.
Is that accurate? Or is the expectation that I implement all my server-side logic in a supported language and the client is just a dumb renderer/controller? If it is accurate, is GRPC the recommended technology for the Nakama->game server control plain, or would something else be a better choice? Guessing GRPC’s being TCP doesn’t matter nearly as much if Nakama and the game servers are likely on the same network segment.
Thanks.