Game Developer Quick-Start
If you are a game developer and would like an easy way to integrate SignalRGB effects for your users, welcome to the quick-start guide. Our developers specialize in making effects work with UI that is usually not designed for our purposes. Users like features like color gradients, transparent UI, customizable skill UI, HUD elements that bounce or shake - all inconsistencies that we have to account for in effect triggering. The more difficult the UI, the less we can do for the game and the user experience. With some teamwork between you and our devs these issues can be removed and game integrations can be pushed to the next level.
Triggering Basics
SignalRGB’s API offers unique and powerful tools for developers to analyze visual information. In simple terms, we can capture precise RGB color data from any pixel or group of pixels and use changes in stable values to trigger effects. For example, a health bar decreasing, a menu opening, or a skill icon desaturating - any consistent UI element can be used to trigger an effect on the user’s peripherals.
This method is considered indirect communication and comes with several challenges our developers account for in every integration. The following sections explore ideas for direct communication, which are currently theoretical (game developers, reach out to us).
Idea 1 - Binary Communication
Our simplest trigger checks a specific color range and returns “yes” if it matches, or “no” if it doesn’t. In data terms, this is called a bit, and a group of eight bits forms a byte, which can represent up to 256 possible states.
In practice, you provide the coordinates of fixed pixels on the screen (visible at all resolutions). These pixels can be clustered together or spread out, and they can be any color-as long as each pixel’s location never changes in-game and its activation color remains consistent. When a pixel’s color matches the activation color, it registers as “1” in the array. If it’s any other color, it registers as “0.” Each frame, the integration calculates the resulting integer from this binary sequence and maintains the corresponding state you’ve defined.
Here’s a simplified example using just three pixels, which produces six unique states. The UI element in this example is the corner of a minimap from a popular game.

And my three pixels:

I've chosen the original colors as the passing color, so this arrangement of bits is equal to 111, or "6". None passing, or 000, would be "0".

The first thing we need to establish is an in-game "idle" state, which simply maintains everything else going on while we wait for more input. This will be state "0" and could be represented by the following pixel values:

I set each to rgb(0, 0, 0), which does not pass. However, large differences like this could be noticeable to the user. In the next example, we'll be more subtle.
So, let's say we've established we're in-game and maintaining a base state. Your character has cast their first ability, and we want to register this change as an effect. The effect for "Ability 1 cast" has been designated as state "1" and will activate when we communicate state "1" to our integration. To do so, I slightly edit the base colors for pixels 1 and 2 (from the left) to create the 001.

It might not look like much, but pixel 1 has had its lightness decreased by about 30%, and pixel 2 has gained 50% saturation. Since our system can easily detect these changes, the state will reliably switch to "1" and the ability effect will be triggered. Abilities with set durations can end themselves, but let's also say this one activates with one button press and ends with another. To maintain an indefinite effect, state "1" would activate it, and state "2" could end it based on further user input. Some effects are very analog and would still have to be handled individually by our developers, but for the rest, this system stands to be reliable. The main limitation is the visibility of the "pixels," which will have to be constant during the gameplay state and should probably be larger than whatever the resolution of state "1" pixel is.