Please use Chrome or Firefox. IE explorer will encounter some format issue.
All my programming works for games are kept here.
All the hobby projects and internship experience will be put here.
Here are my computer graphics and game projects. Click the link below for more!
The secret information of the Lord. Kneel before me, mortals.
Pictures about my work, study, hobbies and more go here.
The place where all my education material, relevant courses, and resume are listed.
I was born in Shanghai, China. From a young age, I was infamous for mischief and crazy ideas. Who could have imagined a seven-year-old boy organizing all his classmates into a convenient noodle eating contest and one-third of the class got a stomachache after that? Impressive, right? Fortunately, I quickly converted my awful skills of destruction into something useful. I picked up fundamental programming skills in Java when I was in Junior high school because my father brought me a desktop as a birthday present. My initial purpose of writing in Java was relatively impure: to write an executable that will automatically harvest products from my online farm. The online farming system which enabled users to both plants their own plants and steals their friends' was quite popular during that time in China and auto-harvesting products definitely gave me an advantage over my other friends online. However, it ended with my avarice: I tried to come up with an auto-stealing script and was quickly kicked out by the web site's security system. What a shame. I had such a big vision at that time. The security system never had much imagination, did they?
After entering the University of Pittsburgh in the United States, I began to enjoy the sweet western rebellion in the form of the dancing mob and American fast food. I tried different things that I could never experience in China: hunting, targeting and throwing pancakes at my roommates. The gaming environment here is more tolerable than China's because the limitations on the game contents are more reasonable. I finally can play some games that have blood in them. As for my college life, it went great. I majored in Computer Science and polished my coding skills through suffering classes. Fortunately, I still managed to learn some really cool things from the computer graphics and game design class. These classes remind me why I want to learn programming in the first place: to make cool games.
My primary hobby is always going to be gaming. It is the fundamental reason to push me into the world of programming because I can make games with codes. Besides, I like to play tabletop wargames like Warhammer 40K and Warmachine series. Painting the miniatures for the wargames actually acts as the cornerstone for my art aspect. You can check out the pictures of my best painting work in the imperial gallery section. In addition, I like biking with my friends and playing soccer. I even took a soccer class during my undergraduate study at Pitt. I do not look like a pure gamer, right? Playing a musical instrument is the last major hobby of mine. Currently, I can play the flute and saxophone. A great way of showing off myself in my friends' parties.
This is an SDL game project created for my undergraduate level game class. It was a group project with ten students and I was responsible for creating wrapper functions to replace the SDL default rendering functions with OpenGL rendering methods so that we could render 3D objects into our 2D game.
For downloading the project's source code and the detailed documentation, please use this link:
This OpenGL project mainly focuses on the creation of random mazes and the solution to find the exit. It mimics the classic screen saver called Maze from Windows98. I implement the right hand rule to solve the maze. For a detailed description on the project and its source code, please check out this link:
My simple version of the famous Temple Run game with OpenGL. In this video I will talk about how I create an "infinite" terrain with a limited number of planes and how I implement a primitive but effective collision detection. For a detailed description of the project and the source code of the project, please click on the following link:
This OpenGL project is focusing on the application of a simple lighting model to enable basic lighting effect on 3D objects. You can dynamically change the positions of both the light source's and camera's. The highlighted part and 3D objects' shadows will be updated accordingly. For a detailed description on the project, please check out the Please_Read.txt file along with the source code of the project here:
This is an Unity3D game project I created within a game development group called pittGame4Health. https://pittgames4health.com
The SDK we were using for this project is called Wrld. https://www.wrld3d.com
My main responsibilities in this group project were to create smooth camera animation and the dynamic spawn of the portal objects when users were close to certain buildings. Only my work is shown and no download link can be provided because of non-disclosure agreement I signed with Pitt.
During the summer of 2018, I had an internship with EDDA Technology Company located in NJ. I was responsible for creating an AR training simulation software for surgeries by using Unity3D because it had a matured toolkit for HoloLens which was the designated AR device of the company. It was the first time for me to develop an AR project, and it felt different from creating games for PC because I needed to consider the recognition of real-world objects and hand gestures instead of simply messing up with objects in virtual worlds. For reference, this is the company's website: http://www.edda-tech.com/index.html
Unfortunately, because of the Non-disclosure Agreement, I signed for the internship, I could not record a video or screenshots to demonstrate the Unity project. All I can give is a brief description of what I did. If you look at the picture above, it is how the project looks like. All the Hololens are connected to each other, and all the images are shared synchronously among devices. Surgery students will use their fingers to represent the passing pins to reach the imaginary lesions. I created a module that can dynamically switch among different 3D human body models to simulate various surgery scenarios.
In addition, I coded the collision detection for each individual tissue and blood vessels of each 3D model scenarios'. This was the majority of my work because it was both challenging and time-consuming. For example, can you count how many blood vessels and little organs each 3D model has? On average, I had to deal with 20 sub-models for each body scenario. Furthermore, the collision detection was technically challenging because it was hard to locate the exact positions with users' fingers in the real world. Although Unity3D already had excellent collision boxes, I still spent a lot of time implementation my own detection.
The last project I want to show you guys is a little web game I developed in my spare time. The game is a simple version of connect 4. The reason why I do not directly put the game here is that it will consume a lot of resources on the server which means my personal website will be laggy if you run the game here. For the best gaming experience, please use Google Chrome. In order to not confuse the server, I modify the HTML extension into the txt extension. Simple change it back and run the Game!