About Me
- I currently work as a mobile game developer for MobilityWare in Irvine, CA
- I have been programming since I was 11 (about 17 years ago), and have been making games for a lot of that time
- I love solving problems, especially ones that are based in logic and mathematics (which game developing provides plenty of)
- I
have lots of interests including but not limited to : Mathematics,
Physics, Astronomy, Photography, Technology, Rock Music, Rock
Balancing, and Science Fiction
- I live in Southern Orange County (where I grew up), with my wife and two sons
Games
Dots and Blocks
Summary
: This game started as an AI class project, to build a player for the
game dots and blocks using the minimax algorithm. There was a
tournament at the end of the quarter between 90 other AI's, and my AI
won! I decided to create a simple game out of it so that people could
actually play against it. This is the second game I made using
Javascript and HTML5, and I am really finding that it is a great way to
develop quick web-based games. It took very little time to port my Java
AI into Javascript.
Key Features :
- 5 difficulty levels from very easy to very hard. ("Very Hard" is the original implementation with a 5 second move limit)
- Selection of table size from 3 to 12 dots across
- Selection of first turn
- Undo last move button
Key Technologies : Javascript, HTML5
Click here
to play in browser
Sample source code : DotsAndBlocks.js (contains all the game code, not the AI player)
Momentus
Summary
: This game is a team project that won 2nd place in the IEEE GameSIG
intercollegiate computer game showcase in the spring of 2013 (it won for Best Space Game and Best Asteroid Game). I was one
of 3 programmers and focused mainly on gameplay, graphics, and physics.
I also helped design the game, and created the help screens. This game
was a great oppurtunity for me to learn how to use a 3rd party physics
engine (Box2D), and I think we made the right decision in using Box2D
since the realistic zero-g physics would have taken too much time
to program from scratch to enter our game into GameSIG. We paid extra
attention to retaining a level of realism to the physics, but obviously
certain aspects needed to be changed to make a functional game. There
are subtle things in the game that maybe wouldn't be noticed on a
first-play of the game (eg. the player's ship gains and loses mass
depending on how much fuel/resources it currently carries, which
effects the ship's momentum and acceleration).
Key Features :
- Realistic simulation of momentum, acceleration, and collision in zero gravity
- Procedurally and randomly generated asteroids, asteroid field layouts, and background stars
- Unique grappling hook mechanic for changing direction and stopping without using any fuel
- Acquire resources from asteroids and dock with home planet to unload, refuel, and repair your ship
- Currently you can play a single mission that requires you to collect specific amounts of the various resources
- Dynamic music transitions based on player's distance from home planet
Key Technologies : C++, SFML, Box2D, Visual C++
Download : Momentus
Sample source code : Mine.cpp (implementation of the class representing one of the dangerous floating mines)
Video : Gameplay video on YouTube
"Teaching Science with Video Games"
Summary : This is an undergraduate research project which is part of
the Multidisciplinary Design Program (MDP) at the University of
California, Irvine. The goal of the project is to demonstrate
scientific concepts using the medium of video games. I am one of two
computer science undergrad's on the project (the third person on our
team is a chemical engineering student). We decided to produce several
smaller games which could each demonstrate a different idea or concept.
Key Technologies : Java, Eclipse, Javascript, HTML5
For more information (and to play the games) visit the "Teaching Science with Video Games" website
Oh, Bo!
Summary
: This was a team project (about 10 people) developed in
UCI's Video Game Development Club. It is a side-scrolling platformer
with 6 levels and a boss battle. I was the lead programmer on the
project, as well as doing game & level design. The
game won
2nd place in the week-long competition to build a game from scratch.
The version of the game here is the result of a further two months of
work refining and improving upon the original game. While there were
quite a few programmers on the project, very few were capable in C++.
As a result, most (90 - 95 %) of the code was written by me,
but
there were some important contributions from other programmers.
Key Features :
- Side-scrolling platformer written in C++
- 6 levels, 1 boss stage
- Player multiplier / drunkeness gauge
- Visual variable drunk effect
- 4 enemy types (some with sub-types), 3-stage boss battle
- Player and enemy projectiles
Key Technologies : C++, SDL, Visual C++
Download : Oh, Bo!
Click here
to view on IndieDB (gameplay video located here as well)
Sample source code : Projectile.cpp
(implementation of class representing player & enemy
projectiles)
(Circular) Breakout
Summary
: This game was created out of curiosity as to what a
breakout game would be like if it was wrapped in a circle. The game
features ball english, multiple brick types, powerups, mouse-driven
control, and I
also created a level editor. This was my first game developed using
Java's 2D graphics exclusively. Game is about 75% completed,
I'm not sure if I will come back to finish it at some point.
Key Technologies : Java, Java 2D API, Swing(for level editor)
Click here
to play in browser
Sample source code : Brick.java
(represents one brick in the game)
Yahtzee
Summary
: This was a Yahtzee game that allowed 1 - 4 players per
game, and kept track of detailed statistics for each player.
Key Technologies : Java, Swing, Netbeans
Download : Yahtzee
Sample source code : Dice.java
(Class representing the array of 5 dice)
Minesweeper Clone
Summary
: This was a pretty straightforward clone of Microsoft's
Minesweeper, with a slightly improved custom table selection. The
purpose of the project was to attain a better grasp on Java in general,
and to learn how to use Swing components to make a GUI program.
Key Technologies : Java, Swing, Netbeans
Download : Minesweeper
Sample source code : MineTable.java
(the "model" class of the minesweeper game)
Software
Raytracer 2.0
Summary
: The first version of this project was completed in 2000, I recently
picked it up again and made quite a few modifications and improvements.
It was a very interesting experience to work on code that I had written
twelve years
prior. I was able to decrease the rendering times quite substantially
by adding more optimizations to the code, and especially by utilizing
multiple threads. The render times are now anywhere from 80 to 95 %
faster than the first version (on a CPU with 4 cores).
Key Features :
- Types of objects : spheres, planes, triangles, and quads
- Types of lights : point, directional
- Lighting : Phong (diffuse & specular), reflections,
transparency
- Entire scene and render settings are configurable from a
.xml file
- SRGB conversion, photo-like exposure control, and
antialiasing (2x2 and 4x4)
- Multi-threaded processing for significant speed increases
on multiple-core machines
Key Technologies : C++, SDL
Download : Raytracer
Sample source code : raytrace.cpp
(main program file, all the ray-tracing done here)
RandomFileCopy
Summary
: Small GUI program that was developed out of a need for a program that
would copy random files (music, photos, videos, etc...) from one
location to a destination directory. It is very configurable with the
types of files, file sizes, number of files, and other options. Great
for filling up available space on a flash drive with random pictures or
music.
Key Technologies : Java, Swing, Netbeans
Download : RandomFileCopy
Sample source code : CopyEngine.java
(all of the copying logic is done here)
Flatricide Pulgamitude