Demo Reel

This video is a showcase summary of the work I have done in DigiPen Institute of Technology Singapore and out of school from 2011 to 2015.

Ether Lunu


Ether Lunu is a first person platformer shooter. In Ether Lunu, the protagonist uses his power called Ether to perform Sun Burst to get around the level, avoid traps and reach to the goal.​

Engine was built from the ground up in C++.


  • Set up the ground work for the Game Engine using C++ and DirectX. Also in charge of the physics engine (collision detection/response, raycasting).
  • Research and develop improvements to the Game Engine. Such as rendering optimization via frustum culling, collission detection optimization via hierarchical trivial rejection checks (Bounding sphere -> axis align bounding box -> obb) to prevent unnecessary calculations when they are not needed. And more accurate collider implementation via oriented bounding box and they perform collision detection using Separation Axis Theorem.
  • Play a part in the creation of the level editor by assisting in optimizing workflow of assets coming from the designers and transporting them into the game system through an XML interface.
  • Implementation of a simple AI system using finate state machine. This allows easy creation of agents' or traps' behaviour which has very simple mind of its own, and always react to state changes.

Learn More



XRUSH is an infinite runner game, set in distant future. The player navigate through the endless platform by moving left or right, and can also morph its color to trigger magical runes. The runes will give the player special ability if both are of the same color.

The game is created using Unity (C#) with graphical assets from the asset store.


  • Implementation of endless platform generator, with variable constraints and probability measures to enable dynamic yet fun levels
  • Implementation of robust object pooling system to handle the huge traffic of object creation and destruction as efficient as possible
  • Game logic mechanic and effects

Object Pooling


This Object Pooling is a robust and lightweight pooling system for Unity built for optimizing games that uses alot of objects over and over again.

This asset is created using Unity (C#).


Instantiate() and Destroy() are useful and necessary methods during gameplay, usually costing little cpu. However, when objects are created and destroyed in vast numbers per second, the CPU will need to work extra hard.

Object pooling is where you pre-instantiate all the objects you’ll need at any specific moment before gameplay — for instance, during a loading screen. Instead of creating new objects and destroying old ones during gameplay, your game reuses objects from a "pool".

This ability to recycle objects provide a huge boost to performance compared to the non-pooling method. Usually the general application usage is for managing bullets and particle effects.

To find out more on object pooling, you can visit raywenderlich's blog which perfectly explain what I'm doing here.

Learn More