NOTE: This is a guest post by Arthuro555, a well-respected community member who has created a new option for building multiplayer games with GDevelop.
Multiplayer can be a hard thing to do, even for experienced game developers. But what if it didn’t have to be? Introducing THNK - An authoritative multiplayer games framework for the FLOSS engine GDevelop.
THNK is a framework. In GDevelop, you can find it as an extension that integrates deeply within your game and forces you to respect a few rules when making the game. You can use that to simplify and handle a lot more tasks than a traditional extension would.
The different “multiplayer” extensions currently in GDevelop, like P2P, only help with networking, the communication between machines. This is very useful but caters to only one type of multiplayer need and application.
That leaves a lot for creators to build - and, with no experience in architecting multiplayer systems, developers may end up with flawed, unperformant, and insecure multiplayer games.
The current standard for multiplayer games is to make an authoritative architecture. That means that a single instance of the game, the “server”, runs the whole game and tells all other instances of the game, the “clients”, where objects are to be moved, what they should display, etc. This has multiple advantages:
That is where THNK comes in. With it, you can create an optimized multiplayer experience in 3 simple steps:
THNK, just like GDevelop, doesn’t restrict you in any way. It allows to you create very different multiplayer experiences, similar to those in games like Minecraft (Player hosted servers), Among Us (Public rooms or short IDs to connect to a friend), or Valorant (Transparent matchmaking and connection of players).
Games made with THNK can also be run in local multiplayer or in single-player out of the box - no need to have separate events for multiplayer!
THNK also provides an optimized networking solution. It uses delta patching and a custom binary protocol to transmit the least data possible between client and server, so it will also work well on less-than-optimal connections.