OliveGameStudio.Messenger
1.1.0
The owner has unlisted this package.
This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package OliveGameStudio.Messenger --version 1.1.0
NuGet\Install-Package OliveGameStudio.Messenger -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OliveGameStudio.Messenger" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OliveGameStudio.Messenger" Version="1.1.0" />
<PackageReference Include="OliveGameStudio.Messenger" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OliveGameStudio.Messenger --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: OliveGameStudio.Messenger, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OliveGameStudio.Messenger@1.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OliveGameStudio.Messenger&version=1.1.0
#tool nuget:?package=OliveGameStudio.Messenger&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
GameMessenger
Lightweight, strongly typed pub/sub messenger for game loops. GameMessenger lets systems talk without tight coupling and supports both immediate and queued (pumpable) delivery.
Features
- Strongly typed subscribe/publish API with
SubscriptionTokenfor safe unsubscription - Immediate delivery or queued delivery you process later with
PumpQueued - Handlers can unsubscribe themselves while messages are flowing (dispatch uses snapshots)
- Tiny surface area:
IGameMessenger,GameMessenger,Delivery,SubscriptionToken
Getting Started
- Reference the library (package name
OliveGameStudio.Messengerwhen published) or add the project directly:dotnet add package OliveGameStudio.Messenger # or dotnet add reference src/OliveGameStudio.Messenger.csproj - Create a messenger and subscribe:
using OliveGameStudio; var messenger = new GameMessenger(); var spawnedToken = messenger.Subscribe<PlayerSpawned>(msg => { Console.WriteLine($"Spawned {msg.Id} at {msg.Position}"); }); messenger.Publish(new PlayerSpawned("alpha", (0, 0))); // For queued subscriptions, call PumpQueued() each frame to flush the queue.
Delivery Modes
Delivery.Immediate: handlers fire as soon asPublishis called.Delivery.EndOfFrame: handlers are queued; callPumpQueued()(e.g., once per frame) to run them.
Example mixing both:
var messenger = new GameMessenger();
// Immediate handler
messenger.Subscribe<DamageTaken>(d => Console.WriteLine($"HP - {d.Amount}"), Delivery.Immediate);
// Queued handler (batch damage at end of frame)
messenger.Subscribe<DamageTaken>(d => pendingDamage += d.Amount, Delivery.EndOfFrame);
messenger.Publish(new DamageTaken(5));
// Later in the frame loop
messenger.PumpQueued();
Unsubscribing
Keep the SubscriptionToken to remove a handler later:
var token = messenger.Subscribe<InputEvent>(_ => HandleInput(), Delivery.Immediate);
// ... when no longer needed
messenger.Unsubscribe<InputEvent>(token);
Threading
GameMessenger is not thread-safe; interact with it from the same thread (typically your main game loop).
Building Locally
cd src
dotnet build OliveGameStudio.Messenger.csproj
License
Add your license information here.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|