domingo, 14 de marzo de 2010

Skills you need to make a game

Often someone asks in GD.Net, or even me personally, what skills are needed to make a game.
Why AAA games need so many people, or why they need so much money.

They often don't realize, making games requires putting toghether talents from many, many, many different disciplines and make them work in harmony.

Let's just have a look what kind of staff do we need to make a nice AAA quality game:

Programming
This is the escence of any video game, they can't be ignored. But just saying "programming" is too general. There are very different kind of programmers, let's see how many specializations can be useful. Note all these areas can be done by one single individual. Good luck finding such person. If you do find someone who can do most of this stuff with a high level of quality, don't let him go!
  • Graphics programming: They need to have a very deep background in 3D Math (vectors, quaternions, etc) rasterization, shaders, visual FXs.
  • Physics programming: Strong knowledge of physics math, collision detection, etc. Physics is an entire career actually. Thankfully, games only use a portion of it, and often very simplified.
  • Sound programming: Deep background on the technical side of sound. This position becomes tough if the sound somehow dynamically reacts to the actions of the player and the ambience.
  • Networks programming: This is needed in every game with multiplayer in it. Some projects like shooters need special algorithms to compensate lag, while others like RTS (i.e. Age Of Empires) work on a deterministic background and they need to ensure everything stays in sync. If they're working on a MMO, this becomes complex by several orders of magnitude, not to mention mantaining servers and database with a complex infrastructure can be challenging.
  • AI programming: Often AI can be done by any programers, but truth is there are some who specialize in thie field and are handy for some types of games (i.e. chess). Specializing in AI may also probably mean you are looking into some fields of psycology and/or military strategy (depends on the game)
Artistic side:
  • Modelling: Only a few games are still visually stunning without 3D models. Without these guys, games wouldn't look the same
  • Texturing: The process of baking 2D images as "textures" to apply to 3D models. They have to look realistic and comply with the visual direction when photorealism isn't the goal. Making textures is easy, making really good textures is hard
  • Animators: Skeletal animation for the the 3D models is the norm nowadays, and it can be quite a very hard task to look smooth, fluid, and realistic. Sometimes they get the aid of mocap (Motion Capture) but this needs more post processing in some cases (to make the sampled data more game-engine-friendly) and you're replacing individuals with expensive equipment. At the end of the day, it's still adds a lot of cost
  • Other art material: Like concept art and GUI skins.
  • Sound art: Someone has to take care of sound effects. Usually short (less than 5 secs), loopable sound samples.
  • Music art: as sound artists, but they need more time, samples are longer, may or may not be loopable; a lot more instruments are involved.
  • Game Design: Everyone proclaims to be a game designer. But being a real game designer isn't easy. I'll just quote Promit: A game designer is someone who write a "hundred page game design that sounds fun on PAGE ONE"

Other revelant positions:
Some disciplines depend on the approach of the game. You can't make Sim City without a basic understanding of macroeconomics.
Imagine a game like Assassin's Creed. While it's not technically a documental (and contains some sci-fi elements), it has quite a bunch of historians helping with the historical accuracies. They take some artistic liberties, granted, but they're not arbitrary.
EA's latest Need For Speed hired a professional driver as an advisor.

With all those disciplines tied toghether, is hard to find an individual that meets all this. And coordinating a team isn't easy either.
Creating a game means creating a virtual reality. These virtual realities are based upon the real world; a simplified version of it. And you need to understand how the real world works, or the very least, how it appears to work.

As another example; a month ago I was researching into atmospheric scattering to implement impressive sky effects. At some point I even ended up reading papers at the NASA webpages! It was like "learn astronomy in 10 days".
There's no limit on what knowledges you'll need when making a game. They can go from pure abstract to very practical ones.

And this forgets about the QA staff, the marketing guys trying selling you the game and convincing you to buy it. This is all just to make the game

This list is surely incomplete, but now you know why a game is so hard to produce, it costs so much, and it's not for everyone.
Yeahh!! I started a blog! What excitment!!.... not really

Truth is, I'm usually very busy so I don't post often. In fact I created this blog quite a few weeks ago, before this first post.

But every now and then I'm force to have some free time thanks to compiling times from my compiler. At this time OGRE is compiling from source, from scratch. It's going to take a while.

Which leaves me with time to write the next post about necessary skills to make games.