Make Multiplayer Games Easily with GDevelop and THNK

Arthur Pacaud

Arthur Pacaud

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.

What is THNK?

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 THNK framework.

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:

  • Simplifying communication: All clients only need to speak to a single server. If everyone had to connect to everyone, it could cause weird problems if some clients cannot connect together.
  • Cheating prevention: Since the client cannot move objects directly, change the server's variables, or really control anything else than what they should do, it makes cheating much harder. A hacker could locally try to teleport an object to another location, but the other clients only listen to the server, not to the hacker’s client, so it wouldn’t affect anyone else playing the game.
  • And more!

That is where THNK comes in. With it, you can create an optimized multiplayer experience in 3 simple steps:

  • Tell it whether your events are to be run on the server or on the client via a special condition.
  • Tell it what objects are to be synchronized from the server to the client with a ”Synchronise object” behavior, and what scene variables to synchronize by prefixing them with “State.”
  • Start a server and connect clients with one of THNK’s numerous networking adapter extensions - P2P (P2P ID), Geckos.io (IP address), or something else. The choice is yours!

Why should I use THNK?

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.

You can learn more on the website, and download the extension and example project from its GitHub page.