← Projects

A guide to open-ended engineering puzzles

How to design a Zachlike

A Zachlike asks you to build an executable artifact, prove it against an exact behavioural specification, then find out how much better you can make it.

Version 1.1.0 ·

The loop is simple to describe: you build something, run it, inspect what happened, and revise it. The hard part is choosing rules that keep making this loop interesting.

The goal is a small set of understandable rules whose interactions produce a large space of solutions. A precise test then separates correctness from quality. Passing ends the required puzzle. Speed, size, cost, robustness, elegance, and other qualities create voluntary second puzzles after it.

I find it useful to hold the whole guide as one dependency:

Core · Domain → Mechanics → Systems → Puzzles
Product · Presentation · Teaching · Optimization · Story
Practice · Prototype → Evidence → Revision ↺

Domain supplies the process, verbs, and natural constraints. Mechanics define the operations you can use. Systems are what those rules do together. Puzzles select and pressure the resulting possibility space.

Read the first four chapters in order because each gives the next its raw material. The arrows show where design decisions come from, not a one-way production schedule. Once you start prototyping, the chain becomes a loop. Evidence from one puzzle can force you back into the system, the mechanic set, or even the domain.

Around the core

Four more concerns turn a sound puzzle system into a complete game:

These concerns do not wait politely until the core is finished. They surround it, reveal it, and change it. Bring them into the prototype early enough to see those changes. The final chapter closes the loop by turning the whole structure into a prototyping and playtesting practice.

What remains outside the scope

This guide stays on the player-facing side of the game. It does not prescribe engine architecture, art direction, audio production, platform strategy, budgets, publishing, or marketing. It asks what the system must make possible, not how you should implement it.

The design-element catalog is vocabulary, not a specification. Do not mistake its size for a shopping list. A coherent game is defined as much by what it leaves out as by what it includes.

1 · Domain

The domain is the process the game simulates: the slice of reality, engineering, or invented physics that the player learns to manipulate. It isn't the setting, and it isn't the art style.

I find one question useful here: what kind of work should the player feel they are doing? A good domain creates that work fantasy. It gives you verbs, pressures, representations, and natural briefs, and it helps you reject mechanics that don't fit. Realism still can't make every decision for you.

Start from a process

Start with something a person could actually do, not a broad subject. “Electronics” is too broad. Designing a cheap consumer device, as in SHENZHEN I/O, immediately gives you more to work with: a product, components, signals, a board, a budget, and operating requirements.

A promising process has four properties:

Four shipped Zachlikes show the pattern:

Game and process Verbs Pressure derived from the process
SpaceChem · molecular production route, grab, bond, unbond, synchronize two waldos share a small reactor and must coordinate the molecules they hold
Infinifactory · assembly-line engineering route, push, rotate, weld, destroy products must align in three-dimensional space while moving
SHENZHEN I/O · product electronics wire, program, sense, signal components, pins, power, and code are scarce
EXAPUNKS · network intrusion move, copy, read, write, message programs travel through a constrained host topology

Notice how aggressively these games simplify their domains. Each one keeps the part that protects the work fantasy and the decisions it needs. Before you depend on a metaphor, observe or research the real process behind it.

Test its yield and cost

Before you commit, walk the domain through six questions:

Question Evidence to seek
What is the process? You can name it briefly and list its objects and transformations
What does the player make? The artifact has inputs, outputs, operating conditions, and a reason to exist
What does it generate? Several mechanics and constraints arise without arbitrary exceptions
What can the player see? Important state, paths, and limits have concrete representations
What intuition transfers? The metaphor helps the player predict a rule before running it
What must be taught? Every required fact can be supplied clearly inside the game

Specialist vocabulary has a real onboarding cost. Invented physics avoids assumed expertise, but it doesn't avoid explanation. It still needs consistent rules and representations the player can read.

So where should realism give way? Wherever accuracy would hide state, add labour, or create an exception the player can't predict. Keep the fiction coherent enough that every simplification feels deliberate.

The domain is ready when you can name the process and its artifacts, derive several verbs and pressures from it, teach everything the player needs, and use the metaphor to reject rules that don't belong.

Next: §2 turns those verbs into a small rule set.

2 · Mechanics

A mechanic is a rule, not a themed object. A conveyor, wire, pipe, and queue may look completely different, but if they create the same decisions, they may be the same mechanic.

So when do you count a second mechanic? When its rule changes what players decide or predict, how they fail, or what they can optimize.

Start with as few rules as the system needs. A new exception isn't depth. If the documentation grows faster than the possibility space, take that as a warning.

Build a construction language

You are designing a language for making systems, not a bag of themed parts. Before you expand the palette, define three things:

Layer Question Examples
State What exists, persists, and can change? SpaceChem's atoms and bonds; Infinifactory's blocks and orientation; SHENZHEN I/O's signals and registers
Operations Which small actions transform that state? Opus Magnum's grab, rotate, bond, and transmute; EXAPUNKS' move, copy, read, and write
Coordination How do operations interact across time and space? TIS-100's lockstep nodes, SpaceChem's waldo paths, EXAPUNKS' host topology

A finished solution usually has an architecture, which says where work happens, and a schedule, which says when it happens. Geometry may embody either one, but the rules have to make both predictable.

Now step back and ask what mental model this language makes the player learn. A conventional programming or construction model with new nouns may still be useful, but it gives up one of the form's strongest pleasures: discovering a genuinely different way to organize work. Originality isn't an excuse for obscurity. Whatever language you invent still has to survive the tests below.

Test every mechanic

The test I keep coming back to is not “does this mechanic sound interesting?” It is “does this mechanic deepen the whole system?”

Criterion Question
Domain fit Does it feel like a consequence of the simulated process?
Interaction density Which other rules does it change in a strategically meaningful way?
Tension What must the player give up to use it?
Local predictability Can an experienced player predict its next effect?
Expressiveness Does it enable new architectures rather than more arrangements?

Cut a mechanic when one use dominates, when it touches only one narrow subsystem, or when it duplicates another rule without changing any decisions.

Cut it too when explaining the rule takes more work than exploring it, or when it needs an incoherent exception to the core system.

Choose a central pressure

What is the player short of? One or two scarce things can organize an otherwise loose collection of rules.

Pressure The scarce thing Solving means
Space room, layers, instruction memory compressing
Time phases, collision windows, latency scheduling
Language instructions, registers, states expressing more with less
Flow capacity, ports, bandwidth routing and balancing
Certainty known cases, reliable components building for robustness
Stability rules that may alter other rules reasoning about semantics

If the honest answer is “nothing in particular,” pause. Construction may have become work without a decision.

Keep four related terms distinct:

Term Scope Function
Pressure the whole construction system A recurring scarcity that organizes decisions across puzzles
Constraint a rule or one puzzle A hard boundary on what the player may build or what counts as valid
Bottleneck one puzzle The facet of the central pressure that dominates that specification
Metric valid solutions A measure that compares quality after correctness

Take a cramped board. The board is a constraint, packing may be the bottleneck, space can be the game's pressure, and footprint can be one metric. The words describe different jobs even when they all point at the same scarce thing.

The design-element catalog is a list of rules and related design ideas. Open it after you've chosen the domain and central pressure. Look for elements that reinforce each other. You are not trying to include everything.

The mechanic set is coherent when it fits on one hand, survives the five questions, and creates a pressure you can name in a single sentence.

Next: §3 asks what those rules do together.

3 · Systems

A system is what happens when mechanics meet. TIS-100 makes this concrete. Its nodes execute tiny programs in parallel, talk only to their four neighbours, and block until a matching read and write meet. None of those rules says “routing protocol,” “pipeline,” “starvation,” or “deadlock.” Put them together, and all four appear.

You write the local rules. The system is what they do together. That is where useful complexity comes from: many small, unambiguous rules interacting, not one complicated part nobody can predict. The machine also has to be repeatable. Give it the same input, rules, starting state, and seed, and you should see the same visible sequence again.

Freeze the system contract

Start with the rules every later mechanic will depend on. The system must answer each of these questions the same way, every time:

Together, these rules form the system contract. Determinism rests on it. The same machine, input, rules, and seed must produce the same visible sequence. Seeded variation still meets that standard if replaying a seed reproduces every failure exactly. A mature machine may loop forever or stop at a quota, but running it again can't quietly change what its rules mean.

Revise unfinished rules as freely as you need. Once players have saved solutions against a released rule, change it only deliberately, visibly, and with compatibility in mind.

Design interactions, not inventories

Take every pair of core mechanics and ask whether one changes the value, cost, timing, or failure modes of the other. Being connected isn't enough. An arm can load a belt, but if the belt treats every item alike, arm × belt has created no new decision.

Put the mechanics on both axes of a matrix, with one cell for every unordered pair. For n mechanics, that gives you n(n−1)/2 cells. Four mechanics produce six; seven produce twenty-one. Answer three questions in every cell:

Pair New decision Visible consequence Dependency
A × B What becomes possible, costly, or preferable only together? How can the player predict and inspect it? Does either rule earn its place only through this pair?
TIS-100 port rendezvous × fixed topology A short route may block a node needed by another stream The active port and waiting instruction expose the stall No. Each also interacts with program length and local memory

Do this. Fill the matrix, then read it in two directions. A weak row means one mechanic changes little no matter what you pair it with, which makes it a cut candidate. A dominant cell means one pair carries most of the system's interest. Test that pair in several puzzles to find out whether it creates more than one recipe.

Specify observable state

Now decide which facts any presentation must expose. Objects, values, and control need traceable paths. Transformations need inspectable inputs, conditions, and outputs. The player has to see both the architecture and the schedule, even when distance or layout is doing the work of time.

What is the earliest meaningful divergence the simulator can report? Define that too. A collision, wrong value, missed deadline, overflow, or illegal state should preserve the failing moment and the causal state around it. §5 turns this requirement into debugging tools.

Turn important limits into visible properties:

Constraint Representation
capacity slots or lanes
reach geometry
time a tick, phase, or trace
collision occupied space
cost an explicit counter tied to the action that spends it

Local rules can create global complexity and still remain locally predictable. Seven mechanisms do most of that work:

Mechanism Local rule Global consequence
Shared capacity a SHENZHEN I/O microcontroller serves several signals servicing one input delays another
Synchronization SpaceChem's two waldos act on the same cycle paths must agree about timing and collision
Feedback a TIS-100 value returns to an earlier node local state becomes a repeating control loop
Alternate routes a TIS-100 value can cross different nodes congestion moves to another part of the grid
Irreversibility an Opus Magnum glyph changes an atom operation order becomes a commitment
Limited state a TIS-100 node has ACC and BAK history must be distributed or encoded in timing
Topology EXAPUNKS behaviour follows host links changing routes changes coordination without new instructions

You can see backpressure directly in TIS-100. A node writing to a port waits until its neighbour reads, which can leave every earlier node waiting behind it. Close those waits into a cycle and you have a deadlock. If your system permits either one, show the player where the chain or cycle begins.

Step back and notice what isn't on this list: hidden state, inconsistent exceptions, visual ambiguity, and sheer scale. Those usually add confusion rather than useful depth.

The system is coherent when its core rules are explicit, several interactions create real decisions, and an experienced player can predict a tie, a collision, and a full container.

Next: §4 selects those interactions with puzzle specifications.

4 · Puzzles

A puzzle combines three things: a specification, a board, and a palette. Together they tell the player what must happen, where they may build, and which parts they can use.

Author the specification first

Before you explore layouts, decide which observable behaviour passes. The engine checks the player's output against this puzzle specification. It does not compare their machine with your reference build.

Write the specification in one sentence:

Given [inputs and conditions], produce [outputs and behaviour], while never [invalid state].

Then make every boundary explicit: the legal input range, required outputs, quota or duration, available workspace and tools, hard limits, failure conditions, and exact pass condition. The specification must not prescribe construction steps or depend on rules outside the published system contract.

Build a small test set:

Unseen cases may vary values, but they can't introduce new semantics. When a run fails, show the smallest useful counterexample.

The verifier does more than check the answer. It shapes the work. A repeated quota rewards throughput; an input-output stream rewards generalization; a test suite rewards branching and state; a final-state target rewards construction and emergence.

Keep internal reference builds to prove solvability and expose accidental restrictions. These builds are evidence about the specification, never the definition of the answer. Writing the specification first doesn't remove your responsibility to verify that somebody can actually solve it.

Choose the floor and the ceiling

I find it useful to give every puzzle two difficulty targets:

Let the obvious, clumsy solution pass. Don't require an optimized score to continue unless satisfying that bound is the puzzle itself. This is the trick: lower the floor without flattening the ceiling.

Pressure one facet

Before you build the puzzle, name its bottleneck: routing, synchronization, storage, geometry, state, collision, transformation order, or topology. This bottleneck selects one facet of the central pressure from §2. If the game's scarce thing is flow, for example, routing and storage should matter before geometry. The board and palette then decide how directly the player has to confront it.

Board Effect Where difficulty lives
Cramped Few layouts fit decomposition and packing
Open Honest solutions fit optimization and self-imposed goals
Graph Nodes constrain connection communication topology and protocol

Use the palette as a balance lever. Make it too loose and the bottleneck disappears. Make it too tight and you funnel the player toward one architecture.

Separate reasoning from labour. Raise a quota only until startup, steady state, or a timing interaction becomes visible. If the insight arrives quickly but the player then spends ten minutes placing, retiming, or waiting, shrink or reframe the puzzle.

Do this. Change the bottleneck before changing the numbers. Difficulty should come from a new decision, not a larger quota or smaller board by default.

Distinguish novelty from openness

Two kinds of variety are easy to blur together. Puzzle distinctiveness compares puzzles across a campaign: can the player reuse the same process with trivial edits? Solution diversity compares answers to one puzzle: can valid builds differ in decomposition, topology, scheduling, use of state, or metric priority?

These are separate tests. A campaign can contain wildly different puzzles that each funnel toward one answer. It can also contain an intentionally familiar puzzle that revisits a known process but remains rich to optimize. Label reinforcement honestly. Don't present repetition as a new idea.

For every open puzzle, construct two plausible same-palette references from different solution families. Two references prove possibility, not prevalence, but they quickly expose a specification that permits only one recipe by accident. Scores can't prove diversity on their own. Unrelated machines may share a score, while one architecture may span many scores.

Use antagonistic metrics

A metric earns its place when it changes which architectures look attractive. Two or three measures are usually enough. Speed, space, resources, program size, power, and robustness only become interesting together when improving one can make another worse.

The solutions where no measure can improve without another getting worse form a Pareto frontier. You want that frontier to contain several specialists that look structurally different. If one solution wins every metric, change the cost model, palette, or specification. Show the measures separately because a weighted total hides the trade-off.

A hard limit defines validity. A metric compares valid solutions. Leave some valued qualities unscored: symmetry, readability, choreography, and audacity. The graphs should not exhaust taste.

A puzzle is structurally sound when its specification is explicit, its tests are fair, its bottleneck is named, a crude build proves the floor, and an open puzzle admits a plausible contrasting solution family with room above it.

Next: §5 makes the system editable, inspectable, and debuggable.

5 · Presentation and debugging

You can build a deep system and still make a bad puzzle game if the player can't see what it is doing. Presentation includes visual design, sound, animation, interface, editing, feedback, documentation, and terminology. It cannot create mechanical depth, but it determines whether the player can perceive, predict, and work with the depth that already exists.

A decorative skin is presentation. A visible port, capacity slot, timing trace, or collision boundary goes further. It becomes part of play because it changes what the player can reason about.

Don't postpone this as polish. An illegible prototype can't tell you whether a playtest exposed a system problem or merely hid a sound rule.

Make causality visible

Pause the machine, then run it. In both states, the game should answer six questions:

Question Required evidence
What does this part do? Shape, ports, labels, and animation share a stable visual grammar
Where can things go? Direction, connection, crossing, reach, and capacity are visible before execution
What is happening now? Active, waiting, blocked, full, empty, and faulted appear on or beside the part
What caused this state? Material, data, and control can be traced from source to consequence
Why did the run fail? The earliest divergence is preserved and expected state is aligned with actual state
What made this score? Expensive operations, idle capacity, long paths, and waste are tied to the metric they change

Preserve object identity while things move and transform. If an item disappears into a process and an apparently unrelated result pops out elsewhere, the player can't connect architecture to behaviour.

Look at TIS-100. It prints values on ports and highlights the instruction each node is executing, so you can trace a blocked transfer across the grid. Opus Magnum puts an arm's program, swept space, held atom, and collision in the same view. Both games remain difficult without making their current state a secret.

Use colour, sound, and motion redundantly. Required information has to survive grayscale, silence, pausing, and reduced motion. At overview scale, preserve identity, direction, state, and faults. Reveal the detail as the player zooms in.

Make revision cheap

Open-ended construction is repeated refactoring. The player has an idea, changes the machine, runs it, and looks for the consequence. Keep the time between those steps short.

Let partial and incorrect machines run whenever they can produce meaningful behaviour. Missing output is an unmet specification, not a reason to disable the simulator. Broken machines are often where the player learns the most.

Treat the simulator as the main interface

Treat the simulator as the centre of the interface. Keep run, pause, reset, single-step, and useful speeds reachable at all times. One step must advance one defined unit of simulated time. Show the current cycle, case, and phase.

When an instruction or controller acts, highlight both it and the object it affects. Waiting and blocking are states, not generic errors. Show what the part needs, what holds the resource, and whether the machine is merely slow or actually deadlocked.

Stop automatically at the first meaningful failure and preserve that state. Then show a readable trace around it. A cascade of later faults must not bury the first place where the player's mental model diverged from the simulator.

Failure can be pleasurable to watch. It still has to remain fast, local, informative, and costless to retry.

Be a trustworthy development environment

Use one term for every part, state, port, and operation across the editor, specification, manual, tutorial, and error messages. Pair unfamiliar icons with words until the player has had a fair chance to learn them.

The same machine, input, rules, and seed must replay identically. Ordering, limits, tests, and scoring can't contain hidden preferences or unexplained exceptions. A strict simulator feels fair when it exposes three things: the rule, the relevant state, and the exact reason the run stopped.

Presentation works when a new observer can inspect a paused machine and describe its broad strategy, a failed run points to the first real fault, and testing a changed idea costs less than rebuilding it.

Next: §6 arranges these rules and tools into a curriculum.

6 · Teaching and campaign

What is the player actually learning? Not a collection of puzzles. They are learning one system, and the puzzles are the vehicle. Progress means fluency: predicting behaviour before running, recognizing reusable structures, diagnosing failures, and choosing an architecture on purpose.

That makes every campaign a curriculum, whether you designed it as one or not.

Teach purpose before syntax

Teach the job before you teach the gestures: given these inputs, produce these outputs. A perfect placement walkthrough can still leave the player unable to explain what the machine is for.

Start in the real editor, with the real rules. Pre-place enough context that the minimum correct solution needs one meaningful action, then remove the scaffolding. If that first solution requires five unfamiliar actions at once, simplify the solution. Don't answer complexity with another paragraph of explanation.

SpaceChem exposed this failure mode. Its first complete loop required the player to understand input, grab, path arrows, drop, and output all at once. Later Zachlikes lowered the floor by asking for a first useful artifact with fewer simultaneous concepts.

For each mechanic:

  1. show its purpose;
  2. demonstrate the smallest useful action;
  3. let the player reproduce it;
  4. ask for a simple independent use;
  5. reinforce it in a changed context; and
  6. combine it with earlier mechanics later.

Use counterexamples to correct the false rules players are likely to invent. If you can choose between a clearer representation, a simpler rule, and another paragraph of instructions, choose one of the first two.

Alternate novelty and reinforcement

Give every puzzle a job in the curriculum:

Role Work it does
Introduce One new idea is the only unknown
Reinforce A known process becomes fluent and leaves room to optimize
Vary Familiar rules appear under a different board, input, or pressure
Combine Two established ideas interact for the first time
Capstone The player chooses and coordinates several ideas independently

Constant novelty turns the campaign into a series of exams. Constant repetition turns it into labour. Alternate the two deliberately, and don't pretend a reinforcement puzzle is a new idea.

Kaizen: A Factory Story deliberately used easier reinforcement puzzles. Players could apply a process they had just learned, then explore its optimization surface. That is not the same thing as padding a campaign with a larger quota.

Teach collision order, simultaneous action, blocking, overflow, capacity, and test timing before any of them can cause an expensive failure. Let players discover strategies. Don't make them discover undocumented semantics.

Curate the order after playtesting

Author more specifications than you need, then watch people play them. Remove accidental logical duplicates, fill genuine conceptual gaps, and reorder what remains. Difficulty order is an evidence problem, not an intuition problem.

When a puzzle becomes a wall, ask why before you tune it. Did it introduce several burdens at once? Did it depend on an edge case you never demonstrated? Or did the player understand the idea and then face too much construction?

For a broad campaign, open small batches and require only some puzzles to advance. Put the hardest material after the narrative ending or mark it clearly optional. One mandatory puzzle should not end both play and story for an otherwise capable player.

Use documentation as reference and fiction

Manuals, datasheets, zines, diagrams, and reference cards can make looking up a rule part of the work fantasy. Keep them searchable or well indexed. Use the same terminology as the interface, make them available without losing work, and state edge cases explicitly.

Documentation can support a good first-use path, but it can't repair an unreadable mechanic. §8 shows how the same artifact can also carry voice and world-building.

Teaching works when the player understands the job before following syntax, each new burden arrives in isolation, established ideas receive time for reinforcement, punishing semantics were demonstrated harmlessly first, and a stuck player has another route forward.

Next: §7 gives a solved puzzle its second life.

7 · Optimization and sharing

The first valid machine isn't the end. It is where a second game begins. Correctness and quality are separate, and §4 defined the conflicting measures that reshape the solution space after correctness.

Optimization should feel voluntary. You don't need to withhold progress, currency, or story to make improvement meaningful. The machine, the cost model, and visible evidence of better approaches can supply the challenge on their own.

Reveal the distribution after success

Show per-puzzle histograms only after the first correct solution. The order matters. First the player owns an answer. Then the distribution asks a new question: how else could this machine work?

A global leaderboard makes nearly everyone a distant loser and rewards cheating at the extreme. A histogram makes the middle legible. It shows how far away an improvement might be, exposes clusters that may represent different solution families, and lets an ordinary player choose a reachable target.

SpaceChem established the pattern with separate histograms for cycles, symbols, and reactors. The graphs include first-pass and optimized solutions together, so beating the middle remains a plausible personal challenge rather than a bid for a world record.

Show each antagonistic metric separately, with the current result and personal best marked. Don't collapse the measures into one total, and don't reveal another player's architecture without an explicit spoiler action.

Make cost causal

Connect every score to behaviour the player can inspect. Which operation spends power? What adds latency? Where does the footprint grow? Which component creates waste, and where does capacity sit idle? The machine should answer these questions.

An opaque total supports trial and error. A causal cost model supports engineering. That difference is the whole point.

Leave some qualities unscored. Symmetry, readability, robustness beyond the tests, elegant motion, and audacious excess give communities room to develop tastes the official graphs do not define.

Protect experiments

Never make improvement require overwriting the machine that worked. Support named solutions, duplication and branching, a known-good baseline, metric-specific variants, thumbnails, and recorded scores. Experiments become easier when failure can't destroy the proof you already have.

Comparison should make specialists visible. When the fastest, cheapest, smallest, and most legible solutions are different artifacts, the player has several meaningful reasons to come back.

Design the export with the system

A shared number says much less than a shared machine. The export may be a looping animation, short video, schematic, code listing, or importable solution. Whatever form it takes, it has to reveal the intelligence of the answer rather than only its final effect.

Opus Magnum's stable two-dimensional view, repeating machines, and visible arm choreography make its GIFs readable without editing a camera. EXAPUNKS exposes the opposite risk: agent movement alone reveals less when the important reasoning lives in code off-screen.

Include the puzzle identity, relevant execution, metrics, and enough program or structure to understand the trick. Keep the frame stable, make the result easy to produce in one action, and mark spoilers. If importing and modifying shared work suits the community, preserve authorship and make the remix explicit.

Now step back and notice the loop. The export format feeds back into the mechanic and presentation. A beautiful motion that hides its control logic is a weak explanation. A complete code dump that hides the machine's choreography is equally incomplete.

The second game works when every score has an inspectable cause, the distributions appear only after ownership, experiments preserve the working baseline, and a shared artifact makes the clever part visible.

Next: §8 gives the work, the metrics, and the campaign a reason to exist.

8 · Story and work

Story gives the puzzles something to be about. It helps you select artifacts, constraints, clients, failures, and reasons to optimize. Paste it on after those decisions and it can't do that work anymore.

Start with the core activity and the core story, then grow them together. A puzzle may begin with a mechanical need or a story beat. It earns its place when both sides agree.

Let the world choose the briefs

The domain supplies all kinds of possible products. The story chooses which one matters now. A client, incident, research question, production order, or institutional demand turns an abstract specification into a job.

Ask of every brief:

Try replacing the setting. If the artifact, functions, constraints, and documents all survive unchanged, the setting is wallpaper. Revise the brief or admit that the fiction is decorative.

Look at SHENZHEN I/O. Consumer products such as signs, controllers, and novelty devices generate their own ports, signals, budgets, and test conditions. The briefs also reveal who commissioned the work. One specification is now carrying both character and system design.

Put story in the interface

Put the story in media that belong to the work: emails, requests, manuals, logs, specifications, invoices, zines, test reports, and the products themselves. One artifact can carry rules, voice, and world-building as long as each role remains clear.

TIS-100's printable computer manual presents the instruction set and the mystery of the machine as one object. EXAPUNKS' Trash World News pulls off the same trick with a hacker zine. Neither format excuses hidden semantics. Both make necessary reference material feel native to the role.

Keep the mandatory channel short and place it at the edge of the build-run-inspect-revise loop. Put deeper material in an optional, re-readable tier. Don't trigger irreplaceable dialogue during execution, and don't make the player leave the workspace to recover a missed requirement.

The player must always be able to extract the requirements from the voice. Flavour may complicate motive, but it can't hide inputs, outputs, limits, or failure conditions.

Give optimization a meaning

Metrics can express production economics, scarce material, limited power, urgency, secrecy, professional pride, or the standards of a demanding institution. The fiction doesn't need to reward every improvement, but it should make the measured qualities feel native to the work.

The same goes for sharing. A shareable artifact should look like something this world or profession might value: a demonstration, report, schematic, listing, recording, or proof of craft.

Use tone to widen the door honestly

A realistic-looking discipline may trigger assumed expertise before the player even meets the rules. Story and art can make the role inviting, but they must not promise a different activity from the one the system delivers. Translate specialist knowledge into rules the player can learn. Don't disguise unexplained complexity as authenticity.

Story is integrated when it helps choose the work, each brief changes because of who requested it, required information stays clear, deeper fiction remains optional and re-readable, and the reasons to build and improve belong to the same world.

Next: §9 turns the whole guide into a working method.

9 · Prototype, test, and revise

Now the guide has to survive contact with a game. Don't begin with a full campaign. Build the smallest version that can prove the system, the editor, the curriculum, and the post-solve loop actually belong together.

Make a six-puzzle vertical slice

Puzzle Purpose
Orientation One input, one output, one primitive, and the real editor
Second verb A new operation in isolation
Reinforcement Familiar actions in a changed context
Coordination Two established operations interact
Divergence The first specification that reliably produces distinct architectures
Capstone A forgiving first pass with strong optimization tension

Build the actual runner and debugging controls. Add a representative test harness, at least two conflicting score axes, provisional histograms, named solution variants, and one real export format. All of these features change how you author puzzles. Postpone them and you are testing a different game.

Write the one-page definition

Before you expand the campaign, record the decisions every later puzzle will depend on:

Field Decision to record
Experience promise What the player should feel by repeatedly doing which work
Domain and artifact The process, products, verbs, and natural constraints
Construction language State, operations, and coordination model
System contract Identity, transfer, time, arbitration, failure, completion, editing
Central pressure What the player is short of and why
Metrics Which axes conflict and how their specialists differ
Curriculum What is introduced, reinforced, varied, combined, and optional
Story channel Which in-world medium carries briefs, reference, and voice
Audience floor How crude a correct solution the intended audience can reach
Non-goals What the project will deliberately omit

Treat this page as a decision record, not a prophecy. When a prototype or player disproves it, change the record and revisit every puzzle that depends on the old decision.

Use three evidence streams

Evidence What it reveals
Fresh-player sessions Goal comprehension, control discovery, mental models, tutorial walls, avoidable complexity
Long-form expert testing Broken tests, duplicate puzzles, dominant strategies, weak metrics, late spikes, ceiling depth
Live telemetry Where problems cluster across many players and whether post-solve systems change behaviour

In fresh sessions, give players only the information the shipped game provides. Don't coach. Watch for hesitation, false assumptions, ignored controls, and the first moment when a player can no longer explain what happened.

For telemetry, record only what you can use, and collect it with consent and privacy safeguards. Useful events include puzzle starts and completions, time to first run and first correct run, resets, exits, returns after solving, score improvements after seeing a distribution, exports, and a short post-solve difficulty rating.

Metrics show you where a problem is. Observation and interviews tell you why. You need both.

Diagnose the layer that failed

Symptom Likely cause First response
Every player rebuilds the same machine Specification or palette is prescriptive Widen the specification and test another solution family
Players guess at failures State or causality is hidden Preserve the first divergence and expose its dependencies
Tutorials require constant explanation Minimum solution or representation is too complex Reduce the first task before adding prose
Every puzzle feels like a new exam No reinforcement Reuse known ideas under a changed context
One architecture wins every score Metrics or costs move together Create pairwise trade-offs and retest the frontier
One puzzle ends the campaign Several burdens or too much labour arrived together Split, bridge, branch, or move it after the ending
The story could be swapped without effect Fiction is wallpaper Derive the artifact and constraints from the world
Shared results hide the clever part Export omits program, structure, or timing Redesign the view or include an importable artifact

Use release gates

Before you author more content, stop at these release gates:

If several gates fail, don't write more levels. More content will only bury the problem. Change the system or the product layer that is hiding it.

The working rule. Build the smallest game that delivers the complete loop, then improve it by watching people use it. A puzzle sheet can prove an intention. Only a running machine and another person's reasoning can test it.


References

Go deeper

The design-element catalog, a play list, and the original sources behind the guide.

Reference Use it when
A · Design-element catalog You need ideas for rules and the effects they can create together
B · Games You want examples to play or inspect
C · Sources You want the original talks, books, and postmortems behind the guide

The catalog includes rules the player can build with, effects those rules may create together, and tools for testing, explaining, or scoring a machine.

If you open the catalog looking for ideas, start with the combines with column. It points to elements that may become more interesting together.

A · Design-element catalog 100 rows · M001–M135

This catalog is an idea source, not a checklist. You will find three kinds of entries:

One mechanic in §2 may use several rows here. Choose only the entries that strengthen the game's central pressure and one another.

IDs never change. When a row is removed, its number stays unused, so gaps such as those in M011–M029 are intentional.

Ratings and game examples are prompts, not measurements. Some examples come from open factory games rather than specification-driven puzzles, so their ideas may not transfer directly. Inspect a game before you borrow from it, then test the rule against the five questions in §2.

Start with the combines with column. It suggests pairs worth testing, although a pair may appear in only one of its two rows.

Emergence scale. Low: results follow directly from an action. Medium: several rules must be considered together. High: local rules can create surprising system-wide behaviour or failures.

A · Specification & verification M001–M010

Can the player infer a fair spec and test against it? M103 and M113 belong here by subject; they sit in G and H by number.

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M001
Specification-driven I/O target
A level defines valid input-output behavior rather than a prescribed construction.Infer the transformation and build any system that satisfies it.Exact semantics; hidden or generated cases may applyCorrectness; robustness; simplicityLowSpaceChem, TIS-100, SHENZHEN I/O, EXAPUNKS, Manufactoria, HRMM002, M003, M008, M105
M002
Multiple or adversarial test cases
A solution is replayed against varied inputs to prevent hard-coded answers.Generalize logic and test edge cases.Unknown future cases; one failure invalidates the programRobustness; cycles across worst case; code sizeMediumTIS-100, SHENZHEN I/O, EXAPUNKS, Manufactoria, HRMM001, M009, M113, M126
M003
Exact structural output matching
The produced object must match a target topology, orientation, ordering, or constrained graph.Assemble, transform, and orient components precisely.No extra parts; orientation and connectivity matterParts; area; cycles; damageLowOpus Magnum, SpaceChem, Infinifactory, shapezM035, M036, M045, M060
M005
Open-ended construction grammar
A small component set permits many topologically different valid solutions.Invent a system rather than select a canned answer.Only component semantics and level specification constrain designElegance; cost; speed; area; originalityMediumFactorio, Opus Magnum, SpaceChem, shapezM001, M105, M114, M126
M006
Bounded workspace
Construction must fit inside a fixed board, reactor, circuit, dome, or node grid.Pack components and route around obstacles.Fixed dimensions; blocked cells; edge portsArea; wire length; component countMediumSpaceChem, Opus Magnum, TIS-100, SHENZHEN I/OM047, M051, M108, M127
M007
Restricted component palette
Each puzzle offers only selected parts, commands, or system types.Compose a solution from the permitted vocabulary.Missing conveniences; limited counts; locked technologiesPart count; workaround complexityLowSHENZHEN I/O, Opus Magnum, The Incredible Machine, HRMM005, M059, M119, M117
M008
Edit–run–reset loop
Construction alternates rapidly between editing and deterministic simulation.Run, pause, inspect, rewind or reset, then modify.Simulation usually starts from a clean stateIteration time; cognitive loadLowSpaceChem, Opus Magnum, TIS-100, HRM (and every Zachtronics title)M009, M010, M126, M129
M009
Step-through execution trace
The game exposes state changes one tick, instruction, or object movement at a time.Pause and inspect registers, paths, signals, queues, or actors.May require selecting one actor or node among manyDebug time; observabilityLowTIS-100, SHENZHEN I/O, EXAPUNKS, HRM, Turing CompleteM065, M072, M073, M113
M010
Explicit failure predicates
The simulation detects invalid states such as collisions, deadlocks, malformed outputs, forbidden transitions, or unmet goals.Diagnose which invariant was violated.Some games reveal only the first failureReliability; avoidance marginLowOpus Magnum, SpaceChem, Infinifactory, FactorioM003, M051, M073

B · Flow & capacity networks M011–M029

How do topology, capacity, and timing make movement a design problem?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M011
Directed channel transport
Discrete entities move automatically along player-defined directed channels.Place and orient channels between sources, processors, buffers, and sinks.Direction, speed, occupancy, cornersLength; throughput; area; crossingsMediumFactorio, shapez, Satisfactory, Infinifactory, MindustryM013, M017
M013
Split, merge, and balance flows
Junctions divide or combine streams, often with ratios or priority.Place splitters, mergers, balancers, or junction logic.Finite throughput; fairness or priority semanticsBalance; throughput; footprintHighFactorio, shapez, SatisfactoryM018
M014
Filtering and sorting
A junction routes entities by type, value, attribute, destination, or signal.Configure filters or build a classifier.Filter slots; unknown types; timing and capacityAccuracy; throughput; filter countMediumFactorio, shapez, Manufactoria, Cosmic ExpressM070, M089, M103
M016
Buffering and storage
Inventory absorbs timing mismatch between producers and consumers.Insert chests, tanks, registers, queues, or waiting bays.Finite capacity; access rules; spoilage in some gamesBuffer size; latency; resilienceMediumFactorio, Satisfactory, ONIM017, M018, M072
M017
Backpressure, starvation, and jamming
Downstream blockage propagates upstream; empty inputs idle consumers.Identify and remove the limiting constraint.Finite buffers and transfer ratesUptime; buffer occupancy; bottleneck rateHighFactorio, shapez, SatisfactoryM016, M018, M073
M018
Throughput ratio matching
Processing stages have rates that must be proportioned for steady state.Calculate or empirically tune system counts and channel capacity.Discrete system counts; speed modifiers; channel capsThroughput; system count; power; buffer sizeHighFactorio, Satisfactory, shapez 2, MindustryM013
M026
Tunnels, portals, and nonlocal links
A path disappears and reappears elsewhere, bypassing surface conflicts.Pair endpoints and reason about hidden connectivity.Endpoint pairing; direction; capacity; hidden segmentSpace; crossings; latencyLowFactorio, shapez, Cosmic ExpressM027, M091, M101
M027
Crossing and grade-separation constraints
Routes may not cross freely, or crossings require special pieces, timing, or layers.Reroute, bridge, tunnel, or schedule conflicts.Limited crossings, bridge inventory, collision rulesArea; piece count; delayMediumFactorio, shapez, Manufactoria, Cosmic ExpressM026
M029
Hierarchical long-distance transport
Local systems connect through slower or higher-capacity transport layers.Build hubs and routes between regions or scales.Travel time, fuel/energy, schedules, launch costLatency; payload; energy; hub countHighFactorio, Satisfactory, MindustryM011, M016, M018

C · Transformation grammars M030–M044

Can a small vocabulary of operations compose into several routes from input to output?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M030
Multi-input transformation process
A process consumes a defined combination of inputs over time and produces one or more outputs.Select transformation rules and supply inputs at compatible rates.Transformation rule stoichiometry, craft time, system compatibilityComponents; time; energy; yieldHighFactorio, Satisfactory, Mindustry, shapezM018, M118
M031
Cutting or partitioning
An object is divided into pieces or quadrants that retain identity or position.Orient the object and route desired fragments.Cut axis; fragment order; waste behaviorCutter count; waste; throughputLowshapez, InfinifactoryM032, M033, M039
M032
Rotation and orientation
Components or outputs are rotated to align interfaces or target orientation.Place rotators, program manipulator turns, or manually orient parts.Discrete angles; handedness; collision envelopeRotator count; cycles; spaceLowshapez, Opus Magnum, Factorio, InfinifactoryM003, M047, M049, M060
M033
Layer stacking and composition
Separate pieces are superimposed or stacked into a composite object.Align layers and feed them to a stacker or assembly step.Layer order, maximum depth, support/collapse rulesStacker count; layers per second; wasteMediumshapez, InfinifactoryM031, M045, M060
M035
Permanent joining
Separate entities become one connected structure or logical unit.Align compatible interfaces and trigger a permanent join.Adjacency, orientation, material compatibilityJoin count; time; error rateMediumOpus Magnum, SpaceChem, InfinifactoryM003, M036, M040, M051
M036
Constrained graph construction
Nodes and edges are transformed until their topology and labels match a target graph.Create, remove, redirect, or relabel edges and nodes.Degree limits, allowed edge types, topology, and workspaceOperations; area; node count; edge countMediumSpaceChem, Opus Magnum, MOLEK-SYNTEZM035, M038, M075
M038
Type or state conversion
An operation changes an entity’s type or state while preserving selected structure or identity.Route entities through converters or apply state-transition operators.Allowed conversion graph; cost; position requirementsConversion count; resource cost; cycle timeLowOpus Magnum, shapez, FactorioM030, M036, M118
M039
Irreversible subtraction
Material, structure, or state is irreversibly removed to reach a target.Position subtractive operators and remove only unwanted parts.Tool reach, irreversible removal, collisionWaste; tool moves; timeMediumshapez, InfinifactoryM031, M049, M060
M040
Ordered construction dependency
A final structure can be produced only if operations occur in an order that preserves access and prerequisites.Plan a feasible sequence around occlusion and tool reach.Access, collision, irreversibility, supportSteps; repositioning; tool countMediumOpus Magnum, InfinifactoryM035, M045, M051, M063
M044
Auto-replenishing sources
Puzzle inputs respawn automatically so design focuses on transformation rather than extraction.Connect source ports and manage cadence.Spawn rate, orientation, port positionCycles; throughput; buffer needLowSpaceChem, Opus Magnum, ManufactoriaM017, M118

D · Spatial construction M045–M060

Does geometry create real access, routing, and timing decisions?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M045
Structural support and stability
Assemblies may fall, collapse, detach, or depend on support topology.Sequence construction and add supports or exploit gravity.Gravity, connection strength, platform rulesSupport count; mass; stability marginHighPoly Bridge, Besiege, The Incredible Machine, InfinifactoryM033, M035
M046
Discrete grid placement
Components snap to cells, making topology and distance countable.Place, rotate, and connect pieces on a grid.One component per cell; adjacency rulesArea; path length; symmetryLowSpaceChem, Opus Magnum, Factorio, shapez, TIS-100 (near-universal)M006, M047, M108, M127
M047
Hexagonal geometry
Six-neighbor geometry changes reach, rotation, packing, and collision patterns.Plan around 60-degree directions and radial reach.Six axes; different parity and ring distancesArea; manipulator count; rotational symmetryMediumOpus Magnum, MOLEK-SYNTEZM032, M049, M051, M108
M048
3D cell construction and removal
The environment and constructed objects are composed of addressable three-dimensional cells.Build in volume and manipulate block structures.Grid adjacency; gravity or welding; tool reachVolume; operations; travel distanceMediumInfinifactoryM035, M039, M127
M049
Reach-constrained programmable manipulators
A manipulator grasps, rotates, translates, and releases entities within a geometric reach.Place manipulators and program timed manipulations.Reach, pivot, holding state, collisionManipulators; cycles; area; costHighOpus Magnum, MOLEK-SYNTEZM050, M051, M061, M063
M050
Mobile and extensible manipulators
Manipulators extend, retract, or translate along guide paths, increasing reach at temporal or spatial cost.Program translation and coordinate it with rotation and grabbing.Track path, extension limit, collision envelopeCost; cycles; reach; track lengthMediumOpus MagnumM049, M051, M067, M108
M051
Collision exclusion
Moving bodies cannot occupy the same space or intersect forbidden geometry.Phase motions, reroute paths, or compact safely.Body envelopes, simultaneous ticks, static obstaclesArea; cycles; clearanceHighOpus Magnum, SpaceChem, InfinifactoryM040, M049, M061, M072
M059
Finite part inventory
Only a limited number of each component may be used.Budget scarce pieces and substitute alternatives.Hard component limitsParts used; leftovers; areaLowThe Incredible Machine, Contraption MakerM007, M108, M117
M060
Target pose and orientation
An object must reach a specific position, orientation, or docking relation.Manipulate pose through rotations, pushes, and constrained paths.Collision, reach, discrete rotationsMoves; tools; clearanceLowOpus Magnum, InfinifactoryM003, M032, M040, M051

E · Time & concurrency M061–M073

Can the player understand how local schedules produce global behaviour?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M061
Global discrete ticks
All active components advance in synchronized time steps.Align actions across devices and reason cycle by cycle.Simultaneous update semanticsCycles; latency; idle timeMediumSpaceChem, TIS-100, Opus Magnum, Manufactoria, HRM (and every Zachtronics title)M063, M064, M066, M072
M062
Per-device timelines
Each system or manipulator receives a sequenced row of commands aligned to time.Place commands on timelines and synchronize rows.One command per slot; repeating program; collisionCycles; command count; parallelismMediumOpus Magnum, MOLEK-SYNTEZM049, M061, M063, M066
M063
Automatic looping programs
A finite instruction sequence repeats to create continuous behavior.Design a loop with a stable return state.Program counter wraps; state persists unless resetLoop length; throughput; state complexityMediumSpaceChem, Opus Magnum, TIS-100M061, M068, M113
M064
Synchronous parallel execution
Multiple actors or nodes execute concurrently under a shared clock.Partition work and coordinate simultaneous operations.Lockstep ticks; communication or collision constraintsCycles; actor count; utilizationHighTIS-100, SHENZHEN I/O, 7 Billion Humans, SpaceChemM061, M065, M066, M083
M065
Blocking communication
A send or receive waits until the counterpart is ready, coupling execution timing.Pair communication operations and avoid circular waits.Synchronous rendezvous; port direction or localityCycles; communication count; deadlock riskHighTIS-100, SHENZHEN I/O, EXAPUNKSM064, M073, M078
M066
Explicit synchronization primitives
Signals, sync points, waits, or barriers coordinate independent processes.Insert synchronization at phase boundaries.All required participants or conditions must alignCycles; wait time; sync countMediumSpaceChem, SHENZHEN I/O, TIS-100M061, M064, M065, M072
M067
Delay, sleep, and timer control
An actor deliberately waits or a device activates after a fixed interval.Insert waits, tune phases, or build timers.Discrete durations; power-state semanticsLatency; power; cycle alignmentLowSHENZHEN I/O, TIS-100, FactorioM062, M066, M071, M110
M068
Counters and finite-state control
Stored state tracks quantities, phases, or modes across cycles.Increment, reset, compare, and branch on state.Finite storage; overflow; initializationMemory; instructions; response timeMediumSHENZHEN I/O, TIS-100, Manufactoria, FactorioM070, M071, M074
M069
Sensors and actuators
Sensors convert world state into signals; actuators convert signals into physical actions.Place, connect, configure, and test a control loop.Sensor range; update rate; actuator delayResponse time; sensor count; powerMediumFactorio, SHENZHEN I/O, ONIM070, M071
M070
Conditional execution and gates
Actions occur only when a comparison or predicate is true.Write branches or configure gates and filters.Limited predicates; evaluation timingInstructions; gates; latencyLowTIS-100, SHENZHEN I/O, HRM, Manufactoria, FactorioM014, M068, M086, M100
M071
Event-triggered activation
A discrete event starts a device or chain rather than continuous polling.Wire triggers, switches, sensors, or one-shot events.Trigger polarity, one-shot/reset behavior, propagation delayLatency; trigger count; reliabilityMediumFactorio, The Incredible Machine, MindustryM067, M069
M072
Race conditions and timing hazards
Correctness depends on relative arrival or execution order among independent processes.Eliminate nondeterminism or engineer safe timing margins.Scheduling semantics; variable latency; shared accessWorst-case latency; margin; determinismHighTIS-100, SHENZHEN I/O, EXAPUNKS, FactorioM009, M065, M073
M073
Deadlock and livelock
Processes wait cyclically or keep moving without making progress.Detect wait cycles and redesign resource acquisition or routing.Blocking channels, finite buffers, exclusive blocksLiveness; buffer count; protocol simplicityHighTIS-100, SHENZHEN I/O, Factorio (rail deadlocks)M017, M065, M113

F · Programming & information M074–M093

How much behaviour can the player express with a deliberately poor language?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M074
Minimal instruction vocabulary
Programs use a compact set of moves, arithmetic, jumps, and I/O operations.Write or drag instructions and manage low-level state.Few instructions; explicit state; no high-level data structuresInstruction count; cycles; nodesLowTIS-100, SHENZHEN I/O, EXAPUNKS, HRM, 7 Billion HumansM076, M085, M086, M109
M075
Spatially encoded control flow
An execution token moves through placed commands, so geometry encodes control flow.Lay command paths, loops, branches, and crossings.Grid space; path continuity; simultaneous tokensArea; path length; cyclesHighSpaceChem, Manufactoria, Opus MagnumM011, M046, M063, M088
M076
Limited local state
Programs have only a few registers, cells, or local storage slots.Reuse state, encode values compactly, and spill to the environment.Fixed registers, destructive reads, address limitsMemory cells; instructions; cyclesMediumTIS-100, SHENZHEN I/O, EXAPUNKS, HRMM074, M077, M080, M109
M077
Environment as persistent state
Values are stored in floor tiles, objects, channels, queues, or spatial positions.Write, retrieve, and organize data physically.Addressability, travel time, occupancySpace; movement; access latencyMediumHRM, 7 Billion Humans, EXAPUNKSM016, M076, M083, M088
M078
Neighbor-to-neighbor message passing
Nodes communicate only through local ports to adjacent nodes.Route values across a network of processors.Topology, blocking semantics, no global memoryCycles; hops; nodes; congestionHighTIS-100, SHENZHEN I/OM065, M079, M090
M079
Local versus global communication channels
Different channels have different scope, addressing, or contention rules.Choose where to communicate and isolate protocols.Scope, collision/contention, endpoint countTraffic; latency; channel countMediumSHENZHEN I/O, TIS-100M065, M078, M081
M080
Sequential data objects and cursors
Data exists as objects with sequences, cursors, ownership, or host location.Open, read, write, seek, move, copy, or delete data.Capacity, access rights, location, cursor semanticsInstructions; movement; file sizeLowEXAPUNKS, TIS-100M076, M081, M082, M103
M081
Mobile agents in a network
Programs inhabit hosts and move between them to act on local data or devices.Program movement, coordination, and local operations.Host capacity, link topology, local visibilityCycles; movement; agents; code sizeHighEXAPUNKSM079, M080, M082
M082
Agent replication or spawning
A running process creates a copy that continues independently from a defined state.Fork workers and assign parallel roles.Spawn limits, shared resources, termination, inherited instruction pointerCycles; agent count; code sizeHighEXAPUNKSM064, M081, M083
M083
Shared policy across many agents
A homogeneous program controls many agents, each branching from local state.Write a universal policy instead of scripting individuals.No per-agent code; collisions; limited communicationSeconds/cycles; instructions; workers usedHigh7 Billion Humans, EXAPUNKSM064, M077, M084, M100
M084
Local perception and neighborhood queries
Actors sense nearby tiles, values, obstacles, or peers rather than a global map.Branch on local surroundings and navigate.Range, orientation, partial observabilityInstructions; sensing steps; robustnessMedium7 Billion HumansM069, M083, M101, M113
M085
Jumps, loops, and control flow
Program-counter changes implement repetition and branching.Create labels, jumps, loops, and termination paths.Label limits; no structured syntax; fall-throughInstructions; cycles; branch countLowHRM, TIS-100, EXAPUNKS, 7 Billion HumansM063, M070, M074, M087
M086
Arithmetic, comparison, and data transformation
Operations transform numeric or symbolic values and test relations.Compute, normalize, compare, encode, or decode values.Token size, instruction set, overflow, destructive operationsCycles; instruction count; rangeLowTIS-100, SHENZHEN I/O, EXAPUNKS, HRMM068, M070, M074, M103
M087
Subroutines, modules, and reusable macros
A solved transformation is encapsulated and reused as a component.Define interfaces, call modules, or stamp blueprints.Port count, call semantics, blueprint cost, hidden internalsReuse; area; code duplication; scalabilityMediumHRM, EXAPUNKS, Factorio (blueprints)M001, M126
M088
Routing graph as finite-state machine
An entity’s path through readers, branches, and loops encodes automaton state.Build a routing graph that accepts, rejects, or transforms sequences.Reader semantics; path geometry; finite routing statesArea; parts; stepsMediumManufactoria, EXAPUNKSM075, M089, M103, M104
M089
Sequential symbol read/consume/write
A sequence carried by an entity can be inspected, consumed, and appended.Route through readers and printers to manipulate the sequence.Reader may consume; writer appends; queue orderSteps; components; string robustnessMediumManufactoria, TIS-100, EXAPUNKSM014, M080, M088, M103
M090
Primitive logic-network construction
Primitive logical operators, memory elements, and links are arranged into a functioning network.Place primitives and route connections.Port compatibility, connection topology, propagation, and component limitsArea; gates; delay; powerHighTuring Complete, Silicon Zeroes, Factorio (combinators), MHRDM006, M078, M091, M109
M091
Heterogeneous signal interfaces
Signals differ in width, encoding, direction, timing, or electrical behavior.Select ports, convert formats, and coordinate sender/receiver roles.Range, direction, blocking, pin countPins; conversion parts; latencyLowSHENZHEN I/O, Turing CompleteM065, M079, M090
M093
User-authored scripting or programmable devices
The game exposes a language or editor for custom logic beyond fixed puzzle pieces.Write scripts, define chips, or author control programs.Sandbox security, instruction limits, API scopeCode size; performance; reuseMediumFactorio (mods), EXAPUNKS (Redshift)M087, M090, M126, M128

G · Rule manipulation & deduction M094–M104

Is the player manipulating objects, or the rules themselves? This can be powerful, but it attacks the stable core the player relies on. Make it foundational or leave it out.

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M094
Movable rule tokens
Rule tokens are spatial objects that can be moved to alter active rules.Rearrange rule tokens while navigating the same space.Rule tokens may be movable; grammar must remain validMoves; rule count; accessibilityHighBaba Is YouM095, M097, M101, M104
M095
Grammar-driven rule activation
Only grammatically valid arrangements of rule tokens become active rules.Construct or break clauses using entity, relation, property, connector, and condition tokens.Grammar, reading direction, connectors, overlapMoves; clauses; rule economyHighBaba Is YouM094, M096, M100, M101
M096
Dynamic property assignment
Rules assign behaviors or interaction properties to entity classes.Assign or remove properties by editing rules.Conflicting properties, rule precedence, object existenceMoves; number of active propertiesHighBaba Is YouM095, M098, M099, M100
M097
Rule-driven entity transformation
A rule transforms all matching entities or classes, possibly recursively.Create, sequence, or prevent transformations.Simultaneous replacement; cycles; object spawning/destructionMoves; object count; stabilityHighBaba Is YouM038, M094, M101
M098
Reassignable control identity
The set of directly controlled entities is determined by rules rather than fixed identity.Assign control to one or more entity classes.At least one controllable object needed; simultaneous movementMoves; controllable countMediumBaba Is YouM096, M099, M101, M113
M099
Reassignable objective and failure semantics
Objective, failure, blocking, removal, or interaction semantics can be reassigned among entities.Redefine which states or interactions count as success, failure, or hazard.Rules must be spatially reachable and remain validMoves; rule editsHighBaba Is YouM095, M096, M100, M101
M100
Rule conjunction, negation, and conditions
Rules combine classes and properties or apply only under relational conditions.Build compound clauses and reason about exceptions.Grammar and precedence; potentially global scopeMoves; clause count; generalityHighBaba Is YouM070, M095, M101, M104
M101
Self-reference and meta-level manipulation
Rules or objects can refer to the level, text, groups, or themselves, changing the puzzle’s representational layer.Exploit self-reference, nesting, or world-as-object operations.Paradox prevention; recursion semantics; level boundariesMoves; rule depth; representation layersHighBaba Is YouM026, M094, M097, M127
M102
Numeric-clue spatial deduction
Row, column, region, or adjacency clues constrain which cells contain objects.Mark cells and propagate forced consequences.Global consistency; limited object counts; local rulesMistakes; hints; deduction depthMediumLast Call BBSM103, M104, M117, M119
M103
Accept/reject classifier
Inputs are routed to success or failure outputs according to a predicate.Build a recognizer or classifier that handles all examples.No false positives/negatives; finite system resourcesAccuracy; steps; area; generalityMediumManufactoria, TIS-100, EXAPUNKSM002, M014, M088, M104
M104
Constraint propagation and search
Local restrictions interact until choices become forced or a branch must be explored.Derive consequences, backtrack, and preserve invariants.Finite domains; global consistency; irreversible moves in some gamesMoves; guesses; deduction depthHighCosmic Express, Baba Is YouM008, M102, M113

H · Optimization & architecture M105–M117

Do different priorities produce visibly different machines?

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M105
Multi-objective benchmark distributions
Solutions are plotted against community or benchmark distributions on several axes.Compare, redesign, and choose which metric to optimize.Metrics often conflict; no single total scoreCost; cycles; area; instructions; powerLowOpus Magnum, TIS-100, SHENZHEN I/O, SpaceChem, EXAPUNKSM106, M107, M108, M114
M106
Speed, latency, or cycle minimization
Players reduce time from input to completion or increase rate.Parallelize work, shorten paths, remove waits, pipeline stages.Correctness must remain; resource budget may increaseCycles; latency; rateLowOpus Magnum, SpaceChem, TIS-100M061, M064, M113
M107
Component cost minimization
Parts, components, manipulators, chips, or materials have explicit or implicit costs.Replace expensive components and share resources.Cost table; fixed infrastructure; trade-off with speedCurrency; parts; system tiersLowSHENZHEN I/O, Opus MagnumM059, M108, M110
M108
Area, volume, and footprint minimization
The occupied bounding box or build area is scored or constrained.Pack components, share paths, and exploit geometry.Collision, wire routing, access, bounded boardArea; volume; width/heightLowOpus Magnum, TIS-100, SpaceChemM006, M027, M047
M109
Instruction-count minimization
Programs are scored by source instructions or programmed slots.Factor repeated logic, exploit semantics, and remove redundancy.Limited instruction set; labels may count differentlyInstructions; symbols; nodesLowTIS-100, SHENZHEN I/O, EXAPUNKS, HRMM074, M085, M087, M114
M110
Energy and power optimization
Devices consume energy during operation, sleep, movement, or idle time.Choose efficient devices, schedule sleep, and balance generation.Generation capacity, peak load, battery/storage, heatEnergy per item; peak power; generation footprintMediumSHENZHEN I/O, Factorio, ONIM067
M113
Robustness and correctness margin
A solution is valued for handling varied timing, inputs, or disturbances without failure.Add buffering, synchronization, redundancy, and generalized logic.Worst-case timing, hidden cases, finite resourcesWorst-case cycles; buffer margin; success rateMediumTIS-100, SHENZHEN I/O, EXAPUNKSM002, M016, M072
M114
Elegance, legibility, and aesthetic optimization
Players pursue symmetry, choreography, simplicity, or shareable visual appeal beyond formal score.Polish layout, timing, and presentation.Subjective audience norms; sometimes GIF exportSymmetry; clarity; choreography; originalityLowOpus Magnum, Factorio, Poly BridgeM005, M105, M126
M117
Optional optimization challenges
A level can be completed for correctness, with extra thresholds for size, speed, or elegance.Return to refine a working solution.Thresholds may be mutually incompatibleAny selected metricLowHRM, 7 Billion Humans, EXAPUNKSM105, M106, M109, M120

I · Progression, pressure & meta M118–M135

Does this deepen construction, or compete with it? These rows pace, frame, and contextualize construction rather than extend it. Several sit at the presentation boundary the guide draws up front, so include them deliberately.

ElementDescriptionPlayer actionConstraintsOptimization axesEmerg. (editorial)Examples to inspectCombines with
M118
Capability unlock graph
New components, operations, interfaces, or scale layers unlock through milestones.Meet prerequisites, choose unlock paths, and integrate new capabilities.Prerequisites, research cost, branch choicesUnlock order; research throughput; opportunity costLowFactorio, Satisfactory, MindustryM030, M119
M119
Mechanic-isolating curriculum
Levels introduce one concept, then combine it with earlier mechanics.Solve scaffolded tasks of increasing composition depth.Ordered progression; gated contentLearning efficiency; hint useLowSpaceChem, HRM, Baba Is You, Manufactoria (and every Zachtronics title)M007, M102, M117, M120
M120
Branching and optional puzzle progression
Players choose among problems or skip advanced challenges while still advancing.Select a route through the campaign.Prerequisites; optional nodes; narrative gatesCompletion; optional masteryLowOpus Magnum, Cosmic Express, Baba Is YouM117, M118, M119, M129
M126
Sandbox, editor, and community sharing
Players author levels, export solutions, share blueprints, or build without campaign constraints.Create, publish, import, remix, and compare.Editor limits, version compatibility, moderationOriginality; clarity; adoptionLowFactorio, Opus Magnum, shapez, Baba Is YouM005, M087, M114
M127
Embodied inspection and construction
The player occupies a position in the simulated space and must move to inspect, construct, or repair systems.Navigate, place tools, inspect local state, and access components.Travel time, line of sight, reach, hazardsBuild time; travel; accessibility; aestheticsLowSatisfactory, InfinifactoryM048, M114
M128
Embedded reference documentation
Rules and interfaces are learned through embedded reference material rather than exhaustive tutorialization.Read documentation and translate it into experiments.Incomplete examples; terminology; cross-referencingLookup time; retained understandingLowSHENZHEN I/O, TIS-100, EXAPUNKSM009, M093, M119, M129
M129
Context-framed progression and delayed access
Capabilities are presented through a contextual interface and may become available gradually.Explore the interface, inspect messages or status, and progress toward access.Time gates, story sequence, framed interfaceDiscovery; completionLowEXAPUNKS, Last Call BBS, SHENZHEN I/OM120, M128, M126
M131
Continuous ambient dataflow animation
Entities and values are rendered continuously moving through the system, so a running system explains itself without stepping.Watch the system run and spot anomalies visually.Rendering fidelity; visual density at scaleLegibility; observabilityLowFactorio, shapez, Opus Magnum, SpaceChem, ManufactoriaM008, M009, M011
M133
In-world diversion / minigame pacing
Built-in secondary minigames (card, solitaire, idle) sit beside the main puzzles as in-fiction rest.Take an in-world break at a self-contained minigame.The minigame's own rulesStreaks (soft)LowSHENZHEN I/O, Opus Magnum, Last Call BBS, EXAPUNKSM129, M134
M134
Diegetic multi-game shell
The product is a fictional device or OS containing several distinct sub-games the player moves between.Switch context between toys within a framed console/OS.Each sub-game's own rulesPer-sub-gameLowLast Call BBS, EXAPUNKS (Redshift)M128, M129, M133
M135
Assembly-into-world narrative payoff
The player’s solved machines and products visibly feed the game world or story, answering “why am I building this?”Solve, then watch products appear in the world or cutscenes.Authoring costNot applicableLowInfinifactory, shapez, Factorio, Opus MagnumM118, M129

B · Games

This is a selected play list, not a complete studio catalogue or an attempt to settle the genre boundary.

Zachtronics lineage

Precursors

Commercial games

Open-ended games in Last Call BBS

Direct continuation

Selected Zachlikes

C · Sources

This guide makes a design argument. It isn't a literature review. These primary sources let you inspect how shipped puzzle systems were designed and discussed, but none of them establishes a universal recipe.

Source What to inspect Relevant chapter
ZACH-LIKE (2019) Design documents, rules, puzzles, interfaces, and production artifacts across Zachtronics games all chapters
Open-Ended Puzzle Design at Zachtronics, GDC 2019 Authoring from a specification and working foundations without prescribing one construction §4
SpaceChem postmortem Specification-first authoring, logical uniqueness, antagonistic metrics, histograms, tutorial failures, and campaign length §4, §6, §7, §9
SpaceChem's Zach Barth on educational games and tutorial design MDA, original programming paradigms, minimum solution complexity, and verifying puzzles not solved by their author §2, §4, §6
Road to the IGF: Infinifactory Inventing and cutting mechanics according to whether they improve open-ended puzzles §2, §3
Building an Infinifactory Crude-to-elegant solution spectra, score distributions, story cohesion, and Early Access feedback §4, §7, §8, §9
Designing TIS-100 A tiny distributed language, printable manual, and story embedded in a technical artifact §2, §3, §5, §8
Designing SHENZHEN I/O Work fantasy, product-derived briefs, constrained electronics, manuals, and niche audience choices §1, §2, §8
Building personality into Opus Magnum Story-mechanic collaboration and the origin and design of the looping GIF exporter §7, §8
Draknek & Friends, Episode 35: Zach Barth, 2025 Kaizen's approachability work, reinforcement puzzles, tutorial testing, and story-led puzzle briefs §4, §6, §8, §9
Reading the Rules of Baba Is You, GDC 2020 Implementing and iterating a system whose rules are manipulable objects §2, §3
Truth in Game Design, GDC Europe 2011 An argument for discovering consequences in algorithmic systems §3
Factorio Friday Facts Design notes on belts, splitters, and rail signals as capacity and arbitration problems in a shipped system §3

I have linked talks and interviews in full rather than reducing them to isolated quotations. Treat the game examples in the guide and catalog as concrete cases to inspect, not as proof that an element began in one title or that one implementation is universal.