Gameplay mechanics
Introduction
This page lists all gameplay mechanics that can appear in Lasers-Enigma puzzles.
⚠️ Spoiler warning — This page reveals every mechanic a puzzle can contain, including advanced and hidden ones. If you want to discover them on your own through gameplay, stop reading here.
Most mechanic are tied to a specific component and describes a distinct interaction that a player may encounter and learn while solving puzzles.
This list is or will be used internally to:
- classify puzzle difficulty and order puzzles in a progression.
- track player progression
- avoid sending a player to a puzzle that uses too much mechanics he have never encountered before.
Mechanics
| Component | Game mechanic | Learning difficulty (/100) | Complexity weight (/100) |
|---|---|---|---|
| Laser Sender | fixed rotation | 5 | 3 |
| Laser Sender | horizontal rotation | 10 | 5 |
| Laser Sender | vertical rotation | 15 | 8 |
| Laser Sender | horizontal & vertical rotation | 40 | 35 |
| Laser Sender | scheduled action | 45 | 20 |
| Laser Sender | primary color | 5 | 3 |
| Laser Sender | secondary color | 15 | 8 |
| Laser Sender | white | 10 | 5 |
| Laser Sender | conditional | 55 | 30 |
| Laser Receiver | fixed rotation | 5 | 5 |
| Laser Receiver | horizontal rotation | 10 | 8 |
| Laser Receiver | vertical rotation | 20 | 10 |
| Laser Receiver | horizontal & vertical rotation | 40 | 25 |
| Laser Receiver | scheduled action | 45 | 25 |
| Laser Receiver | same incoming color | 5 | 8 |
| Laser Receiver | combine 2 primary colors (→ secondary) | 25 | 20 |
| Laser Receiver | combine 3 primary colors (→ white) | 40 | 30 |
| Laser Receiver | combine 1 primary + 1 secondary (→ white) | 65 | 35 |
| Laser Receiver | let-through (laser passes through) | 35 | 20 |
| Laser Receiver | must remain deactivated | 50 | 30 |
| Burnable Block | same incoming color | 20 | 15 |
| Burnable Block | combine 2 primary colors (→ secondary) | 40 | 25 |
| Burnable Block | combine 3 primary colors (→ white) | 55 | 30 |
| Burnable Block | combine 1 primary + 1 secondary (→ white) | 70 | 35 |
| Burnable Block | scheduled action | 50 | 20 |
| Concentrator | fixed rotation | 15 | 10 |
| Concentrator | horizontal rotation | 20 | 15 |
| Concentrator | vertical rotation | 20 | 15 |
| Concentrator | horizontal & vertical rotation | 50 | 35 |
| Concentrator | no color combination | 15 | 10 |
| Concentrator | scheduled action | 50 | 25 |
| Concentrator | combine 2 primary colors (→ secondary) | 40 | 25 |
| Concentrator | combine 3 primary colors (→ white) | 60 | 30 |
| Concentrator | combine 1 primary + 1 secondary (→ white) | 70 | 35 |
| Concentrator | involved in a laser loop | 90 | 40 |
| Prism | primary color input (passes through unchanged) | 15 | 10 |
| Prism | secondary color input (decomposed into 2 primaries) | 45 | 20 |
| Prism | white input (decomposed into all 6 colors) | 65 | 35 |
| Prism | multiple laser inputs | 60 | 30 |
| Filtering Sphere | scheduled action | 50 | 25 |
| Filtering Sphere | white mirror (identity, all passes through) | 20 | 10 |
| Filtering Sphere | same laser color (color unchanged) | 20 | 10 |
| Filtering Sphere | white laser, primary or secondary mirror (extracts mirror color) | 45 | 25 |
| Filtering Sphere | primary laser, secondary mirror (extracts the common primary) | 65 | 30 |
| Filtering Sphere | secondary laser, primary mirror (extracts primary) | 60 | 30 |
| Filtering Sphere | secondary laser, different secondary mirror (intersection extracted) | 95 | 55 |
| Filtering Sphere | intentionally blocking a laser | 35 | 20 |
| Filtering Sphere | multiple laser inputs | 55 | 30 |
| Filtering Sphere | mirror placement or retrieval | 15 | 10 |
| Reflecting Sphere | scheduled action | 50 | 25 |
| Reflecting Sphere | white mirror (reflects all, color unchanged) | 15 | 10 |
| Reflecting Sphere | same laser color (full reflection) | 15 | 10 |
| Reflecting Sphere | white laser, primary or secondary mirror (reflects mirror color) | 40 | 25 |
| Reflecting Sphere | primary laser, secondary mirror (reflects common primary) | 60 | 30 |
| Reflecting Sphere | secondary laser, primary mirror (reflects primary) | 55 | 30 |
| Reflecting Sphere | secondary laser, different secondary mirror (reflects intersection) | 95 | 55 |
| Reflecting Sphere | intentionally blocking a laser | 30 | 20 |
| Reflecting Sphere | multiple laser inputs | 50 | 30 |
| Reflecting Sphere | mirror placement or retrieval | 15 | 10 |
| Glass and Glass Panes | white (identity, all passes through) | 5 | 3 |
| Glass and Glass Panes | same laser color (passes through) | 5 | 3 |
| Glass and Glass Panes | white laser, primary or secondary glass (extracts glass color) | 25 | 12 |
| Glass and Glass Panes | primary laser, secondary glass (extracts common primary) | 50 | 20 |
| Glass and Glass Panes | secondary laser, primary glass (extracts primary) | 45 | 20 |
| Glass and Glass Panes | secondary laser, different secondary glass (intersection extracted) | 92 | 50 |
| Glass and Glass Panes | intentionally blocking a laser | 15 | 8 |
| Glass and Glass Panes | multiple laser inputs | 40 | 18 |
| Mirror Block | white (full reflection, color unchanged) | 5 | 3 |
| Mirror Block | same laser color (full reflection) | 5 | 3 |
| Mirror Block | white laser, primary or secondary mirror (reflects mirror color) | 25 | 12 |
| Mirror Block | primary laser, secondary mirror (reflects common primary) | 50 | 20 |
| Mirror Block | secondary laser, primary mirror (reflects primary) | 45 | 20 |
| Mirror Block | secondary laser, different secondary mirror (reflects intersection) | 95 | 60 |
| Mirror Block | intentionally blocking a laser | 15 | 8 |
| Mirror Block | multiple laser inputs | 35 | 18 |
| Mirror Block | involved in a laser loop | 80 | 35 |
| Mirror Support | white mirror, face (full reflection, color unchanged) | 5 | 5 |
| Mirror Support | white mirror, face, multiple laser inputs | 15 | 10 |
| Mirror Support | white mirror, face, involved in a laser loop | 70 | 30 |
| Mirror Support | white mirror, edge (color unchanged) | 35 | 15 |
| Mirror Support | black mirror, face (laser both reflected and transmitted) | 55 | 25 |
| Mirror Support | black mirror, face, multiple laser inputs | 60 | 30 |
| Mirror Support | black mirror, face, laser loop source (black facing mirror/concentrator/mirror block) | 85 | 35 |
| Mirror Support | black mirror, edge (color unchanged) | 40 | 18 |
| Mirror Support | colored mirror, face, same primary/secondary laser color (full reflection, nothing passes) | 25 | 15 |
| Mirror Support | colored mirror, face, no color intersection (laser passes, nothing reflected) | 50 | 20 |
| Mirror Support | colored mirror, face, white laser, primary mirror (mirror color reflected, complement passes) | 60 | 75 |
| Mirror Support | colored mirror, face, white laser, secondary mirror (mirror color reflected, complement passes) | 70 | 75 |
| Mirror Support | colored mirror, face, secondary laser, primary mirror (common primary reflected, remainder passes) | 75 | 75 |
| Mirror Support | colored mirror, face, secondary laser, different secondary mirror (intersection reflected, rest passes) | 95 | 85 |
| Mirror Support | colored mirror, face, multiple laser inputs | 75 | 40 |
| Mirror Support | colored mirror, face, involved in a laser loop | 95 | 45 |
| Mirror Support | colored mirror, edge, same laser color (color unchanged) | 30 | 15 |
| Mirror Support | colored mirror, edge, white laser (mirror color passes) | 45 | 20 |
| Mirror Support | colored mirror, edge, primary laser, secondary mirror (common primary passes) | 65 | 30 |
| Mirror Support | colored mirror, edge, secondary laser, primary mirror (primary passes) | 60 | 28 |
| Mirror Support | colored mirror, edge, secondary laser, different secondary mirror (intersection passes) | 95 | 60 |
| Mirror Support | colored mirror, edge, intentionally blocking a laser | 40 | 18 |
| Mirror Support | horizontal rotation | 10 | 8 |
| Mirror Support | vertical rotation | 20 | 12 |
| Mirror Support | horizontal & vertical rotation | 50 | 40 |
| Mirror Support | mirror placement or retrieval | 10 | 8 |
| Mirror Support | scheduled action | 50 | 25 |
| Mirror Chest | get mirrors | 10 | 5 |
| Mirror Chest | get portal gun | 15 | 8 |
| Portal Gun | place portals on walls (vertical) | 20 | 10 |
| Portal Gun | place portals on floor/ceiling (horizontal) | 30 | 15 |
| Portal Gun | player teleportation (wall to wall) | 25 | 15 |
| Portal Gun | player teleportation (wall to floor/ceiling, momentum redirection) | 50 | 30 |
| Portal Gun | infinite loop (floor ↔ ceiling, momentum accumulation) | 65 | 40 |
| Portal Gun | laser teleportation through portals | 55 | 35 |
| Portal Gun | laser loop between facing portals (light storage) | 80 | 45 |
| Portal Gun | multi-player portals (distinct color pairs) | 35 | 20 |
| Portal Surface | portal surface placement (enables portal placement) | 10 | 3 |
| Lock and Key Chest | single key required | 10 | 8 |
| Lock and Key Chest | multiple keys required | 25 | 15 |
| Lock and Key Chest | optional keys | 20 | 10 |
| Elevator | elevator | 10 | 5 |
| Call Button | call button | 15 | 8 |
| Redstone Sensor | redstone sensor | 30 | 15 |
| Gravitational Sphere | repulsion, fixed configuration | 30 | 20 |
| Gravitational Sphere | repulsion, player-modifiable radius | 60 | 45 |
| Gravitational Sphere | attraction, fixed configuration | 45 | 25 |
| Gravitational Sphere | attraction, player-modifiable radius | 75 | 50 |
| Gravitational Sphere | scheduled action | 50 | 25 |
| Bonus | at least one bonus collected during a winning run | 30 | 80 |
Scoring method
These values and formulas are inherently arbitrary and subjective. They are not meant to provide an objective or exhaustive measure of a puzzle's actual complexity — real difficulty depends on many factors that cannot be fully captured by a static formula (puzzle layout, player experience, interactions between mechanics, etc.). This scoring system is a best-effort approximation intended to guide puzzle ordering and player progression, not a ground truth.
The difficulty score of a puzzle is computed from two complementary sources: static scores derived from the mechanics present in the puzzle, and empirical scores derived from actual player data once enough runs have been recorded.
Static score (mechanics-based)
Each mechanic contributes to the overall difficulty score of a puzzle through two independent values:
-
Learning difficulty (/100): the cognitive cost of encountering this mechanic for the first time. It reflects how counter-intuitive the behavior is and how much prior knowledge of the color system is required to understand it. This value is fixed per mechanic and does not change based on the puzzle.
-
Complexity weight (/100): the additional complexity that each extra occurrence of this mechanic adds to a puzzle, beyond the first one. A low weight means repetition is mostly spatial (e.g. a second fixed sender barely adds difficulty). A high weight means each new instance creates a new independent sub-problem to solve (e.g. a second differently-colored mirror requires fresh reasoning).
Static difficulty score = Σ learning_difficulty (first occurrence of each mechanic) + Σ complexity_weight × (number of occurrences − 1)
This formula avoids inflating difficulty through simple repetition while still accounting for the genuine added complexity of multiple interacting instances of the same mechanic.
Empirical score (player data-based)
Once a puzzle has been completed by at least 20 distinct players, two additional empirical parameters are computed from the first winning run of each player:
-
Trimmed mean time: the average time elapsed to complete the first successful run, after discarding the top 20% and bottom 20% of values. Discarding outliers on both ends removes the impact of players who gave up and came back much later (inflating time) as well as players who already knew the solution (deflating time).
-
Trimmed mean actions: the average number of actions performed during the first successful run, after discarding the top 20% and bottom 20% of values. This reflects the typical amount of trial-and-error the puzzle requires, independently of time.
Both trimming operations are applied independently: a player discarded from the time calculation is not necessarily discarded from the action calculation.
Below the 20-player threshold, these empirical parameters are not available and the difficulty score relies solely on the static score.
Combined score (when empirical data is available)
Once empirical data is available, the three components (static score, trimmed mean time, trimmed mean actions) are combined into a single total difficulty score between 0 and 100.
Normalization
The static score and the two empirical parameters do not share the same unit or scale. Before combining them, each must be normalized independently into a 0–100 range using the distribution of all puzzles on the server that have reached the 20-player threshold.
For each parameter, normalization is done using percentile rank: a puzzle ranked at the Nth percentile among all eligible puzzles gets a normalized score of N.
- Static score → percentile rank among all static scores →
S(0–100) - Trimmed mean time → percentile rank among all trimmed mean times →
T(0–100) - Trimmed mean actions → percentile rank among all trimmed mean action counts →
A(0–100)
Percentile-based normalization is preferred over min-max normalization because it is robust to extreme outliers (e.g. an exceptionally long or short puzzle would not compress all other values into a narrow range).
Weighting
The three normalized components are combined with the following weights:
| Component | Weight | Rationale |
|---|---|---|
Static score S | 40% | Captures structural complexity before any player data is available; remains a useful signal even with data. |
Trimmed mean time T | 35% | Strong indicator of actual difficulty; reflects the total cognitive and exploration effort. |
Trimmed mean actions A | 25% | Reflects trial-and-error but is noisier than time (play style varies more across players in terms of actions). |
Total difficulty score = 0.40 × S + 0.35 × T + 0.25 × A
The result is a value between 0 and 100.
Transition between static-only and combined score
When a puzzle crosses the 20-player threshold, switching abruptly from the static score to the combined score could cause sudden rank changes. To smooth this transition, a linear blend is applied between 20 and 30 players:
- At exactly 20 players: combined score weight = 0% (static score only)
- At exactly 30 players: combined score weight = 100% (combined score only)
- Between 20 and 30:
total = static_score × (1 − α) + combined_score × α, whereα = (n − 20) / 10andnis the number of qualifying players
Above 30 players, the combined score is used exclusively.