Other Projects

This page goes over a few critical programming assignments that I have done over the years that are not directly involved in the production of a particular game.

ROW SHAM BOW ANALYTICS SOFTWARE:

During my 2-month internship at Row Sham Bow, I was called on to do two primary things: bug-fix Woodland Heroes and work on the analytics back end.  This back end is used by Woodland Heroes and other sorts of online games as a means to retrieve a MySQL of every transaction that a client makes with the host server.  Some examples include:

* Begin session (log in, create a 16-digit hex string used to denote this user's session)
* End session (log out, end 16-digit hex session string)
* Begin purchase (usually an exchange between in-game currency/items...like paying gold for a building or paying energy to mine a resource or make the "doobers" pop out)
* End Purchase (each transaction has a 16-digit hex string too, use it to denote the transaction is fulfilled)
* Begin quest (complete a series of events/objectives to get additional items/currency as well as more quests)
* End quest (quest was successful, mark it as complete in the user's record
* Get/Set age/birthday/country/region/user's 16-digit unique ID (obvious)
* Get/Set multivariate (A-B testing for certain players meant to "research" which game version is better)
* Et cetera

Knowing about this back end made working on Woodland Heroes easier.  When certain Facebook users are having trouble, look up that FB's database ID, find their transactions for the play session(s) in question, and begin researching the cause of the bug.

Besides Woodland Heroes, these are two major things I accomplished for the analytics team:

* Worked on a PHP data integrity "unit test."  First, create a test database in Row Sham Bow's "master" MySQL server (avoid actual databases for safety reasons). Created two PHP files--send and receive.  Run send.php to create a phony user ID, throw together a couple of transactions, and send it away.  Wait at least a few minutes (maybe longer if the analytics team was working on the DB as well) for the phony user data to filter through a couple of other databases before being placed on the test DB on the RSB server.  Then run receive.php and confirm that the database gets the right information.  If not, debug print what went wrong.  Since this was all done on a Mac, it's best to tail the logs in the Mac Terminal to debug the PHP whilst you wait.

* The analytics team once created a test app for making these back end calls through ActionScript.  On the other hand, I had to create a similar test app in Objective-C.  It's not a very pleasant language but it's never a  bad time to learn something new.  Essentially what this app does is create a reverse tokenized MySQL string and uses it in a URL call to the first server to receive these back end transactions.  This small app in Xcode basically relays a few simple type of messages and for the most part, it works (didn't get a whole lot of commentary from the team).


FIEA GAME ENGINE:

In the second semester at FIEA, programmers suddenly become a lot more busy.  Why?  Paul the programming instructor sends you to C++ boot camp.  The course involves creating a Visual Studio 2010 project and over time recreating the features of the standard template library.  This project is completely academic since we made plenty of mistakes (we were going at such a rapid pace!) but learned a heck of a lot of programming in the process.  These are the following aspects of the FIEA Game Engine we had to implement with CXX unit tests:

* Set up the Visual Studio project to run in OpenGL and DirectX
* Linked lists
* Stacks
* Vectors
* Datums
* Scopes
* RTTI
* Factories
* Macros
* Parsing XML into objects
* Events
* Actions
* Reactions
* Concluded with a single game made by all the programmers using one of our game engines.  It was called Blinky the Time Traveling Man or BTT Man and is basically a bare bones Mega Man game.  Each of us had a slight role in it so I'm not totally responsible for how goofy it is.  After that semester, you'd probably phone in the last few assignments too.


C# TOOLS:

Nearing the end of the second semester, we had to switch over to C# for a few weeks.  We made two tools in C# to do these rudimentary things that may help in game design some day:

* XML reader and writer in C#.  Read an existing file, add new parameters to it, and use C#'s existing XML methods to print out a whole new file.

* Create a Windows application in C# that is able to receive and send messages (massive strings that need to be tokenized) through a TCP connection to other identical apps in the same network.  Client apps send messages to the multi-threaded server (one thread per client) which then sends that message to all other clients.  Clients may also subscribe to certain types of messages (messages that begin with a certain string) and hosts should skip those that are not subscribed to the current type.  This assignment would be infinitely helpful in setting up the Playtest tool used in Battle Fortress Tortoise which allows play testers to send information about play sessions to a MySQL database for further examination.


FIEA GAME ENGINE PART 2:

In the third semester at FIEA, things cooled off as Paul lightened the work load.  The first half of the semester involved walking us through FX Composer on how to create certain types of common shaders: point light, spot light, blinn-phong, skybox, etc.  But that's not all.  We had to create a second Visual Studio project and load it up with C++ code of the following features:

* Windows application startup code
* Message pump
* Query performance counter for most precise timing
* Component container--mouse and keyboard
* Wrapper to DirectX functionality
* Draw a grid
* Draw a triangle
* Use keyboard and mouse input to move the camera & objects around the screen
* Draw a Maya text format model on the grid, make it movable
* Apply each of those shaders to the model and toggle through each using the space key
* Add a light object to the scene, make that movable too

 Pic 1, default view (the blue thing's name is "Loopy")

Pic 2, demonstrating spot light and light rotation

Pic 3, demonstrating Skybox


SEINFELD DATABASE:

At my undergrad, I didn't get a computer science degree with an emphasis on information systems for nothing.  In a senior database class, one assignment was to design a database scheme for whatever you wanted.  Okay, so I decided to make a database about the Seinfeld TV show.  Completed the schema as seen below (click on pic to enlarge), complete with a glossary, description, logical model, and a bunch of MySQL statements to test it.  To top it off, when I presented my work to class, I gave a standup routine on computer science and databases (people actually laughed too).  I cannot lie, I really did this although I will probably never be able to do it again (sorry).



RACING GAME PITCH:

Not really programming but close enough.  Here I am pitching the idea for a racing game here at FIEA!  People like the presentation but it didn't go through to the next round (Top 10) because racing games aren't that popular...  Battle Fortress Tortoise was one of the games pitched in this format and it made it to the Top 3 of capstone games for Cohort 8.