Saturday, February 19, 2011

Refurbished and Repurposed

I've decided to repurpose this blog as a journal for my foray into game programming.

I've always loved video games and they have always been a big part of my life.  When I decided to to return to university after a brief stint as a sound engineer, my main motivation for doing computer science was to end up as a game programmer. I even dabbled in building a MMORPG in my second and third years.  However, at some point I took a different direction.  I don't really know why, probably a combination of factors: a lack of local jobs and not wanting to move state again, the idea of another industry being the industry that the best people work in (at least in Adelaide) and some sense that it was time for me to grow up and act like an adult; probably why I cut my hair and started wearing button up shirts.

It's just over 8 years since I graduated. I've never been short of work and I've had some great jobs with some great people. However, I still have a nagging regret when it comes to game programming.  I keep wondering what would have happened had I kept my sights on that goal and worked towards it. And most of all, game development is still something I really want to do.  Basically I don't want to be in the position 8 years from now where I'm wondering the same thing, only it would be even harder to do something about it.

So, this marks a turning point, my hair is long again and I prefer t-shirts.

To have any chance at a game development career, I need to learn game programming techniques, libraries and platforms, because at the moment, my game development knowledge is pretty minimal, I've spent all my time doing business/commercial development. It's not going to be easy or quick and I have a lot to learn, but really I have nothing to lose. I still need to work and make a living so I need something I can do in my spare time and with a plan that keeps me focussed. I'm going to put about 3 hours a week into building small tech demos or games that will teach me something about game programming. I'll also write a weekly blog post that outlines what I did, what I learnt and what I plan to do next week.  If I can stick to this I should learn a decent amount in a reasonable amount of time, but most importantly have a set of demos for a portfolio and a journal to go with it. And from there, we'll have to see.

Which brings me to the first little project.  I've spent a bit of time reading and thinking about where to start,  it does make sense to use Windows for the project initially though, even though I normally use a Mac and have an iPhone I could develop for, however, the games I would want to work on are PC or console games and most game jobs require C/C++ on Windows, so Windows just makes sense. I don't want to get overwhelmed and discouraged so starting reasonably small would be a good idea, which makes me think starting with XNA Game Studio is a good way to get my feet wet with XBox 360 and Windows development, rather than jumping into the deep-end with DirectX. Even if it is C# as opposed to C/C++, I'm not too worried about that just yet.

I'm going to start by developing a Breakout clone for Windows. This fits the reasonably small criteria but should cover a enough new areas that it should be interesting.  I expect to learn about at the least following:

  • Setup of development environment and building and running a Windows game.
  • Simple 2D graphics.
  • Simple UI components.
  • Simple 2D vector math, trigonometry and animation of the ball and paddle.
  • Timing of animation.
  • Keyboard input.
  • Collision detection.
  • Simple audio playback.
  • Simple particle effects.
I'll be storing all the code for the project in my github account. So if anyone wants to see how I'm progressing in terms of the code, check it out. (I'll post a link to the actual repository when I get it set up next week.

That's all for this week, next week I'll post about setting up the XNA Game Studio in Windows.

No comments: