
Godot EventBridge Plugin
A downloadable Godot Editor Plugin
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 |
Status | In development |
Category | Tool |
Author | AUTeddy |
Made with | Godot |
Tags | addon, editorplugin, eventbridge, Godot, plugin, rpc, signals |
Links | GitHub, Discord, Ko-Fi |
Purchase
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:
Leave a comment
Log in with itch.io to leave a comment.