Hello, everybody.
I’m writing to ask some important questions about GDevelop’s solution to multiplayer games.
The Server-client Relationship
Lets face it; It’s pretty easy to mod and cheat in most GDevelop games. In my GDevelop game, I wished for multiplayer games to have a chat. I however understand the implications of a public unfiltered chat, especially on gd.games, and so I created a chat filter system. If you send a inappropriate message, you get warned once with a dialog, as shown in the image. If you are warned 4 times, you are kicked, and receive a temporary ban.
But theres a big problem; the only code is client-side code.
In an ideal game, there is the software you run on your computer (the game), and the software the runs on the server the client on your computer connects with.
In a model where we have access to both code, I would program this chat filter and ban system in this exact way:
When you type a message and send it, it is instantly displayed on your screen, but it is then sent to the server where it runs the chat filter on it before it is sent to all of the other clients. If it doesn’t pass the filter, it checks who sent the message, and communicates to another server that handles accounts, and accordingly updates the amount of warnings the player has in the database. If the server software detects that the player has received too many warnings and as such requires a ban, it kicks the player, it does not ban the player itself. It lets the account server register the ban on its own, and then once the player is on the menu, it sends one request at the beginning of the scene to check if you are either banned or not banned. If that is eventually true, it displays the banned popup. It will also send the request each time a multiplayer game is attempted to connect to. And even if the player manages to cheat around that, it checks once the player joins whether or not theyre allowed in, then displays the game and the join message.
But, I can’t do any of that, because the servers arent solely mine, the accounts arent mine, and it behaves more like P2P.
Lobbies and Friends
The multiplayer uses lobbies, but…what if i wanted lobbies to remain open, and allow people to come and go? And, what if only two friends want to play together? The multiplayer really, doesn’t give you many options.
Cheating
I guess this is a little more of a me problem, but how am I supposed to prevent people from cheating, especially if the server cant detect if something is wrong, because I can’t get it to?
It says something about preventing cheating, but I’m not so sure how it gets rid of all cheating, or if it could even fix the players speed being set to a high value, because what if that is a behavior?
It says in the documentation, “GDevelop Multiplayer infrastructure is built to scale from very small game to games with thousands of concurrent players.”, but…How? Do I have to contact GDevelop? Because the last time I did that, I didn’t hear anything.
