Description
Changelog
Reviews (0)

Decoupled messaging for Godot .NET

eMessagePipe brings Cysharp’s MessagePipe to Godot .NET projects. MessagePipe is an in-memory messaging library for .NET: publishers send typed messages, and subscribers handle them without either side needing a direct reference to the other. This helps keep scenes, services, and game systems independent and easier to test.

MessagePipe features

  • Typed publish/subscribe: Publish messages through IPublisher<TMessage> and receive them through ISubscriber<TMessage>.
  • Asynchronous messaging: Use async publishers and subscribers to await handlers, choose parallel or sequential execution, and pass cancellation tokens.
  • Keyed brokers: Route the same message type by key, such as an entity, channel, or game state.
  • Buffered brokers: Retain the most recent message and replay it to new subscribers.
  • Request handlers: Send a request to one handler or fan it out to multiple handlers and collect responses. Async request handlers are also supported.
  • Filters: Add handler middleware for cross-cutting behavior such as logging, validation, or filtering.
  • Diagnostics and analyzer: Inspect live subscription counts, capture subscription creation locations, and use the included analyzer to flag discarded subscription disposables.

MessagePipe subscriptions return IDisposable. MessagePipe also provides DisposableBag to group subscriptions for cleanup, such as when a Godot node exits the tree.

How eMessagePipe integrates with Godot

Enable eMessagePipe through the ePlugin Framework to install the MessagePipe and MessagePipe.Analyzer NuGet packages in your Godot C# project. You can use MessagePipe with your preferred dependency injection setup.

For projects using eContainer, eMessagePipe provides an optional integration that registers MessagePipe services in a VContainer LifetimeScope, alongside your other services. With this integration, register each message type explicitly; automatic open-generic registration is not supported.

Requirements and notes

  • Requires a Godot .NET project and the ePlugin Framework.
  • eContainer is optional and required only for the VContainer integration.
  • Distributed transports such as Redis, WebSocket, and gRPC are separate MessagePipe packages and are not installed by eMessagePipe.
  • This project is experimental and still in progress.

Changelog for version v0.3.1

2026-09-30 13:23:54

No changelog provided for this version.

Reviews

eMessagePipe has no reviews yet.

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.