A downloadable Godot Editor Plugin

Buy Now$25.00 USD or more

What is EventBridge?


EventBridge gives you a clean, scalable, and multiplayer-ready event-driven architecture for Godot 4—just install it like a plugin.

Perfect for multiplayer projects where managing signals and RPCs becomes chaotic.

  Auto-generated API – No more manual signals & @rpc connections
✔  Multiplayer-ready – Built-in events → emit_local, to_all, to_id, to_server 
✔  Editor integration – Visual Event Registry & API refresh in one click
✔  One source of truth – All events live in one file → event_registry.json

 

 

EventBridge isn’t a replacement


It’s a higher-level layer that uses Godot’s multiplayer/RPC under the hood and adds structure (namespaces), generated APIs, validation, and logging on top.
You still need to know some basics of multiplayer setup: starting a server, connecting clients, and using Godot’s built-in multiplayer nodes such as MultiplayerSpawner and MultiplayerSynchronizer. 

A good starting point if you’re new to this topic:

High-level multiplayer Godot 4.4 Documentation

I recommend watching the talk “Multiplayer Basics in Godot” by Travis Hunter at GodotCon 2025.

 


 So do these two videos from “Icy Engine”:

Godot Multiplayer Tutorial: The Quick and Easy High-Level API


Godot Multiplayer Tutorial: Low-Level API




About the idea

I built EventBridge because I was tired of fighting with RPC calls and the high-level multiplayer API in Godot. I wanted multiplayer to feel as simple as using signal — emit an event, and anyone connected (server or client) can react instantly. 

After learning all this you might ask yourself, “Isn’t there an easier way to manage my @rpc stuff?” I’ve been there. I’m a self-taught Godot programmer who has been working for almost 5 years on a board game. I spent a year just learning how to make a multiplayer game, and as a 36-year-old married solo dev with a 1-year-old daughter, time is limited. That’s why the EventBridge plugin was born—and honestly, I don’t work without it anymore.

With EventBridge, you:

  • Emit & receive events like signals — no manual RPC wiring
  • Stay organized with namespaces for cleaner, bigger projects
  • Build faster without worrying about networking boilerplate

My vision: EventBridge will grow into a full event-driven multiplayer framework for Godot — with live debugging, built-in matchmaking, offline/local mode, and tools for large-scale projects. Multiplayer without the headaches.


 

Installation


  • Copy the addons/event_bridge folder into your Godot project.
  • Enable the plugin in Project Settings → Plugins.
  • Add event_bus.gd as an Autoload Singleton:
    • Name: EventBridge
    • Path: res://addons/event_bridge/autoload/event_bus.gd
  • Add EventManager.gd as an Autoload Singleton:
    • Name: EventManager
    • Path: res://addons/event_bridge/generated/EventManager.gd or
    • Path: res://addons/event_bridge/autoload/event_validator.gd
  • Add event_bridge_logger.gd as an Autoload Singleton:
    • Name: EventBridgeLogger
    • Path: res://addons/event_bridge/event_bridge_logger.gd


 

Usage - Manually


1. Create the EventBus

  • Create a category “Test” and add two events “Ping” & “Pong”. 
  • Add an argument “msg” of type “String” to both events.
  • Click the “Generate” button at the top.

  • Use the RPC config for Mode, Sync, Target, Transfer Mode & Channel as shown below.

  • This generates the event_registry.json.

2. Get your Namespace

var nsTest = EventBridge.get_namespace("Test")

3. Subscribe to your Events (anywhere in your project)

nsTest.on("ping", func(msg):
    print("[CLIENT] Received PING from Server:", msg)
    
    # Send pong back to the server
    nsTest.to_server("pong", ["Hello from CLIENT %d" % multiplayer.get_unique_id()])
)

4. Emit your Events (from the server or anywhere in your project)

if multiplayer.is_server():
    await get_tree().create_timer(2.0).timeout
    # After 2 seconds, send a message to all clients
    nsTest.to_all("ping", ["Hello from SERVER"])

5. Cleanup your Events 

func _exit_tree():
    # Disconnects all events for you—no double connections
    nsTest.off_all()

 

 

Usage - Autogenerated EventBus


1. Subscribe to your Events (anywhere in your project)

EventManager.on_ping(func(msg):
    print("[CLIENT] Received PING:", msg)
    # Send pong back to the server
    EventManager.pong("Hello from CLIENT %d" % multiplayer.get_unique_id())
)

2. Emit your Events (from the server or anywhere in your project)

if multiplayer.is_server():
    await get_tree().create_timer(2.0).timeout
    # After 2 seconds, send a message to all clients
    EventManager.ping("Hello from SERVER")

3. Validate your events (optional)

# Validate ping: message must not be empty
func validate_ping(msg: String) -> bool:
    if DEBUG:
        print("[Validator] Checking ping: ", msg)
    return msg.length() > 0
# Validate pong: message must not be empty
func validate_pong(msg: String) -> bool:
    if DEBUG:
        print("[Validator] Checking pong: ", msg)
    return msg.length() > 0

4. Cleanup your Events

func _exit_tree(): 
  EventManager.off_all()
  # or
  EventManager.off_ping(my_callback)

 

 

Read more about the EventBridge Plugin here


As I try to update the documentation frequently, please follow one of these pages for notifications. These sections are still in progress.

Devlog: itch.io Devlog: ko-fi.com Documentation on GitHub

 

 

Future Updates


I plan to keep improving this plugin. Right now, it supports desktop exports (Windows and Linux). I tested a dedicated server build on DigitalOcean (headless export running on the VM) and connected to it from a desktop client without issues.

HTML exports are not supported at this time.

EventBridge currently uses Godot’s ENet transport (ENetMultiplayerPeer)—a UDP-based protocol. Browsers do not expose raw UDP sockets or custom native protocols like ENet to WebAssembly. As a result, ENet is not available in Godot’s HTML/Web export.

I will also release my EventBridge demo project soon, where I showcase concepts like a dedicated server setup with an extra client that acts as the admin—so you can connect as an admin between the server and all connected clients.

You can also check out my YouTube channel, which I’m building around this plugin. I’m just getting started, so it may take some time.

 

 

License


EventBridge Plugin — Custom License Copyright (c) 2025 AUTeddy / Edis Hobl-Zunic

Permission is granted to the purchaser to:

  • Use this plugin in personal and commercial Godot Engine projects.
  • Modify the plugin for use in their own projects.

Restrictions:

  • You may NOT distribute, share, or resell the plugin in its original or modified form.
  • You may NOT include this plugin in any asset packs or templates for sale or free distribution.
  • You may NOT claim ownership of the original code or remove copyright notices.

Liability: This plugin is provided “as is” without any warranties or guarantees. The author is not responsible for any issues or damages that may occur from using this software.

By using this plugin, you agree to these terms.

Published 18 hours ago
StatusIn development
CategoryTool
AuthorAUTeddy
Made withGodot
Tagsaddon, editorplugin, eventbridge, Godot, plugin, rpc, signals
LinksGitHub, Discord, Ko-Fi

Purchase

Buy Now$25.00 USD or more

In order to download this Godot Editor Plugin you must purchase it at or above the minimum price of $25 USD. You will get access to the following files:

event_bridge_v0.7.zip 69 kB

Leave a comment

Log in with itch.io to leave a comment.