About Me


   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 :
Key Technologies : Javascript, HTML5

Click here to play in browser

Sample source code : DotsAndBlocks.js (contains all the game code, not the AI player)

Dots and Blocks Screenshot


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 :
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

Momentus screenshot 1

    "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

Maxwell's Demon Screenshot    Leukocytes Screenshot

DNA Game Screenshot

    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 :
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)

Oh, Bo! screenshot

Oh, Bo! screenshot

    (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)

Breakout screenshot     Breakout level editor screenshot


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)

 Yahtzee screenshot     Yahtzee screenshot

Yahtzee screenshot

    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)

Minesweeper screenshot     Minesweeper screenshot     Minesweeper screenshot


    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 :
Key Technologies : C++, SDL

Download : Raytracer

Sample source code : raytrace.cpp (main program file, all the ray-tracing done here)

Raytracer screenshot    Raytracer screenshot

Raytracer screenshot


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)

RandomFileCopy screenshot

Flatricide Pulgamitude


Joel G. Duggan
(949) 510 - 4797

My portrait