Unfolded is a 3D third-person, action-adventure game in origami world. The player can transform into wolf, spider, and bird forms to traverse the dungeon, and also transform the weapon into katana, naginata, lotus shuriken and grapple to fight with enemies.

This project is the advanced game project for my final year in USC. I worked in a team of about twenty people including engineers and artists. I cooperated with six main game engineers to design and implement gameplay features.

I am responsible for all enemies in the game, including stone slime, wolf, bird, humanoid mini-boss and flying owl boss. I also worked on player’s state machine, pick-ups movement, and other gameplay related bug fixes.

This is the latest play demo.It shows all enemies in the games and the critical path in the dungeon. Some assets and effects are not finalized yet:

This is the trailer for the spring semester mid-term.

This is the trailer for the fall semester.



Particle System using Compute Shader

Project time: Nov 2016

This project is about building a particle system in Prime Engine. I and another team member worked on it for one month.

The project is divided into two parts. The first part is implementing particle system classes and all computation on CPU. I implemented the particle system and also the shader to render them on screen.

First Part Demo:


The second part is using compute shader to update particle movement. I implemented the GPU shader and a new pipeline in Prime Engine to calculate particles on GPU. The compute shader can take more than 10000 particles.

Final Demo:


Terrain Generation

Project Time: 2015

This project is about generating endless terrain and creating different landscapes. Overview of the project can be found here in the Poster.

This is the first graphics project I had. There are still a lot of places that need improvement, and couldn’t be done at that time due to lack of time in the final year of undergraduate. This project made me more interested in computer graphics and simulation.

Flocking AI

Project Time: April 2017

This project is about simulating a school of fish using Flocking AI.

I used cohesion rule, alignment rule and seperation rule together to control the movement of fish. I also added obstacle avoidance and predator avoidance to the demo.


Animation Exporter Plugin in Maya

Project time: Feb – March 2017

This project is about creating a plugin to simulate physics on objects in Maya and export the result as animation data, then using Prime Engine to play the animation. I finished this project with another team member.

I wrote all the code for the Maya plugin using python, and also some part of the animation system in Prime Engine to read the animation files.

In the first part of the project, I simulated the ball and wall collision in Maya.

Demo video:


The second part is about simulating the weapon movement based on the solider animation.

Demo video:


Physics System in Prime Engine

Project time: Oct 2016

In this project, I and another team member implemented a basic physics system in Prime Engine. And then we created pool table to demonstrate how the object movement and collision are handled in our physics system.

This physics system consists of two parts: physics manager, which handles objects movement and collision; and physics component, which is part of objects and store the collision box size and other physics related parameters.

I implemented the collision detection and response, and also the basic velocity and movement update function. I used the sweep and prune algorithms to save the collision detection time, so it does not need to compare every pair of objects in the world. The collision response support sphere-sphere collision and sphere-box collision.

Here is the demo video.