Why Crawl When You Can Walk?

So last night I found myself totally energized and enthused, ready to start the process of demystifying the innards of DirectX 10. Of course it is now late into the evening, I’m sitting in my totally tricked out leather chair that is hugging me the way a momma bear hugs her cubs.  A Detroit Lions night-light is cascading a soft blue hue off of the wall behind me, indicating that this is my time, the part of the evening which I do with as I please.

After a few hours, I began to grow tired of catching up with friends via social media and perusing my favorite technology bookmarks.  Admittedly, I’m super tired by now as the past events of the day and homework have done me in, the cool air from the A/C is making me want to shut everything down and crash for the night.  However, I have commitments to keep, goals to attain and a self-imposed mountain of documentation to wade through…it is obvious that I am stalling.

Anyway, I begin to realize that the initial tutorials in the DirectX samples were at best grossly beginner level.  Seriously, very beginner and it was this realization that started to make me even sleepier.

Usually, when I start to cover material or attempt to review documentation I know well enough, my eyes will instantly start to glaze over the information, my brain begins to sound the alarm and fights the idea of attempting to retain any of it.  For example, the creation of a Win32 window was tutorial #0…OMG, where is the hot fork with the blunt tips so I can jab my eyes out in order to stay awake?  Likewise, the next couple of tutorials were similar in comparison, but I digress and realized the need for them…I was tired.

Furthermore, I found myself getting side tracked, drifting mentally and thinking of other ways to approach my goals, the highlighter markers strewn about my desk were beginning to become interesting.  In other words, I was slipping into a state where I was going back to the initial planning phase for achieving the mission.  Granted, I already have a plan in place, but I continued to wrestle with why should I crawl before walking.  In the end the answer was simple, because I said I would.

At this point I’m trying to come up with a presentation format that will prove beneficial to a newbie who is venturing out for the first time with DirectX.  My goal definitely is not to write a set of DirectX tutorials, but to highlight the salient points that 1.) A newbie necessarily would not know to focus on.  and  2.) The “lazy coder” wants made available to him/her without having to actually hunt for it.  In short, identifying an audience to address will help determine the blue print necessary to present my findings.

I’m sure that this post highlights the fact I am ready to jump head first into all the cool features of the API.  With my hair on fire, I am fighting the urge to get immersed into reverse engineering the tutorials out-of-order just to suit my desires.

Consequently, I don’t want to miss the forest for trees – I have plenty of time before I graduate from DeVry, so much to learn and lots of room for personal growth.  Having said all that I have, my knee burns will reveal that I am crawling, so if you happen to see my mom, please remind her that my bottle is on the table…I cant reach it.

In Pursuit of DirectX 10

I’ve been working in the I.T. field professionally for over a decade, but my desire has always been to work in the graphics part of the industry, mainly games. My first exposure to graphics programming was circa 1998, armed with a few books that attempted to covered the DirectX 6 API.  Overtime I begin to dabble all over the place, learning what I could about game programming in general, picking up bits and pieces here and there and absorbing whatever I could find.

Of course, as with most hobby programmers, I had my stints with OpenGL and SDL, but I always seemed to gravitate back to DirectX.  I suppose a few reasons for my love affair with DirectX was mainly due to marketing of course, the occasional big update and for DirectX just having a complete kit for someone wanting to make games  i.e. audio, networking, etc, not to mention, there were tons of books at that time which covered the API.

Now after all these years I’ve come to a point where I desire to specialize,  the rigours of the hobby gaming scene has brought me to the realization that my passion is truly in graphics programming.  Sure, most of us who embark in this arena want to make games, who doesn’t? That in itself was the main reason I started way back when.  Truth be told, the games I’ve developed although small in comparison to most has helped me reach my conclusion validating my passion.  Programming each piece of the puzzle and getting enough exposure on a small-scale helped solidify what I did not want to code, professionally.  Don’t get me wrong, I’m not naïve enough to think I had come near to scratching the surface on what takes place with AAA teams but I know enough to realize programming for audio, networking, A.I., etc were not going to be my first choices.

Over the last few years, I’ve developed the majority of my tech demos and small games using DirectX 9 but had never really thought about truly exploring the depths of the API, digging deep and truly mastering its contents.  I’d more or less grab a book, print out a few articles and tutorials in order to glean the necessary information to satisfy whatever project I was working on.  It has been only recently that I have begun to understand one should be proficient in at least one area,  this may give you a fighting chance at breaking into this industry.  Personally, I prefer not to attempt to give it a go as a “generalist,”  I think I have that position down cold after a decade.

So now I find myself starting over as it were, as if I climbed into a time machine and dialed up 1998, here we go again, but this time I know what I want … plan in hand.

Venturing forward, I have a few goals in mind such as developing a robust engine/framework. An engine that will allow for me to concentrate on the development of simulations and small game demos.  The most immediate goal is of course to become a power user of the DirectX API.  Upon achieving this status, I feel that later on I will position myself with the luxury of focusing solely on industry best practices, patterns and algorithms, all while having the solid knowledge of one API under my belt.

Sure, the argument could be made that OpenGL would be the way to go as DirectX is limiting me to one platform. Honestly, I’m not too much worried about my decision at this point, it’s just an API.  At this stage it is all about focus and motivation, what I like and what I feels comfortable and familiar.

My initial research will revolve around the June 2010 DirectX SDK, version 9.29.1962 of which was published on 6/7/2010.  I plan on going through and reverse engineering each tutorial, researching further whatever points of interest the tutorial covers when applicable.  After the completion of each tutorial,  I’ll write up a technical document in the form of a postmortem, hopefully the information provided could prove useful to someone else.

Pursuing the DirectX 10 API is only the first rung in a series of several steps towards my journey into specializing in graphics programming.

DirectX Developer Center http://msdn.microsoft.com/en-us/directx/
DirectX SDK June Kit http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812