Fall in Plano

A picture I took a few months back when I used to live in Plano, Texas.
Neutron Star
As I wait patiently for work to begin, I’ve been noodling around with 3D visuals. I have always been intrigued by the beauty of space, so I tried to model a scene based on my conception of a neutron star. The video above shows a pulsating neutron star that glows brighter as it grows.
All the art assets in the simulation are procedurally generated. The light rays are rendered by sampling a 2D Perlin noise function. The function uses the angle and time as the 2D parameters to get the height of the ray. The time parameter causes the light rays to animate naturally. The motion of the torus is generated by rotating the object by its x and y-axis.
The visualization is programmed in C++ using the Cinder library. Music by Newton Faulkner.
[ Download | Screenshot ]
Zen Galaxy
Lately, I’ve been mega-engulfed in simulating flocking behavior using the Boids algorithm. I’ve implemented it before, but this time, I wanted to take it to the next level by adding a trailing ribbon system that caches the previous positions of the boids and renders them out as connected line segments.
The positioning of the boids not only follow traditional flocking rules (separation, alignment, cohesion) but are also influenced by pseudo-random vectors provided by a 3D Perlin noise function. Adding Perlin noise gives the boids real-life “emergent” behavior as they swarm and swirl in random directions. The boids also have a tendency to lean towards the origin so that the boid simulation stays confined within a volume.
The cool blue geometry in the center is simply a triangle fan (GL_TRIANGLE_FAN) that uses the positions of the boids as its vertices. The vertices are offset by the center of the boids so that the object continually stays in the origin of the 3D system.
The camera is implemented using a mass-spring physics system. I wanted the camera to continuously follow the boids and point towards its center. However, I didn’t want the camera to move around erratically and make the viewer nauseous. Adding this mass-spring system allowed for smooth camera movement while following the flocking system nicely.
The simulation was coded in C++ using the awesome Cinder library. Music by Toe.
[ Download (.exe) ]
Conway’s Game of Life in 3D
In an effort to bring the classical Conway’s Game of Life in to the 3D realm, I have coded this sample 3D application in C++. This was also an excuse for me to check out the popular C++ library, Cinder. Great library.
Basically, what’s going on is you apply the traditional cellular automata rules in 3D space. That is, instead of checking the surrounding 8 neighbors like you do in 2D space, you check the 26 neighbors in 3D space. Doing so gives you the results above.
[ Download (.exe) ]
Introducing: Sun God

Over this past weekend, I’ve participated in the Global Game Jam 2011 event hosted at USC. Global Game Jam is an annual event where aspiring game makers from all walks of life congregate together to create a game in 48 hours.
The game we produced was called Sun God. In this game, you play as an omnipotent God which controls the weather in order to prevent the militant vegetarians from consuming the island’s endangered plants. The theme of this year’s Global Game Jam was “extinction”, and we felt that the mechanics and art direction of Sun God supported the theme quite well. However, there is no end-state of the game; basically the goal is to survive as long as possible.

The game was developed by Team Sol Train, which consisted of five people: two programmers and three artists. My role in the team was the lead programmer, game designer and sound designer of our game.
I truly believe that we did an incredible job scoping the game to be completed and polished in 48 hours. The problem that plagued many other teams was that they were too ambitious and thus overscoped their project. However, we were able to build mechanics that were relatively easy to program and test. We also allocated several hours for “polishing”, which consisted of playtesting and balancing the game.
All in all, I think we developed an addictive game that captured the deep human desire for omnipotence and purification. We did this by introducing chaos management, a mechanic that is extremely popular in many genres. The only difficulty was being able to balance the game so that the difficulty curve was inline with the player’s increasing skill level. After several playtests and feedback from our testers, we were able to respond and balance the game accordingly (although I would admit, the game still seems a bit hard).
Overall, it was incredibly fun and definitely an invaluable experience to be remembered. I hope yall enjoy the game!
[ Play | Official Entry ]
New Android App: Aquatic Pixels

Well, graduate school is finally over and now I’ve been spending most of my time deciding what I should do next. In the mean time, I’ve been noodling around with mobile development on the Android platform.
This is my first attempt at coding an Android app, which I named Aquatic Pixels. Aquatic Pixels is basically a non-interactive screen-saver that depicts an aquarium in pixel art. The art was borrowed from my other game, Between the Devil and the Deep Blue Sea, and ported into this underwater screen-saver. Above is the app running on the Galaxy tab. This application is built on top of the AndEngine framework and will run on any device that has Android OS version 2.2 or above.
Currently, there is no interactivity with the scene. However, I plan to add updates which allow the players to interact with the scene. Perhaps, I might even develop some simple progression mechanics. Stay tuned!
To download, search for “Aquatic Pixels” on your Android Market app or go directly there. If you have a QR scanner, you can simply scan the image below with your device:
New Underwater Theme Song!

I am very happy to present to you the new theme song for the underwater scene of my flash game, Between the Devil and the Deep Blue Sea. The song comes from the creative mind of Brandon Day, who is the musical composer for all the tracks in the game.
I apologize for not having made much progress in the past few weeks. I’ve been busy wrapping up the final weeks of grad school. But I do plan to get back in to full production once all the chaos has settled.
The screenshot above shows two types of the enemies that you can encounter in the underwater environment. I plan to have a total of 14 types of underwater enemies. Each creature presents a different strategic challenge to the player. I hope that by varying the features of each enemy, that it will provide meaningful choices for the player to make in order to progress through the level.
So stay tuned for some updates! I plan to start coding up some enemies very soon.






