Okto is an event system for Unity that enables flexible communication between scripts, promoting modular design!Have you ever been in a situation where you start adding more and more features to your game, and suddenly gameobjects contain references to multiple (too many) different systems, and making changes is a slow and error-prone process? Okto helps you avoid this by shifting your thinking to an event-driven approach! Start thinking in events: If your player takes damage, don't keep a reference to every system that is interested in the health change (ui, sound system, screen shake system, etc). Instead, publish an event, and have all interested systems register their interest. This way the player health system doesn't have to know about any other systems. It just publishes an event, and anyone who is interested will receive it!In other words: Okto provides an event system for developers. It allows you to send events through a topic and receive them in other scripts which have registered their interest in the same topic. Okto operates without requiring that event senders know about event consumers, and without having to keep references to them. This results in cleaner and more modular code.🗣️ Discord • 🌐 Website • 📖 Online Docs • 📑 ChangelogUsing Okto is straightforward. Developers can quickly create entities by registering them for a given topic. When an event is sent through that topic, Okto will notify all registered consumers of the event. We recommend you keep your events as readonly structs, which are much more lightweight than classes, thus making Okto a lightweight asset.Okto includes a debug window that developers can use to view all the currently registered entities. This is a useful tool for debugging code that uses Okto and ensures that events are being sent and received as expected.Features:📢 Publishers and Subscribers: Broadcast events from publishers to all subscribers. Filter published events from subscribers.🔄 Clients and Providers: Make requests and get responses from providers.📬Producers and Consumers: Enqueue events to be retrieved and processed later.⚡️ Custom Events: Use your own custom events, send all the information you need.🔍 Debug Visualizer: Visualize your game entities to analyse if there are components that are too big.📚 Intuitive Documentation: Read through the documentation and try the demo scenes to understand the power of Okto.🧱 Complete Test Coverage: Trust Okto to handle the connections for you. Focus on making games!Advantages over other systems:🪲 Debugging: The debug window in Okto makes it easy to track all the current publishers and subscribers, and their connections, helping developers to quickly identify and fix issues.🧩 Modularity: Okto promotes a modular design approach, allowing scripts to be developed independently without worrying about how they will interact with each other.🚀 Flexibility: Okto allows events to be sent between scripts regardless of their location in the game hierarchy or scene, making it a flexible solution for projects with complex game structures.Possible use cases:🥇 Achievements: When a player completes a part of an achievement, Okto can be used to notify an achievement manager script without requiring a reference to the script that triggered the event. When the achievement is completed, the manager can unregister the subscriber and no code related to that achievement will be executed again.📈 Game Analytics: Okto can be used to consume data for a game analytics system when certain events occur in the game, such as a player completing a level or collecting an item. This eliminates the need for references to the analytics script in every relevant script.🤖 AI Behavior: Okto can be used to trigger changes in AI behavior, such as having enemies react to a change in the player's health or armor, without requiring a direct reference between the scripts.And much much more!It's important to note that Okto is not meant to replace the traditional development methodology of using references. Instead, Okto complements this methodology by providing an alternative way to handle messaging between scripts when they aren't directly related.Unity Version CompatibilityThe asset is only compatible with Unity versions 2021.3 LTS and up, for C# 9.0 support.