Hi, I am Wish!

Most of the time, I am a software engineer.

I love music and good time, but what keeps me waking up every day is to create memorable interactive experience for every guest.


What is a Virtual Film Set?


Film cinematography has the function of eliciting emotions from the audience. It influences not only how scripts are written, but also how the director chooses to direct the movie.

To improve one’s skills about cinematography, we believe that practice makes perfect. However, setting up a film set with real props and actors is really expensive and not easily available to most of the novices.

In this virtual film set, a user can act as a director, photographer, or an editor.

Director Mode

The user can decide the number of cameras that should be placed by observing the whole film set from the god’s perspective and the storyboard

Photographer Mode

The user is able to determine where to place the cameras in order to have the desirable framing. We also provided dynamic tracking camera system for the user.

Editor Mode

The user is expected to arrange the story by composing a sequence of shots from the various camera streams.

System Architecture

The system was developed using Unity 3D and runs on HTC VIVE. While operating the virtual film set, a user simply puts on the headset and interacts with the set using the two hand controllers.

The architecture of the virtual film set is composed of three main parts: (1) a navigation component to move around cameras and the monitor, (2) shot management components (right of the figure) including a database, recommendation, and editing functions, (3) the workspace allowing users to take on various filmmaking roles, and export the output as a video.


  • Collected shot data from experts and compiled the raw data into specific data type. (.xml)
  • Provided shot recommendation system based on experts’ experiences in virtual film set.
  • Implemented the adaptive assisting learning interface according to the scaffolding theory.
  • Improved the system to decide the reaction of non-player character with the actor using motion capture in the virtual film set.
  • Fixed bugs and cleaned up code in the virtual film set.


  • C.-H. Kuo, T.-Y. Li, 2019.06, “Camera Shot Recommendation for Virtual Film Set,” in Proc. of 2019 Computer Graphics Workshop, Tao-Yuan.
    (paper in Chinese) [Rewarded The Honorable Mention Award of Computer Graphics Workshop 2019, Taipei ACM SIGGRAPH]
  • Q.-J. Wu, C.-H. Kuo, H.-Y. Wu, T.-Y. Li, 2020.03, “Designing an Adaptive Assisting Interface for Learning Virtual Filmmaking,” in Proc. of EUROGRAPHICS 9th Workshop on Cinematography and Editing, virtual. (paper)
    Full presentation on the virtual conference: [Link to Youtube] start from 18:30


Here are several small games created on the course: Computer Game Programming (15-466/15-666) at CMU. Those games were fully implemented by C++, featuring OpenGL.



Thomas Wrabetz, Hao Chen, Liang-Yen Chou, Chih-Hsuan (Wish) Kuo

Project link



You are a six legged housekeeping robot, and there are some drunk people either standing or lying on the ground. Try to throw all of the drunk people into the trash bins!

Tank World (Multiplayer)


Leo Chou, Wish Kuo

Source code



It's a battle field for multiplayers(two for now) to control the tanks and fight against each others.


There are 1 server and 2 clients (Player01 / Player02) in this game. Each time when a state change, for example, any control keys down or up, the package will be sent from the client to the server. Each package contains an identifier ('b' for keyboard event, and 'f' for being hit event) and the content. A 'b' package contains keyboard status and counters, while a 'f' package contains current score for both players.

After the client sends the msg to the server, it will reply a package recording all the game status, including keyboard status, event counters, current score for both players.

Eating in Order


Wish Kuo

Source code



You are attending a big eater! However, while approaching to the end of the game, you are required to finish the last four dishes in order.

Rabbit in the Cave


Leo Chou, Wish Kuo, Wizard Hsu

Source code



I'm so hungry, let me eat all the carrots!

How The Asset Pipeline Works

Built from asset_generation.cpp. Read ast_list.txt to process .png files in the list. PNG files will be converted to .asset files. During gameplay, the game loads .asset files to process tiles and palette via PPU.

Explore -- walking simulator


Wish Kuo

Source code



Just walk and explore the world.



Wish Kuo

Source code



Try to hit rectangles with the ball in the same color, the color of the ball will change after each time it hits the rectangles.


Lyraflo is a student pitch project at the Carnegie Mellon University’s Entertainment Technology Center (ETC) discovering how interactions, visualizations, and gameplay can be used to convey music theory concepts in virtual reality.

Project website: https://projects.etc.cmu.edu/lyraflo/

Interaction Examples


The user can grab the note and hear the pitch at the same time, and then release the note by release the trigger on the controller.

The slingshot is designed as a C major scale, therefore, the user can get a sense of how does a scale sound like.


The accordion is implemented through Bezier curve. The user can interact with the accordion by horizontal squeezing and stretching.

Accordion (Pump)

The user is able to pump the correct note into the air pipe by the accordion.



The Vlight project is to create an edge-native AR game by integrating innovative technologies including AR, AI, and edge computing and carry out data analysis to benchmark the performance of the game.

Project website: https://projects.etc.cmu.edu/v-light/


Building Virtual Worlds (BVW) is a course from Carnegie Mellon University. It challenges students to work quickly, creatively and collaboratively. Using rapid prototyping and communication across roles to complete sprints within a tight time frame.

BVW gives small teams of students, 5 team members (2 programmers, 2 artists, 1 sound designer), two weeks to create a virtual world, with new groups and goals for each round. It all culminates in a public festival to hundreds of spectators.