Go, Go, Godot!
  • 0

godot-matcha: Free multiplayer without a server

December 23, 2023

Godot-matcha is an addon that lets you use WebRTC for multiplayer games by handling matchmaking using WebTorrent trackers. Conceptually it’s quite an interesting, novel approach.

WebTorrent uses a modified BitTorrent protocol that allows it to work with WebSockets. A WebTorrent tracker is essentially a directory service that keeps track of torrents offered by users. A torrent is uniquely identified by its info_hash, so if you have the torrent information, you can look up who is offering a file for download.

Rather than tracking a specific torrent file, godot-matcha generates a random identifier, which it uses as a room (or lobby). If another player has the same identifier they exchange the WebRTC’s SDP details to establish a connection.

Connecting players this way is essentially free. This is a suitable approach for mobile games, for example, where you start a game, and share an identifier with someone else to join in. Mobile party games, for example, use such an approach: One player starts a game, and others join by using some random id such as “FJRLE”.

While godot-matcha is a great proof of concept, I’ve done some testing that showed that the various clients disagree on their unique IDs. This results in challenges when setting the multiplayer authority, a key part of making the high-level multiplayer abstraction work well. The reason for the mismatch is how godot-matcha creates offers, which sets a random id as peer ID before the peers are even connected.

In contrast, the godot-demo-projects repository has a webrtc_signaling demo, which uses the lobby/signaling server to tell the clients their ID, so that all clients (including the one acting as the server) add the same peer ID.

gdscriptnetworking
Posted in Godot.
Share
Previous2D Fog Effect Shader Tutorial
NextCreating a UDP peer-to-peer connection

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Related Posts

  • October 24, 2024

    Inventory System v1.17 available

    A new version of the Inventory System is available. This release includes various refinements to existing systems to flesh out more combat-related functionality. Inventory Ammo Provider The GGAmmoProvider component is responsible for providing ammunition to equipped weapons. Previously, it only had a “simple” strategy: Creating ammunition out of thin air. The new GGAmmoProviderInventoryStrategy pulls ammunition …

  • June 2, 2023

    Creating games with Godot Engine using AI

    New to Godot Engine? Want to get started creating awesome games quickly? Just use AI! AI learns (is trained) from online content (which is a whole separate topic). As a result, the quality of the answers the AI provides is based on the volume and variety of content available to learn from. Since Godot is …

  • March 27, 2025

    Inventory System 2 Alpha 5 available

    This release addresses an issue that arose due to Godot 4.4 changes in how JSON is deserialized. Relevant Godot issues: #103374 and #61464. Makes sense why it was changed, but it might impact anyone unaware who’s consuming a JSON-based API, and wondering why responses may not be as expected. In addition, this release now includes character damage and …

  • February 4, 2024

    Inventory System v1.3 available

    Another Inventory System release, and this time we’ve added support for persistence through serialization of inventory data. Features: Bug fixes:

    © 2025 GoGoGodot.io. All rights reserved.