Puzzles & Traps
Arx has no puzzle system. It has a script vocabulary rich enough that puzzles are content, and a level team that used it constantly.
The inventory of mechanisms
Counted by script folder in the unpacked retail data:
| Mechanism | Instances |
|---|---|
| Levers | 118 |
| Teleport markers | 83 |
| Buttons (incl. secret buttons) | 56 |
| "Secret" somethings (walls, doors, buttons) | 44 |
| Plates & elevator platforms | 36 |
Named puzzle_* objects |
30 |
| Traps | 22 |
| Statues (incl. guardian, snake woman) | 13 |
| Wheels (puzzle and gambling) | 10 |
| Puzzle pillars | 7 |
| Portcullises | 6 |
| Bridges | 6 |
| Altars | 3 |
The primitives
Every puzzle in the game is assembled from roughly six script verbs:
ON COMBINE— use item X on object Y, matched byISCLASSON CONTROLLEDZONE_ENTER/_LEAVE— an object or the player physically occupying a defined zoneSENDEVENT CUSTOM <named entity> "<message>"— one object telling another what happened^POSSESS_<item>— is the player currently carrying it?REPLACEME "<other entity>"— swap this object for its solved variantSETPLATFORM,PLAYANIM, timers — moving geometry the player can stand on
That is the whole toolkit. There is no puzzle scripting language, no state machine editor, no dependency graph — just entities messaging entities.
Worked example: the pillar and the stone
ON CONTROLLEDZONE_ENTER {
IF (^$PARAM1 ISCLASS "puzzle_stone03") {
IF (^POSSESS_puzzle_stone03_0001 == 1) ACCEPT // holding it doesn't count
SENDEVENT CUSTOM PORTICULLIS_0007 "OK1"
Read what that POSSESS check is doing: the puzzle explicitly refuses to accept a stone you are still holding. You have to physically drop it in the right place. The puzzle is not "have the item," it is "put the item there" — the physics layer is the puzzle logic. Leaving the zone sends "NO1" and closes the portcullis again, so the state is live rather than latched.
Worked example: the Akbaa puzzle
ON COMBINE {
IF (^$PARAM1 ISCLASS ROCK_AKBAA) {
DESTROY ^$PARAM1
SENDEVENT CUSTOM light_door_0038 "OPEN"
REPLACEME "\akbaa_puzzle_done\akbaa_puzzle_done"
The opposite pattern: one-way, consumed, and made idempotent by replacing the entity with a "done" variant rather than tracking a flag. Cheap, robust, and impossible to re-trigger.
Traps
Traps are objects with scripts, not a trap subsystem. A lever, for instance, carries trapped, trap_lockpickability, and SETTRAP -1 (its detection difficulty, surfaced by the Detect Trap spell).
This closes an open question from the earlier analysis
Disarm Trap is resolved by caster level, not by Mecanism. The lever's ON SPELLCAST handler multiplies the spell's caster-level parameter by 10 and compares it to the trap's rating:
SET #TMP ~^#PARAM2~
MUL #TMP 10
IF (#TMP < trap_lockpickability) → fizzle, "not skilled enough"
So a caster level of 10 clears any trap rated ≤ 100 — every trap in the game. Mecanism governs locks; magic governs traps. The two "mechanical" problems in Arx are gated by two entirely different stats, and nothing in the interface says so.
Lockpicking shares one include file across every locked object, and aborts if the player walks more than 400 units away mid-attempt. Full formula in Stat Formulas.
Design reading
These are physical-state puzzles, not logic puzzles. The answer is nearly always "put the right object in the right place" or "use the right object on the thing." That inherits legibility from the simulation — the player already knows objects can be picked up, dropped, thrown and combined, so no puzzle needs to teach its own grammar. It also means the solution space is searchable by fiddling, which suits a game with no hint system.
The cost is fragility. Puzzle state lives in per-instance script variables in a world that persists everything (World & Level Structure), so a required object that is lost, destroyed or dropped down a shaft can dead-end a chain with no recovery path. And because matching is by ISCLASS rather than by instance, duplicates of a keystone object trivialise some puzzles outright.
Traps are the weakest link. A trap that a mid-level mage disarms unconditionally and a non-mage cannot disarm at all is not a decision — it is a build check wearing a puzzle costume. Compare the lock system, where Mecanism gives a graded chance and failure costs consumables rather than the attempt.
Touchpoints
- → Simulation & Interaction: puzzles are the script vocabulary applied to level design
- → Magic & Runes: Disarm Trap, Detect Trap, Telekinesis and Levitate are all puzzle-solving verbs
- → Character Build: Mecanism gates locks, caster level gates traps
- → World & Level Structure: gating is physical and informational, and persistent state makes it breakable
What breaks if you remove it
The exploration loop loses its punctuation. Without object-placement puzzles the physics layer becomes decoration, and the levels reduce to combat rooms joined by locked doors.