Followers

Monday, January 4, 2010

A New Year's Resolution

Well, it's the beginning of a New Year and the start of a new decade.

One of my resolutions this year is to make regular entries into my blog. Most of my past blogs have been about my entry into the game industry. I have thought a lot about what kind of content I wanted to move forward with. Should I share my genius insights into game programming? Rant about the projects I am working on? Or continue sharing my roller-coaster ride through the game development world?

There is a plethora of information out there about game programming techniques, and people far more qualified than I to write about them. So, although I may share a trick or two as I go along, programming will not be my main focus. Instead, I will continue to deal with the basics: how to prepare for or break into the game industry, basics on success in this field, and occasionally a new programming trick I that has helped me.

So, here's to a great new year. Thanks to all of you (yes, all 5 of you!) who have followed my blog and left feedback. As always, feel free to post questions or even suggest topics that you would like me to cover.

SO, what am I working on anyway?

I am currently working on a project whose name I cannot disclose. I can mention that it is being co-developed for the iPhone and PC, and possibly the Mac, and that it is a 2D retro platforming shooter. I think it will be great fun and hope you'll all pick it up when it is released. One of the big challenges of this project has been learning a whole new platform of skills. This is my first project on the iPhone, and my first project to ever use OpenGL. As you probably know, you must use a Mac to develop for the iPhone, and this is also the first real work I have done on a Mac. In addition, the iPhone uses a variant of C/C++ known as Objective C, and I have never used objective C. Finally, I have had to learn how to use the in-house game engine that we are using to accomplish all of this. In total, I have had to learn FIVE new technologies for this project: Mac Leopard, OpenGL, Objective-C, XCode (the development tool for the iPHone), and the new game engine.

This underscores my first point of the year for those who may be trying to break into the game industry: FLEXIBILITY.

No matter what your ambitions (programming, art, design), the tools of the trade are constantly changing. There is a dichotomy between the need to generalize and the need to specialize, and it may be difficult to know exactly how to balance these two extremes. For example, I often get questions about which programming language to focus on from those who are interested in game programming. The answer depends on what type of game development you are interested in: AAA titles? Web based? Mobile gaming? I'll cover this question in more detail in a future blog. The important idea is that two years ago I would have never told someone they should brush up on their Mac/Xcode/Objective C skills because at that point most of this technology didn't even exist (or at least, wasn't being widely used for game development).

Being in the game industry (as with many technology careers) means you must certainly specialize in something (e.g. C++ programming), but be aware of almost everything else so that you can easily change gears and pick up a new skill when the opportunity presents itself. Before now, I would have never marketed myself as an iPhone developer, but I knew I could pick up the skill because I have had plenty of experience programming.

If you are currently in school, try to expose yourself to a wide variety of technologies. For example, if you are a computer science major, take courses in a wide variety of programming languages and topics. You might not think it is important to learn databases or web development if your target is to be a game developer, but those are exactly the technologies that are being used for the burgeoning social gaming platforms (think Facebook and MySpace). So, even if you focus on a core language, make sure you at least get exposed to other languages.

I would also recommend an inter-disciplinary approach. First, choose which area of game development you are really interested in (e.g. programming, art, design, or production). While you focus on that area, take classes (or read books, etc.) on other areas so that you understand how they work. For example, every programmer should have a basic understanding of how art is created for games and the tools that are used. In my current project I have had to do a lot of work that would typically be done by an artist (e.g. convert and resize art assets). Artists should understand the basics of programming and how that might affect the art they create. Designers and producers should understand the basics or both art and programming and how it impacts them.

As a programmer, I have read over 20 books on programming, but also several books on game design, and a book on game production. I have taken an online class in Maya, and have become proficient in Adobe Photoshop. Additionally, I have programmed in over 10 different languages (my core skill). If you are having trouble deciding on what your focus should be, I would suggest scanning the job boards at sites like Gamasutra.com and Gamedev.net. Look at the types of jobs that are available and the skills they required. Some will be very focused, such as a job requiring experience with the Unreal Engine. Others (often smaller companies) will ask for individuals with a wide variety of skills. Which jobs sound the most enticing to you? This will give you an idea of where you might want to focus.

In closing, while specialization is important (e.g. you must have one core skill that you are completely competent at), it is also important to have a general background of knowledge that you can draw from so you can adapt to change and new opportunities.
Thanks for reading! I hope to be diligent and add a new post each week, so stay tuned and leave your feedback.

R

No comments: