I

What do we mean by reverse engineering?

The traditional meaning starts with an object, a system, or a piece of software. You examine how it works, infer the structure, and reconstruct the logic or the implementation.

In this class the goal is different. We are not trying to recover the original code or the original hardware. We are trying to make a reasonable model of how an experience behaves as a system.

That model can describe an existing professional project, a proposal, a classmate’s idea, or your own capstone.

The question to keep asking

If we had to build this experience, what would need to happen for it to work?

Immersive projects often depend on parts that are expensive or easy to get wrong:

  • sensors
  • projection
  • VR
  • motion tracking
  • networking
  • spatial audio
  • fabrication
  • custom software

A problem is much cheaper to find in a diagram than in a finished installation.

Rules inside the box are a model of the experience, not its source code.

The useful model is a few rules for how the experience behaves, not the original source code.

II

Moving from an idea to a system

Start with a vague concept:

An interactive projection responds to visitors’ movements and gradually transforms the space.

The sentence is a concept. A system has to answer what is missing:

  • What kind of movement?
  • How is movement detected?
  • What changes, and what causes the transformation?
  • Does it respond to one person or many?
  • What happens when no one is there, or when someone leaves?
  • Does the system reset? Is there a beginning and an end?

Concept

  • What the experience is about
  • What it should feel like
  • What the participant should experience

System

  • What inputs exist
  • What decisions are made
  • What outputs occur
  • What changes over time

Reverse engineering is how we move from idea to system, before prototype and implementation.

  1. Idea
  2. System
  3. Prototype
  4. Implementation

The scene is still a vague idea. Answer a question to add a label.

The same projection scene stays vague until each missing question gets an answer.

III

Pseudo-code

Pseudo-code is a plain-language description of system logic. It looks a little like code. It does not need to compile. Syntax does not matter. Logic does.

  • IF
  • ELSE
  • WHEN
  • WHILE
  • WAIT
  • REPEAT
  • DETECT
  • CHANGE
  • RESET

While you write it, keep asking:

  1. What does the system know?
  2. What does the system check?
  3. What decisions does it make?
  4. What happens as a result?
  5. What repeats?

“The participant is interested” cannot be checked. “The participant stays in the area for 20 seconds” can. The same is true of direction: left and right are observable, so the particles can follow them.

Turn “something happens” into “WHEN X happens, DO Y.”
  • WAIT for participant
  • WHEN participant enters the space
  • activate the experience
  • WHILE participant remains in the space
  • detect movement
  • change the projected image
  • WHEN participant leaves
  • reset the system

Press Play to run the example. The highlighted line is the current step.

Plain-language rules can run: the active line is what the room is doing now.

IV

Flow charts

A flow chart maps how information moves through a system.

Input, then process, then output.

Inputs

Camera, microphone, controller, keyboard, motion or proximity sensor, participant position, audio level, a network message, or time.

Processes

Detect, measure, calculate, compare, classify, transform, generate, store, or randomize.

Outputs

Projection, image, sound, lighting, animation, physical movement, haptic feedback, or a network message.

The diagram shows dependencies, technical complexity, bottlenecks, and the places where systems connect. Those are often the risky parts.

What enters the system, what happens to it, and what comes out?

A token carries one example from an input, through a process, to an output.

Information moves from inputs through processes to outputs. Body tracking is where this installation can get stuck.

V

State machines

A state is a condition the system can remain in for a while: idle, active, waiting, calibration, interaction, success, failure, or reset.

Flow chart

Where does information go?

State machine

What is the system doing right now?

The boxes are states. The arrows are events that cause change: someone enters, a timer expires, an object is selected, a score is reached, a threshold is crossed, someone leaves.

Participants do unpredictable things. They enter halfway through, leave early, press something over and over, skip the instructions, act at the same time, or do nothing. The diagram has to say what happens anyway.

What can the system be doing, and what causes it to change?

State: IDLE. The room is empty and waiting.

The system stays in one state until an event, such as someone leaving, moves it to the next.

VI

Interaction diagrams

Pseudo-code, flow charts, and state machines describe the system. An interaction diagram describes the relationship between the participant and the system.

Participant ↔ system

The participant acts. The system responds. The participant perceives that response and acts again.

  1. Action
  2. Response
  3. Perception
  4. New action
What does the participant do, and what does the system do back?
  1. Action
  2. Response
  3. Perception
  4. New action

Action: the participant enters the room. You can also drag across the canvas.

The participant acts, the system responds, the participant notices, and that leads to the next action.

VII

Core mechanics

A core mechanic is a fundamental action-response relationship that makes the experience work.

  • Participant moves, and a virtual object moves.
  • Participant speaks, and the environment changes.
  • Participant approaches, and the sound gets louder.
  • Two people cooperate, and hidden content appears.
  • A player selects an object, and information is revealed.

A finished project might include projection mapping, motion capture, shaders, spatial audio, AI, custom controllers, networking, and fabricated objects. The mechanic underneath can still be simple: moving your body changes the position of something on screen.

That is what to prototype first. The prototype does not need the final technology. It only needs to test the important interaction.

Body tracking → Unity → projection
can be tested as
mouse → Unity cube.

Finished version: body tracking, a game engine, then projection. The motion is the same.

A mouse moving a cube can test the same relationship as full body tracking and projection.

VIII

Reverse engineering as risk reduction

The diagrams are a way to see trouble before a build starts. Four kinds of risk show up in the same system:

  • Technical. Can we make the technology work?
  • Interaction. Will participants understand what to do?
  • Experience. Is the interaction actually interesting?
  • Production. Can we build this within our time and resources?

Reverse engineering helps expose each of these before major implementation begins.

Choose a risk to see which part of the system it asks about.

Each risk looks at a different part of the same system: technology, understanding, interest, or time and resources.

IX

Applying the method to a peer project

On Wednesday, you will take another student’s project idea and model it as a system.

You are not being asked to redesign it. You are trying to answer one question:

How would this project need to work?

Work from the idea as it was described. Where the description is still open, write down the assumption instead of inventing a new project.

1. Pseudo-code

What rules govern the system?

2. Flow chart

What are the inputs, processes, and outputs?

3. State machine

How does the system change over time?

4. Core mechanic

What is the smallest important interaction worth prototyping?

5. Assumptions

What did your group have to assume because the idea was not yet fully specified?

X

Closing principle

Before you build it, can you explain how it works?
  • Pseudo-code. What are the rules?
  • Flow. Where does the information go?
  • State. How does the system change?
  • Interaction. What happens between participant and system?
  • Core mechanic. What is the smallest thing we need to test?
  1. Reverse engineer
  2. Prototype
  3. Learn
  4. Build

Pseudo-code: What are the rules?

One pass through the five questions is the explanation you want before anyone builds the project.