Welcome to my first real post in what I hope will become an inspiring journey of progress through the morass that is game development. Or, at the very least, a somewhat entertaining journey through the morass that is procrastination. In any case, let's run through the basics:
Who am I?
My name is Matt Billock. I live in Chicagoland in Illinois, I spend my days writing code for slot machines, and my nights as a graduate student at DePaul University, finishing up a master's degree in Computer Graphics and Animation. I am not a great coder, but I try. I've always wanted to work in games, and have taken every opportunity that's come at me to learn how to make games. The problem, however, was that starting in the early days I had an unhealthy focus on the graphics side of things, being more concerned with bringing up a window and drawing pretty pictures than actual functionality. I'm hoping to change that over time.
What am I working on
At the moment, I've embarked on a quest to create a quasi-complete game framework. I'm not thinking anything insanely huge like torque or ogre, but more something that I can use and combine into my own side projects and games. As I work on this, I'll be steering the project towards a simple driving game centered on pizza delivery, but that focus won't come for several more months, at least. I still have a significant amount of work to do on the basic engine architecture, not to mention needing some actual focus in terms of targeted API and system. For the moment, though, I'm doing everything in C++, using OpenGL, targeting the PC realm. Over time, as my experience grows, this may change (most notably to DirectX and D3D), but for the time being I'll stick to what I know.
What am I starting with?
I'm starting with a set of code that, at first glance, was an unruly warren of methods and classes, with a heavy approach on the procedural side. Below is a screenshot from the first thing that I wrote using some of this code:
Adventures in Evil Stick Land
As I have matured as a coder, I've moved far beyond the coding skills demonstrated by the fairly-simple 3d RPG shown above, but I still look back with both pride and fondness on this code, as it was the first 3D project I completed on my own. It is, however, long overdue for an overhaul.
As time has elapsed, the code base has evolved. I spent about two years working on other stuff, mostly due to the rigors of my Master's, but around last year I got the opportunity to pull out that old code base, dust it off, and give it another go. This was thanks to one of my more recent classes, which was focused on animation. I had the opportunity to add a bit more object orientation to this new code, as well as incorporate a simplistic mesh structure and a 3ds model loader. The code was still kind of ugly, due to the effort I put in for the assignment, but the result was all that mattered. For that project I implemented a helicopter simulator in C++, using fake physics and allowing for joystick input.
screenshot of helicopter simulator pending, need to locate a good screenshot
Overall, while technically lightyears ahead of the original code for the 3d RPG, this simulator still suffered from Really Ugly Syndrome, or RUS for short. I spent some time working on it a bit over the next few months, but without the impetus of a project there wasn't as much motivation as I would have liked. I was able to make a lot of improvements, though - especially to the model loader which, in the helicopter simulator, was unable to load materials or models with multiple objects successfully.
The next project I worked on helped me to grow the code base by leaps and bounds. It was for a seminar course that was focused on advanced lighting, but otherwise was wide open in terms of work target. I partnered up with a fellow classmate, forced my burgeoning code base on him, taught him how to work with it, and we pounded out some good stuff. See below:
From Dusk 'til Dawn
This is a day-night cycle simulator, with moving shadows and transitioning light and sky. The goal was to do it in real-time, with a target FPS of 32 (which we hit on the demo machine - the above is from my significantly underpowered laptop). It's written in Visual Studio 2005, so it includes the .NET framework (only because I can't get the IDE to not compile the framework in), and uses GLUT for window management. It's from this point that I am starting, working on making the code as abstract as possible.
I understand that there are already dozens of projects on the web doing what I hope to do, and many of them are much better than I can ever hope to make mine. That won't stop me from doing it anyway. The end goal of all of this is to make myself a better game developer, and if reinventing the wheel does it, then so be it. If all else fails, I'll still have a pretty hefty code base to show off in interviews and the like.
Where am I headed now?
My current task is to decouple all of the API-specific stuff from the general interface, making it a more object-oriented kind of environment. And let me tell you - there are some really ugly hacks necessary to use vanilla GLUT in an object-oriented environment. The current class I'm taking (my last, w00t!) is another seminar course with a final project, based around real-time optimizations and shader programming - for the next three months or so, it'll be my goal to incorporate the stuff I learn in this class into my code base, and hopefully do it in such a manner as to not make it overly challenging to abstract the code base to DirectX or to remove the GLUT code. Time will tell how successful I'll be, but you can be sure I'll do my best to post my results here for accountability.
Oh, and in case you're wondering, I'm hoping to make the pizza delivery game be my final project for this course. I don't envision it being complex enough (in terms of graphics requirements) to meet the requirements, nor do I delude myself into thinking I can finish the sheer amount of work necessary for that undertaking, but I do plan on moving the code base closer to this end result through modification of the existing day-night simulator, which I will be using as a test app for my framework for the time being.
In any case, I'm out for now.