Below are a number of projects that I have worked on, alone or part of a team, and both as part of a job and in my free time.
When: May 2009 - present
Lines of Code: 11,000
Role: Sole Developer (so far)
Contributions: Design, Implementation, Testing, and Debugging of entire program. End user documentation.
Technology Used: Java, Swing, OpenGL (JOGL), SVN Version Control, SourceForge platform. Inkscape, Photoshop, and Paint.NET for graphics and icons.
Description: The Forge is a 3D subdivision modeler, written in Java, and inspired by Wings3D. Version 1.0 is nearing completion, and plans for future versions are moving forward as well. Features of the program include a small set of primitives, a variety of modifiers that allow you to produce virtually any model you want, color based materials (no texturing yet), and importing and exporting from the OBJ file format, as well as a native file format. The program uses the winged-edge data structure, a complicated and sophisticated data structure that allows for a great deal of power, because adjacency of faces, edges, and vertices can easily be calculated.
Challenges: In addition to the common challenges that any software will face, this project required working with the winged-edge data structure. The data structure gives you a great deal of power in terms of what the program can do with a model, but is a challenge to developers who are working on it. Any change to the model requires strict compliance with the data structure. To deal with this challenge, I implemented a model validator that could check the current state of a model and determine if the winged-edge data structure was still intact, and if not, where the problem lied.
This program also requires skill in the entire cycle of software development, from determining requirements, to design, through coding and testing, to deployment and user manuals.
Download: This project can currently be downloaded on our SourceForge page: https://sourceforge.net/projects/theforge/
When: September 2006 - Present
Lines of Code: 80,000
Contributions: Design and Implementation, Testing and Debugging, Created End User Documentation
Technology Used: Java, Swing, Eclipse, CVS, various libraries including pcap, Hibernate, and JDBC (PostGRE SQL and MySQL)
Description: AdviseAid is a fairly advanced visualization prototyping tool. It was initially designed for network traffic data, but has since been expanded and generalized to nearly all types of data, if configured correctly. My contributions to the project cover virtually every aspect of the project, including implementing visualization techniques created by others, designing and implementing my own visualization techniques, adding support for a variety of input types, including CSV files, text files, and connecting to databases directly with JDBC or through Hibernate. During the course of the project, I have also redesigned the GUI for the entire program to give it a more professional appearance, created an applet version of the application, developed a plugin system, and created user documentation for the program.
Challenges: The biggest challenge of this project was that the goals and objectives of the program were constantly in motion. No one knew what the next step of development was until the current step had been completed and we could see how it functioned. We quickly learned that we needed to design every aspect of our architecture in such a way that it could be easily changed at a moment's notice.
Download: Not currently available for public download.
When: February 2009 - Present
Lines of Code: 8,000
Role: Sole Developer
Technology Used: C#, Visual C# Express 2008
Description: While a basic ray tracing algorithm is quite simple and elegant, ray tracing requires a high level of knowledge of graphics, physics, and math, as well as a good understanding of efficient data structures. This is a fairly simple ray tracer that I've recently started working on for a little while now. I've added in support for all of the basic lighting forms (ambient, diffuse, and specular), shadows, reflection, refraction, and anti-aliasing, soft shadows, and depth of field, with support for infinite planes, spheres, cylinders, cubes, triangles, and 3D models, as well as support for performing affine transforms on any of the primitives.
Challenges: This project has faced a number of big challenges. There is not a lot of good information on the Internet about ray tracing, and so determining appropriate algorithms has been a challenge, as the solutions often require me to dig through various websites and text books, and often create my own algorithms. Additionally, performance is a constant battle in any ray tracer, and this one has been no exception. A poorly implemented ray tracer can take minutes or hours for even a simple scene, and I've been trying to keep mine down on the order of a few seconds per render, which requires effective use of acceleration data structures.
Download: I don't have a place that you can download this project yet, but I have lots of interesting information about it on my ray tracer page.
RB Whitaker's Wiki (this site)
When: November 2007 - Present
Size: Nearly 200 pages and over 70 complete tutorials
Contributions: Sole Developer. Design and creation of pages and graphics content
Technology Used: Wikidot framework, HTML, CSS, Inkscape
Description: This website. Aside from the underlying Wikidot framework, I created the site in its entirety, including all content and art assets. The core of the site is my XNA tutorials, though I also have created a collection of other things, including some simple and free software applications, various content, and a couple of Java tutorials. Additionally, the site contains a forum, and other methods of getting feedback from users to improve the site. The site, initially created for the XNA Special Interest Group, has grown and become quite popular, and helped thousands of people learn XNA. I currently am getting about 13,000 page loads and 3,000 visitors per month, and it continues to grow.
Challenges: By far the biggest challenge of this site is trying to get an understanding of what beginning game programmers need to get going, and determining the best way to introduce them to it. The development of this site has also required that I learn several new software tools and languages, including CSS. It has also required some artistic skill, which, while I don't consider myself an artist, is something that I am actively trying to improve in.
Download: You're already there! If you're interested in exploring, the XNA Tutorials page is likely going to be the most interesting, as it teaches game development with XNA from the ground up. Also, see the side bar and top menu for other interesting features.
When: December 2008
Lines of Code: 4,200
Role: Sole Developer
Contributions: Game engine design and implementation, rendering, 3D modeling, 2D textures and sprite creation.
Technology Used: XNA, C#, Visual C# Express 2008, Wings3D, Inkscape, HLSL
Description: An updated clone of the original Asteroids game. The entire game was created within a day, including content creation. Background art, music, and sound effects were acquired from on-line from free/creative commons sites so that the game could be marketable. Beyond the basic Asteroids functionality, I added in a bonus system to make the game more fun to play.
Challenges: The biggest challenge with this game was the eight hour deadline I had. Decisions needed to be made quickly, the design needed to be done correctly to save time in implementation and testing, and playability and the "fun factor" needed to have a high priority from start to finish to create an interesting game.
Download: This file is too big to upload to this website (46 MB), so if you want a copy, email me and I'll get you a copy.