Personal Projects

>

Fireworks (Hanabi port)

Sept. 2015 - Dec. 2015

I love playing a cooperative card game called Hanabi. However, it was not always possible for me to play with my friends in person, either due to distance or due to not having a set of the game lying around. To solve this issue, I decided to port the game to a web app that is accessible to all. The game is playable here. The main focus of the project is to create an web app with a delightful experience which was made possible with heavy UI planning, UX testing, optimizations and carefully placed, pixel perfect animations.

>

LoLCraft

Sept. 2014 - Present

I'm a very passionate League of Legends player and so I have decided to dedicate my next project to LoL (League of Legends). For those who play LoL on a regular basis, it can be observed that each and every League of Legends champion excel at at least one aspect and all champions were created and designed to fulfill certain roles. However, again and again, it has been proven that sometimes, the role that a champion excels the most at is not the role that they were designed to fulfill.

In the past some of the more notable examples of this include AP Master Yi, hurricane Kayle, AP Tristana and more recently AD Malzahar. Each play style proved to be extremely viable in all levels of play while some were regarded as so powerful, champions had to be promptly tweaked so that the game will remain balanced. It should be clear now that some champions can be successfully played outside their intended roles, the only question remains is what champions in which roles and what items to build in such a role. This is where my project LoLCraft comes into play.

LoLCraft is intended to be a theory craft tool that allows players to very accurately simulate a champion's strength at different stages of the game while using certain builds. This allows players to quickly test theoretical builds on champions without having to play a single game and as a result allows players to try a lot of builds in a very short period of time. Once a player believes that they have crafted a good build, they can then try it in a real game to make sure the build is as powerful as they thought it would be. This is way faster than the alternative, that is, trying new builds by testing each build in real games as each game generally alsts around 30 minutes.

Key features of this app will include:

  • Extremely high precision, in other words the stats you see in the app will be the stats you get in the game.
  • Stat modeling at every stage of the game. Allows players to see how their build performs early game, mid game and late game. Just because a build is really strong in it's completed form does not mean it is a good build, LoLCraft will allow users to check stats of the build at every stage of the game even with the build partially complete.
  • Build summary. LoLCraft will be able to analyze a build and highlight key strength and weaknesses of builds in comparison to staple builds and expected stats at different stages of the game. This will help players identify strength of their build which may more be obvious.

Below is a demo of the app in it's current state. Last updated 9/5/2014.

>

AnimatedExpandableListView

April. 2014

The AnimatedExpandableListView is an Android widget that is created as a replacement to the ExpandableListView widget. The key difference is that the AnimatedExpandableListView supports animations on expansion and collapse of groups without much (if any) effect on performance.

The project has been open sourced by me since I recognize that the ExpandableListView is a rather primitive widget and does not support very many manipulations and want to provide the widget for use to anyone who wants nice animations for their ExpandableListViews.

>

igo

April. 2014

igo is a Go app. For those who don't know what Go is, Go is a board game normally played on a 19 by 19 grid board. It is unlike chess in rules and gameplay but it is similar to chess in that it has a very deep strategy component. In many countries (such as China, Japan and Korea), Go can be played as a profession.

igo was made out of boredom on a road trip to LA from San Francisco (which took roughly 6 hours in one direction). It was made so that we could play go in the car. The development time for just human vs human programming took roughly 24 hours. However I later added a .sgf (Smart Game Format) parser/viewer so that I can view and review games on the go.

>

iwant

April. 2014

iwant is the result of a 36 hour hackathon project at LA Hacks. iwant is an app that is made to save people a lot of time when deciding where to eat by eliminating the need of choice. Simply enter a genre or if you are not sure, the type of meal (breakfast, lunch, dinner, etc) and iwant will take you to a good place.

iwant uses the Yelp API for results but is filtered/ranked using a custom heuristics that takes into account distance, hours, ratings, price and throws in a bit of luck to keep things interesting. The resulting chosen restaurant is then guaranteed to be good, cheap, open and nearby. Give it a try.

>

Division By Zero

Aug. 2013 - present

This is a tower defense game written for Android using Java and OpenGl ES 2.0. This was a resurrection of another project called "Sunk" which was the first game I had ever attempted to write for Android before I lost interest. Since I always wanted to make my own tower defense game, I decided to start from scratch once again, but complete the game this time. This game is currently still in development however you can still view the source and build/play it.

>

Jelly Boy

Aug. 2012

An Android puzzle game I wrote which was essentially a port of the same game written by a friend in ActionScript. The 99% game was written within 24 hours from scratch. The only part of the game that wasn't done from scratch were the level designs which is shared amongst the Flash version of the game and the Android version as an XML file.

This puzzle game was unlike any puzzle game I've played in the past and I thought it was very well done which was why I ported it to Android. You can play it for free from the Play Store. Link is below.

>

3D Terrain Generator

May 2012 - June 2012

This was largely an experimental project. I was trying to get better acquinted with 3D development and thus ended up making this thing. The application serves no other purpose then to generate an endless map using fractals. The project itself has it's source code based off of my other project, Progress: Legacy, and is written in C++ and DirectX.

The project spanned a total of one month and I soon decided not to pursue 3D game development alone, as I found myself spending way too much time with modeling and such and not enough time with actually writing code.

>

Progress: Legacy

Aug. 2012

Progress: Legacy is a 3D shoot-em-up game. The game was written with the intention of learning both C++ and DirectX at the same time. The project was a success in the learning aspect but the game was never completed since that was not the point. However, level one of this game is complete.

The name of this game actually came from a game that was developed as my final Grade 11 Computer Science project called Progress which was a 2D shoot-em-up game written in C#. However the game was not very well done and the source code was lost so Progress: Legacy was born, one year after the original game.

>

War: The Game

Nov. 2011 - Dec. 2011

This game is similar to games like Worms, Gunbound or Tanks. This game supports multiplayer online game so players can challenge others to games. The game front end is written as a Java Applet and the back end is done as a Java Servlet. This was my final project for Grade 12 Computer Science.

>

Breakout: Final

Oct. 2008 - Jan. 2009

This was one of my first programs that I had ever wrote. This project is written in VB and it was done over the course of about 4 month as my final project for a Grade 10 Computer Engineering course.

This game probably also marks the moment in my life when I realized what I wanted to spend my entire life doing. Since this game was so pivotal in my career, I decided to share it on my website even though the code is probably worthless and full of bad style. Nevertheless, had I never wrote this project, I might not be where I am today.