About this project

rzeka is a single-threaded event bus for C# designed to decouple components by allowing them to emit and react to typed events without holding direct references to one another. Built upon Rx.NET, its primary distinguishing feature is causality tracking, which records the chain of events that led to any specific event. Key features include: - Causality Tracking: Every event carries a record of its causal chain, allowing developers to trace the origin of system behaviors. - Eris Debugger: A browser-based debugger that connects via WebSocket to visualize event flow and messages in real-time while the application is running. - Single-Threaded Design: Ensures consistency in circumstance tracking and state transitions, with defined boundaries for handling asynchronous operations. - Domain-Specific Metaphor: Uses a textile and magic-themed API (e.g., Matter, Spells, Mana, Loom, Weave) to describe event transformations and subscriptions. - State Management: Supports stateful events via the [HasState] attribute, which remembers the last value and replays it to new subscribers. The library targets .NET 8.0 and is particularly suited for game development, having been used in Unity and currently being ported to Godot.