March 10th, 2010

You Want to Get into Games, but as What?2

Many people want to get into games, but they have no idea what the different jobs that are available in the game industry. So, if you are uncertain, here’s an explanation of the roles and what they do. Keep in mind that every studio makes a games a bit differently, but I’ll try to explain all the common things that an employee might do in that role.

Art – This one is pretty straightforward. These are the people that create the in game assets, both 3D models and 2D textures. Currently, there are two main specializations: environment artists and character artists. Environment artists do all the level art. This includes set dressing, collision, and all the non-animated art assets that go into the level. Character artists do the characters in the game, which are usually animated. Sometimes the character artist has to rig the model, whereas sometimes the animators do that. Many believe it’s better for the character artist to rig the character because that way they know that they put enough polys in joint areas and to make the skinning look smooth. There is increasing specialization in art. Some places have people who only do 2D textures. Some people specialize in rigging or lighting. But, it’s a good idea to know how to do some of everything before you specialize since you probably won’t be able to do one task for your entire career. Artists need an impressive portfolio in order to get into games. An art degree is optional.

Animation – These are the people that take the characters (they could big rigged or not) and make animations, so the programmers can have the characters do things. They also do animation for in engine cutscenes and any videos that play. They work in Maya or whatever 3D animation package the particular studio is using. (Maya is the most common) Animators study motion and try to recreate it for  game characters be it a bush or a human. Most games use skeletal based animation in the game itself, so it’s important to be familiar with that. As people specialize, they’ll probably be people who only do FMVs using really high poly and high bone count models, and people who only do in game characters that are a bit more conservative as far as bone counts and polygons are concerned. Animators get a job based on their demo reel, so going to college isn’t necessary if you are very talented at animating.

Design – This is one of the most varied roles in the game industry. Sometimes they are just the planners who come up with the idea for the game and the levels. Other times they actually do the implementation. At some studios, there are just a few designers who mostly work in a word processor writing documents to describe their game ideas to the rest of the team. Sometimes they actually draw out level blueprints that they hand off to the environment artists. At other studios, it’s an iterative approach where they work closely with the artists to create something that is both aesthetically pleasing and fun to play through. Some studios have more designers, and they do the actual level creation. The level creation is done with whatever tools the engineers have set up. Some studios use plugins for the modeling package that the studio has chosen to allow game editing. Other studios have a stand alone editor. The level of technical skills required for a game designer also varies from company to company. Some designers actually use a scripting language to program the behavior of the game objects. Other designers only use the simple game editors that engineers create for them. Designers usually don’t have a college education and come from quality assurance.

Engineering – Engineers are the programmers who take the game ideas combine it with the art and make it work. Most companies split their programmers up into at least two categories: the engine team and the game team. The engine team actively maintains the studios technology that changes from project to project. The game team is working on features that are specific to the title currently in development. The engine team is usually responsible for the core technology behind the game including tools, rendering, collision, physics, networking and so on. Even if a company purchases middleware to handle some or all of those tasks, they usually still have a team that makes a layer on top of the core game engine to tailor it to suit the particular game’s needs. In reading about Tim Moss’s talk about development on God of War, it sounds like they took this idea to the extreme and only engine programmers (7 of them) create tools so that the rest of the team could do work that might fall on game programmers ordinarily. If the team isn’t structured like Sony Santa Monica, then they have programmers creating custom widgets that designers use or actually setting up the level logic. So for example, a programmer could make a generic door widget that opens under certain circumstances and enemies that can be placed by designers inside the game editing tools. At other companies, game programmers create the widgets they want to use and then set them up inside the game editing tools. In this case the designers give descriptions and advice, but all the implementation is left up to the programmers. Each method has its own merits. Programmers have technical experience and usually have a degree in computer science or engineering.

Production – The term producer means a lot of different things to different people. At some studios, the producer is equivalent to the game’s director. The producer is the visionary behind the title and has the final say on everything. At other studios, they are just in charge of the schedule and coordinating between the different teams. They are the point of contact for the publisher, they organize the QA teams and work with the localization company. Assistant and associate producers help out the producer with these tasks. Usually, producers have little or no college education and come from quality assurance.

Quality Assurance – These are the people who test the games. No, it’s not playing games for a living. It’s a thankless job that involves the mundane like doing the same action over and over to try to reproduce a bug. The best testers need to have a basic understanding of how games work, so they know how to break them. This is an entry level position, so no experience is required. You do have to have a lot of patience and a high tolerance for boredom because you’ll be playing the same game for hundreds – maybe even thousands – of hours, and I’m sure even your favorite game will seem dull after that much playtime.

Hopefully, that gives you an idea how the games industry is structured and what position you want to apply for. If you have any questions, post a response, and I’ll be happy to answer them.

Xbox Content Creators Club: A Great Way for Beginners to Start Game Development2

It’s no secret that a lot of console developers look down on PC game developers. PC games have frequent patches (although to be fair, Xbox 360 games have seen their share of patches too), large quantities of memory to waste (especially with virtual memory paging out anything that you might have leaked), and are designed for $3000 hardware. PC game developers have plenty of hardships that console game developers don’t face. Supporting a wide range of hardware is quite difficult. They have to make a game that can work with hundreds of video cards and drivers each with varying capabilities and performance. Making a game look good with infinite combinations of target hardware is always a challenge, let alone designing a game engine for hardware that will be out two (or in Valve’s case 5) years from now.

Microsoft has offered a great solution to this. Although Sony pioneered the idea of user created games for their systems with the Net Yaroze (a special development Playstation 1) and the Playstation Linux Dev Kit (a special linux distribution for Playstation 2 that would allow development), Microsoft is taking it a step further since you can do it on a regular Xbox 360 without any difficult setup. Although it seems a bit expensive ($99 a year), hopefully the price will come down quickly, and ideally, they’d offer it for free. Now, it should be easy for anyone interested to get console experience that developers expect. No longer will amateur game developers have to worry about designing a game that works on all sorts of different video cards with different features. They can make a game that works on one target hardware configuration and focus on squeezing every ounce of performance out of it.

The beta version of XNA Game Studio Express (the development tool used to make games for the 360) isn’t out yet, so I can’t comment on the API, but Managed DirectX simplified DirectX development somewhat. No longer will developers have to check a multitude of HRESULTS to figure out what was wrong. Exception handling greatly simplifies handling all the error cases, but let’s hope they improve the API to take advantage of the string in the exception, so you won’t spend hours trying to figure out which parameter was incorrect when you get an invalid call exception. (If you haven’t done Direct X programming, oftentimes a bad function parameter will return an HRESULT that corresponds to invalid call. That’s all the information you get, so it’s tough to debug.) Console development with a learning curve that’s potentially less steep then PC game development (since you no longer have to check the capabilities of the system and come up with a backup plan) will hopefully make it easier for amateur game developers to express themselves creatively without getting hung up on the technically challenging aspects of game creation.

Another good aspect of the Content Creators Club is that publishers might be interested in commercially publishing the best games. Sure, you could create a freeware game and hope that someone is interested in making a commercial version of it like Every Extend Extra, or you could try and earn revenue by making it shareware, but with both of those avenues, it’s going to be difficult to stand out from the huge numbers of freeware/shareware PC games out there. With the Content Creators  Club, they’ll be one place to check all the games available, and I imagine that Microsoft will rate them by popularity. Also, Xbox Live Arcade is a much better way to sell an indie game than on the PC because the attach rate is very high, and you don’t have to worry about piracy. Microsoft has made it easy so that people without credit cards can buy marketplace points at their favorite game stores.

All in all, the Content Creators Club is a very exciting opportunity for everyone who is not already professionally developing games. It even may work well for professional game developers trying to put together a demo to pitch to publishers. Hopefully, Microsoft will lower the price to reduce the cost of entry and streamline the API, so it’s even easier for people without a lot of experience to start making games!

 

Things You Need to Know before Interviewing for a Game Programming Position53

For quite some time, the game industry was an exclusive club that didn’t allow any new blood because every opening required applicants to have 2+ years of experience and 1 shipped title. I don’t think there has ever been a better time to get into the games industry right out of college than now. Because next gen team sizes are increasing drastically, people with experience are harder to find, so more and more companies are recruiting right from colleges. Regardless, of what college you go to, you can still get a job in the games industry provided you have a certain proficiency in the following areas.

Math – This is an important area to video game development. No, you don’t need to remember how to compute the surface area of a curve when rotated about the x axis. You do need to have very good linear algebra skills. If you don’t know what the formula for a dot product is (a dot b = a.x * b.x + a.y * b.y + a.z * b.z ) and what it means geometrically (|a| * |b| * cosine of the angle between a and b), then there’s no chance you can get a job. You need to know how to project a vector onto another vector (a projected onto b = ( a dot b ) / |b|^2 * b) and onto a plane. You need to know what the cross product is (a x b = [a.y * b.z – a.z * b.y, a.z * b.x – a.x * b.z, a.x * b.y – a.y * b.x]) and what it means geometrically (a vector perpendicular to the vectors with a length equal to the sine of the angle between them). The way I remember how to compute a cross product, is to put i, j, k in the first row of a matrix, then the first vector and finally the second, and then compute the determinant. If you don’t know how to compute a determinant or what that is, that’s a bad sign! You should know what the inverse of a matrix is and how to compute it for any matrix. You should know how to transpose a matrix. You should know what an orthonormal matrix is and a shortcut to compute its inverse (just transpose the matrix). Familiarity with conversions between different coordinate spaces is essential. The math behind collision routines is very important to learn also. How do you find the collision point between a parametric ray and another ray? a plane? a sphere? What are quaternions? How do you do common operations with them? If you are very rusty on your math or don’t know where to start, I’d recommend 3D Math Primer for Graphics and Game Development. I read it and found that it covers all the basics pretty well. I haven’t read all that many other books for comparison, but it’ll definitely will give you a good foundation to build on as well as reference for many common math operations for game development.

Physics – You should be very familiar with all the projectile equations. If you can’t either derive or remember d = v0 * t + 0.5 * a * t^2, you’ll be in trouble when you interview or take a programming test. Any problem that involves a projectile with gravity should be easy for you to solve. Whether the unknown is gravity, launch angle, y velocity, xz velocity, time, distance or any combinations that are solvable, you should have no problems determining the solution. You should also be familiar with momentum and kinetic energy for elastic and inelastic collisions. Drag and friction should be concepts you understand also.

C++ - Although some places still use C over C++, C++ is pretty much commonly accepted as the standard for game programming. Knowledge of C++ is very important because if used poorly, you can write very suboptimal code. Firstly, you should know what a virtual function is, and how to use it. It’s also important that you understand how the virtual function table works, so you understand the extra steps that can decrease performance that take place when you call a virtual function (each object has a virtual function table pointer hidden from you in its structure data [where it is located depends on the compiler and this has important ramifications when pointer casting], and to call a virtual function, you need to follow that pointer to the table, and then jump to the function pointer contained within, which can hurt caching). Knowing how to use templates and operator overloading efficiently is important too. Good object oriented design is the most important thing you should know about C++. All too often class hierarchies are deep and convoluted, so you end up having to do horrible things like virtual inheritance, or all your classes have a lot of wasted memory for variables they didn’t need.

AI – I took the standard AI class that University of Michigan offered, and absolutely none of it was applicable to game AI. A lot of the algorithms taught are intractable, or just impractical for games. As long as you know what a finite state machine is, you should be fine. Most games use finite state machines, and the ones that don’t, use simple rule based systems. “Black and White” (and its sequel) is the only exception I can think of that used something different (neural networks), but many gamers weren’t satisfied with the results. If you are looking for books, I’d recommend AI Game Programming Wisdom 3. It has two particularly outstanding articles in it, one about fun game AI design and another about behavior compositing. Seriously, although books may be helpful, the best way to learn about game AI is by doing it.

Graphics – This is an important area. If graphics is your main area of interest, then you should know a lot more that what is covered here, but whatever your desired position in the industry is, you should know these basics. You need to know what a render state is and what the common ones (cull, z write, z test, etc) are. What is the standard lighting equation? (It’s I = ka*Ia + Ii*(kd*(L dot N) + ks*(R dot V)^n) in case you were wondering) How does texture mapping work? What’s the difference between texture wrapping and clamping? How do you efficiently render a bunch of procedural geometry? (Organize your geometry by render states, batch it up in the fastest primitives for your hardware and send it off to the graphics card) You need to know how skinning works. If you’re interested in a book, I read 3D Computer Graphics by Watt. It’s not game specific, so it covers a lot of techniques that are impractical for games. But, I think the general overview is helpful, and as game hardware gets more advanced, the techniques presented that seem impractical now, might become the norm.

Tools Development – C# seems to be gaining a lot of momentum in the games industry, so it would be good to familiarize yourself with it. C# presents many advantages to speed up tools development. Many people have said tools can make or break next gen games. I agree with this. The more tools you have, the less time the team spends wasting time doing easily automated tasks. Maybe when you have a team of 10 artists, spending a man year of programmer work to create a tool that saves artists 15 minutes a day won’t pay off, but if you have 50 artists, then it is definitely worth your while. C# allows rapid creation of GUIs, and unlike some other ways to simplify creating GUIs, the GUIs are easy to understand and use since they are the standard Windows components and allow you to easily set up all the keyboard shortcuts like standard Windows applications. The Form Designer works really well in Visual Studio, and C#’s metadata and event driven design makes development a breeze for tools. It’s also nice to have at least some understanding of MFC also in case the developers you interview with are behind the times.

If you are interested in learning a lot about how the technology works (which will in turn allow you to write better C# code), I’d highly recommend Applied Microsoft .NET Framework Programming. I read it while on vacation, and I just couldn’t put it down. It seriously was a page turner. I read it cover to cover over the course of a few days because I was so excited to learn the topic of the next chapter. Keep in mind though, this book doesn’t teach you about the various Framework classes, and what they do. It instead covers the core mechanics of the language and how it works. It isn’t specific to C# either. It tells you what you can do in VB.NET that you can’t in C# as well as provides examples in MSIL (Microsoft Intermediate Language – the byte code that all .NET languages compile into) for things that may not be supported by any .NET languages yet.)

Operating Systems – Although this seems relatively unrelated to game development, I’m really glad I took Operating Systems in college because I frequently use knowledge that I learned in this class. knowledge about operating systems is very important since it handles a lot of important behind the scenes work for the programs. Especially with the multicore next gen consoles and dual core PCs, multithreading knowledge is essential. Virtual memory is definitely a useful thing to know. Knowledge about file systems, kernel to user transitions and paging is more useful for PC game development, but consoles are rapidly becoming more like PCs with every subsequent generation, so it’ll never hurt to know these things.

Compilers – Although it may not be important to know how to write a parser, it’s important to know how your code is converted into assembly, so you can understand how to write more optimal code. You definitely should be familiar with the four stages that take place to convert your program to an executable: preprocess, compile, assemble and link. How are constants treated by the compiler? A good understanding of macros and how to simplify common operations with them is important. Knowledge of calling conventions for the compiler you are using because passing over a certain amount of function parameters may cause them to be pushed on the stack instead of reserved registers. Calling convention is also useful for when you are writing a function in assembly.

So, this is just a starting point for the diverse array of knowledge you should have as a game programmer. There’s always more you should learn and the level that you should be familiar with each area depends on the type of task you are doing. It can never hurt to know more than you’ll actually use. If you have any questions about what you should learn, or getting into the industry, feel free to post, and I’ll get back to you.

 

How the Grinch ESA Stole Canceled Christmas E35

The news leaked out this weekend. I anxiously awaited the ESA’s press release silently chanting “say it ain’t so, say it ain’t so”. I figured people were being alarmist! E3 cancelled? No way! How could they be so foolish? How could they ruin the biggest event in gaming? Then the official press release came out, and I felt like crying. More information soon followed that the next E3’s attendance will be cut to 5,000, a small fraction of its typical 70,000 attendance. I have a very strong feeling that the game development community is not going to be included in that 5,000. With a number that small, they can only accommodate the large press and the buyers for companies.

E3 is the most exciting time in the game development community! As soon as E3 was over this year, I anxiously started counting down the days until the next E3. Not only do I go to E3 all three days, but I read all the E3 coverage on all the websites for over a month afterwards. So, where will I go to play all the games in development? Where will I be able to show off the game I’m working on to all my friends? Where else will they show off vaporware consoles? Luckily, the ESA has an answer for that. I can just go to either the Games Convention in Leipzig, the Tokyo Game Show… and others around the world.” That’s great! So,  instead of going to a game convention in Los Angeles (where I live), I should go to some other country for their games convention. Thanks ESA for the valuable advice!

Sarcasm aside, the main problem appears to be money. Apparently, EA is leading the charge of publishers who don’t think they are getting all their bang for their buck. Yeah, maybe they are right. Maybe it wasn’t necessary for Vivendi Universal to recreate the famous stairway set from Scarface inside the LA Convention center. Maybe Activision didn’t need to build a large half pipe in their booth. Maybe everyone doesn’t need to invest in 10,000 Watt sound systems that prohibit conversations or even hearing the audio for the games you are playing. (Although, I don’t know what EA is complaining about because in the E3s I attended, their booths always seemed to be the most bare bones out of any of the major publishers.) So yes, I think cutting costs is a very reasonable idea. Maybe some people enjoyed watching people skate inside E3, but I went to play games. Sure, the photo ops on the Scarface stairway may be fun (I didn’t bother with it), but I’d agree that it’s not going to sell many more copies of the game. Unfortunately, they seem to be going WAY overboard with the cost cutting measures, and this is a REALLY bad idea.

E3 generates a lot of hype, which is very helpful. For example, I wasn’t really all that excited about Gears of War until I saw CliffyB demo it. Because of my excitement, I’ve written about it in my blog, told friends about it, discussed it on forums and mailing lists, and probably generated some hype for it. That’s just me. Multiply that by the thousands of people who saw CliffyB’s demo. There’s no other good way to do something like that. I don’t think you can make a video of someone demoing a game and create the same experience. There’s something to be said for actually being there, and also it’s interesting to see how the game is being played first hand, since a lot of smoke and mirrors can go on in demos.

It also generates a lot of hype because it’s such a big event, consumers get more excited about checking out game press. I’m sure there are many people who don’t really follow game press except around E3 time. Because of this, publishers gain a lot of interest in some of their titles. For example, if someone never read the game press, but started reading it around E3, they can find out about new titles that they wouldn’t ordinarily hear about. For example, I was at E3 all three days, and I didn’t even notice the Rule of the Rose trailer. There was some post E3 coverage of that game that I read, and now I’m really excited about it! So, if there isn’t a ton of information being released, or it’s all videos and very few people get to play it, then people aren’t going to be as interested in reading the press.

People claim that it allows game developers to focus more on developing the game. Well, I know regardless of whether 70,000 people get to see my game, or just 5,000, I’ll still have to work my butt off to make a great demo. Just because less people see it, doesn’t mean that we don’t have to do a demo. But, if I’m working triple digit hours a week, I’d prefer more people to see the game than just a few. Also, it’s nice to get feedback from other developers. I have friends who work at other companies who’s opinions I really respect. Outside of E3, there’s no way to get feedback from them about the game I’m working on. With non-disclosure agreements being what they are, it’s pretty much impossible to get an outside opinion on your game except through E3. I think this type of feedback helps improve the quality of games and is valuable to the industry. Does it help the bottom line? Better games certainly can, but it’s very difficult to establish a direct correlation, so the people in finance might not see it that way.

The other advantage of E3 is that it allows innovation to spread faster. If game developers can play other games, it can inspire them to improve their own title with ideas from others. I’m not trying to say that they should copy the games they play at E3. There are very few completely new and revolutionary ideas in the game industry. Even the Wii controller is an evolution of previously executed ideas. Microsoft as well as others had a motion sensitive controller long before the Wii was announced, and there’s been IR based light guns that allow aiming. I’m not trying to say that Nintendo completely ripped them off. Rather I’m saying that every idea needs inspiration and that inspiration usually comes from products in the same field. Also, by seeing what other people are doing and improving on it, or adding your own twist you can make a product that’s unlike or better than your inspiration. For example, the folks responsible for Shadow of the Colossus may have been inspired by the giant final boss fight in Serious Sam: The First Encounter. I don’t think anyone would accuse Shadow of the Colossus of being a rip off of any game (especially Serious Sam), but I imagine the idea came from another game either directly or indirectly. Now, Shadow of the Colossus may be a bad example because it was in development for a very long time, but it’s very possible for game developers to get the inspiration by playing another game and incorporate it into a title already in development. If game developers don’t have that opportunity to play the game that inspired them a while before it’s released, then their innovation will be delayed until the game is released.

It is very interesting that they mention the Games Convention and the Tokyo Game Show. You’d think that these are evidence that big game extravaganzas are popular and that having one in the United States would be worth their while. With E3 being nerfed, maybe there’s room for another convention to rise in its place. Comic Con has more and more video game companies demoing stuff, although it usually isn’t the latest and greatest games like E3. Nintendo only showed DS stuff, and Sony didn’t show any Playstation 3 games. Maybe the organizers of Comic Con will take the initiative and make a special game convention spin-off. The problem with that is if it’s open to people outside the industry, it’s going to be even more crowded than E3 or Comic Con, and both were really crowded. That would be even more difficult and expensive to try to accommodate all those people, but the Tokyo Game Show’s  attendance is 160,000 or more, so I guess it can be done. Also, TGS isn’t open to the public every day, so maybe that’s the format that this new game show could take.

All in all, I think the decision to effectively cancel E3 and replace it with something that is a faint shadow of its former glory is a bad one. I could be biased because I love E3, but I really think that it was good for the industry. Sure, it was overly extravagant, and they could easily cut costs without ruining the show, but reducing the size to 5,000 is a big mistake. Allowing developers to see what everyone else is working on increases the exchange of ideas, which is only a good thing. The hype surrounding it can renew people’s interest in the new games coming out and make them aware of new ones. If it’s only a few press outlets, then there won’t be as much information out there, which means less hype. I only hope that the ESA realizes the folly of their new strategy soon, or someone else takes the initiative and creates something even better than the old E3.

 

Everything on Binary Creativity is © 2006-2008 Matt Gilgenbach. All rights reserved. | RSS | Comments RSS