Color Space is a 3D puzzle game utilizing the additive color model RGB. Set in a world being drained of color by a Blackhole, the player must solve environmental puzzles by shifting their character’s color using RGB sliders. As they navigate the world, they must collect Prism Shards and Photons to restore color to the world and defeat the Blackhole.
Experts, both artists and scientists, have developed different models to better understand color. Color Space is built on the RGB model, which is the same system that powers most digital screens and reflects how light actually behaves. Unlike subtractive models, like those used in paint mixing, RGB is additive: Red, Green, and Blue light are combined to create new colors. These light waves are made of photons, and each photon’s frequency determines its color. For example, when Red and Green light overlap, they do not produce Yellow photons, instead the brain interprets the blend as Yellow. Color Space transforms this phenomenon into a core gameplay mechanic, asking players to think like light in order to solve puzzles.
Before jumping into digital development, Color Space started with paper prototypes. These quick, low-fidelity models made it easy to experiment with puzzle layouts, mechanics, and color-based interactions. By simulating how players might move through an environment or how obstacles would react to different color states, these tangible mockups helped identify what felt intuitive and what needed rethinking. Early prototypes explored ideas like hidden pathways revealed through color shifts and laser puzzles that mixed light to unlock doors. These handcrafted tests played a foundational role in shaping the game’s mechanics and visual logic long before any code was written.
Once the core ideas were refined on paper, those mechanics were brought into Unreal Engine using Blueprint visual scripting. Every puzzle in Color Space is built around matching or manipulating light and color: walls you can only pass through if you’re the same color, doors that open via colored plates, and puzzles where lasers and mirrors combine RGB light to create new hues. The player gains more control over colors as they collect Prism Shards, unlocking the ability to adjust Red, Green, and Blue sliders. Each mechanic reinforces the central idea: color is not just visual, it is functional.
Behind the scenes, each mechanic in Color Space is powered by custom Blueprint logic. The Passable Walls rely on a function called Check Color Match (above), which compares the player’s current RGB value to the wall’s required color. If the values match, the wall becomes non-collidable, allowing the player to phase through. If not, it remains solid and blocks movement. In this case, the “Object to Check” is the player’s character, while the “Required Color” is tied to the material color of the wall. When the player collides with the wall, the function is triggered. It calculates the distance between the two color vectors. If the result is zero, they are considered a match and the function returns True. This boolean output is used independently within each puzzle actor’s Blueprint, allowing consistent yet modular behavior throughout the game. The logic for the Passable Wall is below.
The Laser and Mirror system in Color Space simulates additive light behavior through a modular Blueprint chain. Each Emitter casts a laser beam forward using a custom line trace function that determines the beam’s endpoint—either the maximum range or the first object it hits. When the beam collides with a Mirror, the system checks if the object implements the laser logic interface. If it does, the Mirror receives the beam’s color, adds it to its own using vector math, and clamps the resulting RGB values between 0 and 1. This new color is then passed forward as a fresh laser beam. Mirrors can spawn new beams, redirecting and mixing light to hit Plates, which only activate when the laser color matches their required value. The system supports multiple reflections, beam chaining, and real-time updates, all while using shared logic for consistent behavior across puzzle elements.
The Spawn Laser function (above left) spawns the actual Laser Actor and attaches it to the core of the Emitter or the Mirror (the ColorMesh). The Beam Line trace function start with a setup section (above right). It sets the logic for a laser beam to fire forward from its origin point, specifically from the center of the Emitter’s or Mirror’s ColorMesh. It uses the actor’s forward vector and a Max Distance float to calculate where the beam should end. This setup ensures the laser continuously fires outward in a straight line until it hits something or reaches the maximum distance.
When the laser hits an object, a Line Trace (above) checks what the beam hits. The Blueprint checks whether the Hit Actor is a Mirror. If it is a Mirror, the Blueprint then checks if the Hit Mirror is the same one or a new Mirror. If it is the same one, then it uses the Pass the Color function (below) to update the Hit Mirror’s Laser. If it is not a Mirror or not the same Mirror, the Blueprint checks if the Hit Mirror variable is empty. If the Hit Mirror variable is not empty, it destroys the Hit Mirror’s Laser and clears the Hit Mirror variable. Next, it checks if the Hit Actor is a Plate. If the Laser hits a Plate, the color is sent to that Plate for activation checks.
The Pass the Color and End This Laser Too (Above) control the spawning of new laser beams. When a beam is passed to a Mirror, the system checks if the color already exists in the Input list. It calls the Compute New Sum Color macro (below right), updates the beam color, and spawns a new laser actor with the correct color and direction. It also plays a sound cue at the location.
The Clamp Vector macro (above left) ensures RGB values stay within the 0–1 range, which is necessary because additive color mixing can easily exceed valid color limits. It takes in a vector (R, G, B), splits it into its components and then clamps each one between 0.0 and 1.0, then reconstructs it into a vector. This keeps the game’s visuals and logic predictable, especially when multiple light sources are combining colors. To simulate light blending, the Compute Color macro (above right) adds together all color vectors received by a Mirror. It loops through an array of incoming colors,accumulates them into the Temp Sum Color variable, then clamps the result using the Clamp Vector macro before outputting the final color. This allows lasers to dynamically combine colors as they bounce through mirrors and hit new targets.