Interactive Project Documentation




My interactive project is to play with time by creating some “ends” in an endless game in order to make time feel shorter than actual. I explored the characteristics of music and apply them in the endless game to create some “ends”.


I am indeed not a good game player, especially in complicated games like Dota or LOL, etc. Therefore games that have simple rules like endless running games, like Temple Run, are always my favorite. When I played Temple Run, it is true that the game is easy to master and also nervous. Within the first 5-10 minutes, it is an interesting game. However, after playing about 15-20 minutes, even if I have died at some point and restarted, the game became gradually more boring, because I have experience all the scenes for several times, and there’s not much to expect. The only thing that keeps me playing, is to break the record. But during the playing time, time seems to be longer than actual.

I did a small survey among my family and friends who all have experience in endless games. The majority of them also told me that they quit an endless game mainly because the record is so high that they can expect a long boring journey before breaking the score. Therefore, I am really interested in how I can make the process of playing an endless game more interesting so that time feels shorter.


My inspiration is a gradual process. I start from how I can make time feel shorter. We know that when we have a long way to go, milestones makes things better. In an endless game, theoretically, the game never ends. So I am curious what if I add some “ends”, setting up some “milestones” in an endless game to make the game more dynamic, and to make time feel shorter.

Then I looked for possible solutions to this question. I realized that I have also played a game called rhythm master, in which the player taps on the color zone according to the music rhythm, which is shown below. Because there are numerous music in the world, the game is always different. So if I also introduce such a big music library into an endless game, the time could be separated according to music length, in other words, set up the “milestones”.

Image result for 节奏大师Image result for 节奏大师

(Rhythm Master)

Since there are more features of music than its length, I also dig into the music to see if other music features can also be used in my project.

Research on works:

After getting a first sense of what I can do, I began to find what other endless games aside from Temple Run vary from each other. The first game I dug into was Subway Surfer.

Related image

Image result for subway surfer

In order to add more iterations in the game, Subway Surfer introduced different scenes and different running tracks (i.e. flying on the sky, jumping on the train, and normal road). This potentially increased the degree of variation, but the game still lack of new stuff after a longer time.

Similar problem existed in Temple Run 2, which introduced river, tunnel and small train. The game has nothing new after the first, say, 10 minutes.

Related image

I also looked for other games that uses music, such as Boost 2, which is a endless game that emphasized on visual. This game has more variation than the past two, partly because it was much harder, and also because the it gives more visual iteration. There is a background music that makes the game feel nervous, but the music itself is also kind of endless. So I wondered if adding different music one after another would improve it since I reduced the dependence on visual in my game.


To be honest, I have changed my project a lot during the making process due to idea iteration,technical issues and time constraint.

First, in terms of idea iteration, initially I only have a vague sense of what I want to do. I simply want to add features in Rhythm Master to Temple Run to make the endless game more interesting, but I am not sure what exactly such application would bring to me. Since there are so many different features in Rhythm Master and Temple Run, I spent a lot of time figuring out what features to keep and what to abandon. In fact I have been struggled with this for several weeks, though at the same time, I did started to make some technical progress.

During a meeting with Prof. Greenspan, she pointed out that what matters in my game is “TIME”.  When I reconsider her words, I found that the music feature in Rhythm Master is the most important one to be used. So I dig into the music features and choose the ones that I can use. And finally I came up with a clear idea of what to do.

Then, in terms of the actual making process, I chose to use Unity from the very beginning, because Unity is the game engine of Temple Run, as well as a lot of other famous games, which indicated that the engine is mature enough. Also, I have some basic knowledge of Unity from my previous class. So I thought it may be easier for me to learn more about Unity. I decided to make 2D game, because I did not want to spend too much time on building up a 3D model for my game, which is not the central idea of my project. I would prefer having the structure of the game first, and add other stuff to improve it later.

The full game experience can be found at the beginning of the documentation. The details of the game can be found here:

  1. Graph:

I chose the background and character from Google image, because I failed to draw my own character. Therefore, I photoshopped some pictures from Google, and change the front of the character to the back of it. Some of the pictures (rabbit and wood) are also used in my previous game, because I really liked the style and wanted to keep it.

Screen Shot 2017-04-29 at 9.12.39 PMchange into Screen Shot 2017-04-29 at 9.13.07 PM

Screen Shot 2017-04-29 at 9.13.41 PM (candies with different material to be its color)

Screen Shot 2017-04-29 at 9.13.22 PM (Obstacles)

Screen Shot 2017-04-29 at 9.08.19 PMScreen Shot 2017-04-29 at 9.08.49 PM(backgrounds)

2. Music

The songs I chose this time are the songs that have a strong rhythm so that the concept would be much clearer.

The names of the songs are as follows:

  1. Loveless – Tomohisa Yamashita
  2. Freedom Fly – Stancovich
  3. Justice and Freedom – Gundam SEED BGM
  4. Endless Game – Arashi
  5. Song of Pi – Hatsune Miku

Besides these songs, I also tried a lot of other sons, including “Snow Rain”, “Pull the turnip”, “A-Ra-Shi”, etc. However, due to lack of delicacy in the game, these music does not work as good as the one I finally chose. But eventually the game aim to fit all kinds of music.

3. Code

Screen Shot 2017-04-29 at 9.28.40 PM

Screen Shot 2017-04-29 at 9.31.14 PM

Screen Shot 2017-04-29 at 9.32.56 PM Screen Shot 2017-04-29 at 9.33.18 PM Screen Shot 2017-04-29 at 9.33.29 PM Screen Shot 2017-04-29 at 9.33.36 PM Screen Shot 2017-04-29 at 9.33.42 PM Screen Shot 2017-04-29 at 9.33.54 PM Screen Shot 2017-04-29 at 9.34.05 PM

User Testing: I invited some friends to player test. After they played the game, they suggested that the game is a bit too simple with only three tracks. Therefore, I tried the simplest way to improve it: adding two more tracks to the game. It turns out that although the method is simple, it actually works! The users are getting into the game this time.

Lastly, due to time constraint, I was not able to finish everything I expected. This is mainly because I did not fully develop my idea in the first several weeks. So when I finalize my game, I did not have enough time to add more external stuff. Although I have studied a lot on technical problems like how I can generate in a 2D game a similar idea to “turning left and right” in a 3D game, I did not have enough time to apply it to my game. In addition, for the pictures I used the ones from Google, because I was not able to make my own due to time constraint.

Game Functions:

The game aims to eat as many candies as possible and avoid the wooden sticks. If you fail to eat one candy, the music as well as wooden sticks speed up. If you eat the medical box, you can speed down the music and the wooden stick.

Here are my applications of music in the game:

  1. I used music of different length from 18 seconds to 4 minutes. This is to give the players a basic sense of the game. Later the length of the music would be the same as the actual music length. My idea is to make the music length move as a hill, that is, short musics at the beginning, long ones in the middle, and short ones later, and then long ones, and so on. This is to avoid fatigue.
  2. I also changed the pitch in the music. When you miss a candy, music pitch goes up as well as the obstacles. So when the player hear the music suddenly faster, they would be more nervous accordingly.
  3. I chose 2-4 musics of different music styles to avoid auditory fatigue. Between each two styles, I added a skippable 10 second break to 1. give the player some time to rest, and 2. prepare for such a change.
  4. Because of the big music library, it is easy to avoid hearing the same song again in one round, which makes the game more dynamic. Also, the game still keeps the simple rules, but have more difference brought by music as time goes.
  5. This time I did not use songs with human voice because of technical issues. I am not able to have time to change only the speed, not the pitch. But it would be better to have songs with human voice to allow the player get more interested in the game.

Evaluation and Improvements:

Overall the game is quite successful in using music as a tool to play with time by adding ends in the endless game. However, currently the quality of the music output is not quite successful. The disability to change only speed has brought the music to strange sound effect when pitch goes up. This has decrease the overall user experience of the game.

Compared to my initial goal, I think the core idea has been presented in the game. But I still need to have more features in the game, as my initial goal is to have a game that has the core of both Temple Run and Rhythm Master. I think one improvement would be letting the obstacle drop according to the music rhythm. Another approach would be adding more different obstacles and rewards in the game.

My very next step is to create a scene that looks much better. Currently the scene is simple and not so attractive. This could reduce the fineness of user experience.

In my interaction project I only used 4 songs to show the core concept of the game. However, eventually the game needs to get access to the whole music library.

Takeaways from the Interaction Project:

From doing this interaction project, I think the most important thing I learned is new idea development. Previously in my work I somehow neglected the importance of the concept in my work, but only I emphasized on how I can make the project look better or technically harder. Although these two factors are also crucial to a successful project, the concept is indeed the CORE! Although this time I was not able to fulfill both new concept and technical delicacy of the project, I would think about more on how I could have a creative delicate project.

The other thing I think is important is that one concept can indeed lead us to a lot of “actual ideas”, or “iterations”. Therefore, it is essential to choose to use some of the “ideas” and get rid of some others. Having all the ideas may not necessarily be good to the project. It is always useful to keep simple. In addition, the unlimited number of “actual ideas” also means an infinite exploration. Just like in my interaction project, there are always a lot of ways to create ends in an endless game, and even numerous ways to use music to create such ends. The IP project is just a start.


Thank you to Professor Greenspan and Shirky for their help in developing the concept. Thank you to Professor Grewell for his help in music pitch. Thank you to Professor Pudasaini for leading the capstone session.

Thank you to all the engine, game, photo and music credits.


Capstone progress

Interactive Project:

My purpose is to combine the game Temple Run and Rhythm Master together to create some degree of “end” in an endless game. Initially I intended to use Unity 3D because it was what Temple Run has used before. However, I finally decided to use Unity 2D in order to reduce the difficulty forming 3D models.

What I have done: 1. Reviewed Unity 2D and C# that is used for writing program. I have learned in “Intro to programming for game” about Unity 2D and here is a game that I have made before. In the game, the collision and rigid body has been used for many times, which will also be an important part in my game design. I will refer to some design part of this game in my IP.

Screen Shot 2017-03-05 at 9.11.59 PM

2. Considered some possible solutions for some difficult design in the game. First, how to get the rhythm of the music. Initially I was thinking about using a unity plugin to analyze the music and get the rhythm. Since the main purpose of my game does not focus on music rhythm, but on the “end”  feature of the music. Therefore I translate the music on my own, that is, I manually find the rhythm. Since the number of the rhythm in the game is closely related to the user experience, I will make adjustments on the rhythm later. Second, how to “turn left and right”. This is a question that bothered me a lot since in 2D it is hard to form a “turn” naturally. I talked to Professor Clay Shirky and have broadened my understanding of “turn”. Instead of turn left and right, I plan to make my character do some other activities, like go through caves or turn 360 degrees which does not necessarily need to change the camera 90 degrees.

3. Working on the rhythm part of the game. I have now able to make my character collide with the rhythms that falls from the scene. Currently I used simple figures to represent the characters and the rhythms. And I am on half way collecting images for my game. I have also figured out how to add music to my game.

Screen Shot 2017-03-05 at 9.14.58 PMScreen Shot 2017-03-05 at 9.14.07 PM

For the obstacles in the game, I have read some articles on how Temple Run was designed, and I think the way they judge the collision could somehow help me make my game as well.

Creating an infinite 3D runner game in Unity (like Temple Run, Subway Surfers), part 1


Research Essay:

Purpose statement: To trace the pre causes of some important features in the game Temple Run.

Last class I decided to write about the history of endless games which includes games as early as Tetris and as late as Temple Run. However, I found it difficult to look for sources that could support my essay, and it was so hard to determine which games should be discussed in the essay and what should be mentioned. Therefore, in one-on-one meeting with Professor Clay Shirky, he suggested that instead of tracing the history of endless games, trace the history of some important features in Temple Run would be a possible way.

The important features include: side scroll, first-person to third person direction, endless, and others that need to be found. I will find the games far before Temple Run to see how the design of this feature in that game have potentially influenced Temple Run. For example, in Mario, it was many times the scene moving while Mario stands at the same place.


A Brief History of Endless Runners

Tetris- Game Theory


Capstone Schedule – Dongning (Pudasaini)

Week 1: By Feb 13

  • Study Unity
  • Finalize the game design

Week 2: By Feb 20

  • Get rhythm from the music (Unity plugin)
  • Choose some music that will be used in the game
  • Start making the game in Unity

Week 3: By Feb 27

  • Work on making the game.

Week 4: By Mar 6

  • Work on making the game.

Week 5: By Mar 13

  • Work on making the game.

Week 6: By Mar 20

  • Work on making the game.

Week 7: By Mar 27

  • Work on connection between game and physical stuff (Controlled by arduino)

Week 8: By Apr 3

  • Work on making the physical stuff. (ie. use laser cutter to cut wood and make the foot plates.

Week 9: By Apr 10

  • Work on connection arduino to the physical stuff

Week 10: By Apr 17

  • Test the whole game, eliminating potential bugs

Assignment 5

This is the hardest assignment I’ve had in this class. Eventually it works for one second, and destroyed itself. Actually at first I put the servos in the wrong directions and it did not even move. After changing the directions, two things made it difficult to move: 1. The sticks were too long and it was hard to be controlled. 2. The coordination between the three servos. I think eventually the sticks was the biggest problem that needed to be solved.

Assignment 5 – Response

  • All animatronics have an audience. What is the main emotion you want to transmit to them?

I think the most important part of my robot designed for emotion transmission is the eyes. I intend to make a robot that is poor, but still looks funny. Thus my character’s name is Guuduu. As Keepon’s appearance, “some basic traits common to people and animals …are important cues to the potential for social agency. At the same time, keeping the appearance simple…is important for helping people understand and feel comfortable with the robot’s behavior.” Therefore, I used pingpang balls to make the eyes, and only used a marker to draw two black dots to make the eyes simple, but easy to recognize. Also, the contrast between the big white eyes and the small dots make the funny emotion even stronger.

  • Your character lives in a world, has a personality and a story behind. Which one?

Guuduu is a funny guy who just moves to a new place. He is trying to make friends with his new neighbors. However, the new neighborhood he lives in is quite indifferent. Fortunately he has a funny face. He also wave his hands and do a lot of funny things to try to affect his neighbors and change the environment of the neighborhood.

  • How does the participatory design methodology work on your own animatronic project?

Participatory design is all the end users in every stage of the project-making progress. During my project design, I have asked many friends about their opinions. They gave me many advice on how the appearance and the behavior of my robot.

Assignment 4

img_20161122_145900 img_20161122_145904

I added a body made of hardwire to the head. It was quite hard to twist and folder the hardwire. I was really happy that I successfully made the triangles as legs. Initially I used hardwire to stabilize the triangles, but it seemed that the insta morph worked much better. I also used the insta glue to further fix the triangles. It was also hard to stick the body to the legs because they were all triangles. I used 2 more hardwire to make a structure in order to stabilize.

 * WiiChuck -- moving 2 servos with the joystick
 * Animatronics - NYU Shanghai
 * Prof. Rodolfo Cossovich
 * Original code from Tod E. Kurt,
 * Code works for both original WII Nunchuck and OEM joysticks

#include <Wire.h>
#include "nunchuck_funcs.h"

#include <Servo.h> 

Servo servo1;  // create servo object to control a servo 
Servo servo2;   // twelve servo objects can be created on most boards
int pos1 = 0;    // variable to store the servo position 
int pos2 = 0;    // variable to store the servo position 

int loop_cnt = 0;

byte accX, accY, accZ, joyX, joyY, joyZ, butZ, butC;

void setup()
  delay (1000);
  nunchuck_init(); // send the initilization handshake
  Serial.print("WiiChuck ready to transmit ... n");

  servo1.attach(9);  // attaches the servo on pin 9 to the servo object 
  servo2.attach(10);  // attaches the servo on pin 10 to the servo object 

void loop()
  if ( loop_cnt > 100 ) { // every 100 msecs get new data
    loop_cnt = 0;


    joyX  = nunchuck_joyx(); // ranges from approx 70 - 182
    joyY  = nunchuck_joyy(); // ranges from approx 65 - 173

    accX  = nunchuck_accelx(); // ranges from approx 70 - 182
    accY  = nunchuck_accely(); // ranges from approx 65 - 173
    accZ  = nunchuck_accelz(); // ranges from approx 65 - 173
    butZ = nunchuck_zbutton();
    butC = nunchuck_cbutton();

    Serial.print("joyX: "); Serial.print((byte)joyX, DEC);
    Serial.print("  joyY: "); Serial.print((byte)joyY, DEC);

    Serial.print("  accX: "); Serial.print((byte)accX, DEC);
    Serial.print("  accY: "); Serial.print((byte)accY, DEC);
    Serial.print("  accZ: "); Serial.print((byte)accZ, DEC);
    Serial.print("  butZ: "); Serial.print((byte)butZ, DEC);
    Serial.print("  butC: "); Serial.println((byte)butC, DEC);

  //here we calculate where servos will move to
    pos1 = map ( joyX, 1, 255, 0, 180);       //check map() syntax at
    pos2 = map ( joyY, 1, 255, 0, 180);

  //here we update servos positions. Check 
    servo1.write(pos1);              // tell servo to go to position in variable 'pos' 
    servo2.write(pos2);              // tell servo to go to position in variable 'pos' 

Response to Seeing Ourselves In The Computer

It is quite surprising and interesting to know that we human treat computers as some personality. Although in most cases people do not admit it, they indeed consider computers as some “characters”. When I read about how disappointed it is for computers not being fully used, I did feel quite sad about them. I also know that some friends would give their computer a name, or even “appreciate the computers when they feel that computer helps them figure out something”. This just follows the Topffer’s law that “Any human face, however poorly and childishly drawn, possesses necessarily, by the mere fact of existing, some perfectly defined expression.” I think for human and computers, computers are “smart” enough for people to imagine that they are “thinking”, and thus thinking about their personalities.

In animatronics, just as in media, such idea could also be widely used, and can be used even better as androids could be made much like human. Just as mentioned in the text, “the use of anthropomorphic agents…will only enhance this effect.” It is impossible for us not to give our puppet some personality. However, we still need to consider whether the personality we want to add matches the personality shown in the interface.

Assignment 3 – Animatronics

The most difficult part in this assignment, honestly, was that I did not have enough strength to make holes in Pingpong ball and many other places for the hard-wire. I tried using strings, papers and tapes to make the hard-wire stick to the balls and the motor, but they did not work as I expected. Therefore, I used glue to stick it.

Response to Transmitting and Decoding Facial Expressions

The article uses model and data to figure out the correlation between facial expressions, and describes how facial features transmit signals and how brains decode the expressions. FACS provides with a standard for 6 basic facial expressions plus neutral: happy, surprised, fearful, angry, disgusted, sad, and neutral. These expressions has some degrees of correlation, but brain actually decode these information with low overlap.

When facial expression is turned into data, it is getting closer to the application to androids. But I noticed that different facial expressions have different optimality of information. For example, for happy, eyes are best used while mouth is best used for fear. But There’s also red and yellow part that indicates a greater use by human. In reality such human bias will still exists. We might still need to consider about these parts when making facial expressions. As we discussed last week, micro-expressions make really a big difference to people. It reminds me of last week’s youtube video. By seeing the heads’ eyes I can not see how it was different from human. However, when it has moved its mouth, I realized that there was something wrong that I can not tell. So even when the android can have different facial expression, it may still be hard to make its eyes, nose, mouth and other organs look harmonious.