Project 3 

For the last project, I’d like to express the feeling of myself through an abstract interactive installation. Inspired by the Black Mirror: Bandersnatch and my personal loss of time sequence after bipolar disorder, I want to illustrate the concept of parallel world of different time and space. The loss of time sequence can be an experience of regaining the fourth dimension as parallel worlds where the time line flashes back when triggered by specific space.


During the ideation stage, I went through several ideas considering both the asthetic influence and technical limitations.
Firstly, I need a circular environment where every touchpoint has a touchpoint opposite to itself in the dimension of space, which metaphoritically means the opposite choice at certain option (interaction).
Secondly, the osciallation of spliting parallel worlds should be layered over to produce the visual effect of flashback.
Coming back to Touchdesigner, every interaction the user made should trigger the split of parallel world, which means if user trigger for n times then there will be 2^n parallel worlds on the screen. Considering the workload for solo project, I limit the trigger time to 4.
To make it clear, here is an example:
trigger 1: the user choose to interact in area 1, then the “user” in parallel world actually choose to interact in area 4.
trigger 2: Now that we have already lost the definition of specific “user”, the “user” in user’s eye choose to interact in area 2, so the spliting four parallel worlds actually separately have path 1-2, 1-5, 4-2 and 4-5.
trigger 3: So this time if the “user” in your eye choose to interact in area 3, then the eight parallel worlds will separately have path 1-2-3, 1-2-6, 1-5-3, 1-5-6, 4-2-3, 4-2-6, 4-5-3, 4-5-6. The rest will be the same.

Physical Controllers

For the physical user interaction, the rotary sensor is qualified for the unlimited rotation of perspective camera in the environment, also a more compatible operation with turning around.
Two buttons. One for the reset and one for the touchpoint trigger.
The joystick maintains to be operatin the turning up and down of perspective camera.

Touchdesigner Part

This part is to process the serial data got from Arduino: rotation angle, restart button state, interaction button state, joystick up-down value.
For the concept of “oppsite chioce” represented by opposite fraction of room, I have to distribute the angle into 6 parts and store the present state of the specific space camera looks at right now and the opposite state.
Since every interaction in different time line has to be stored and revealed when you enter the specific space, the first parameter “timelayer” has to be recorded while counting the times interaction button has been pressed.
The code in the second screenshot is to store the index of space in specific timeline constant when the interaction button is pressed. (e.g  You press the interaction button when you are facing the 2 of the room, than the timelayer0’s value will be 1 to trigger the positivecachecontrol0’s value to be 1 representing the storage state of positivecachecontrol. Then the triggerarea0 will store the value 2.)
Until now, the index of space you choose in different time lines are stored and the cachecontrol value will control the on/off of flashback effect.
Flashback effect
The effect has to be based on the complete logic built for controller, the triggered area has to flash back using cache TOP component  when you enter the space in specific timeline. At last the 2^n screens representing all the possibilities should be achieved by compositing possitive timeline and negative timeline.
Therefore, I use level TOP component’s opacity to control the on/off of delaying flashback effect.The loop goes through the values stored in triggered area to see if it matches the present camera position and opposite camera position. The opacity will be 1 when they match, so the cache will be revealed on the screen illustrating flashback.
Text hint
Users need text as a hint on what interactive event they are looking at.
I wrote 6 lines of text for the room. The code in the second screenshot is to use the values stored in the controller part to determine the specific text to be displayed on the different screen.
Sound feedback
Like what I did for the text hint, soundcontrol values are also determined from the code above.
Spliting screens (parallel world)
Last but not least, all the possibile combination of parallel options should be illustrated by splitting the screens. I can’t connect the node while displaying, so I searched for the connector class for Touchdesigner.
The code in the screenshot is to connect and disconnect the nodes automatically according to the interaction controller’s logic.
e.g: Firstly you press the interaction button at 2 of the room, the screen will be split into 2 illustrating the choice of 2 and 5, so the 2 composite components have to connect level0 who controls the opacity of positive choice in first time layer and level1 who controls the opacity of opposite choice in first time layer. Secondly, you press the interaction button at 3 of the room, the screen will be split into 4 illustarting the choice of 2-3, 2-6, 5-3, 5-6, so the new 4 composite components have to connect level1 who controls the opacity of positive choice in second time layer.

Playtest Feedback

Based on Tom’s feeling and past experience-----
1. fabrication might be better if it can be more stable because joystick’s delay can make users anxious.
2. It’s good to exit and enter easily so the users won’t feel out of control.

Based on players -----
1. The concept is abstract to understand but the visual flashback is still attracting.
2. The rotary sensor is pretty intuitive for some users interms of rotating the camera, but without the cardboard is kind of difficult to rotate it.
3. The four-dimensional joystick only controls the up-down side is confusing without a box illustrating its function.
4. The red and yellow button hint at the start and ending of game didn’t work well because some users just pressed the yello interaction button ignoring the start hint. Maybe it’s better to write on the box.
Fabrication part

Final Version (withoug fabrication for controller)