Saturday, February 13, 2016

How to get into the video game industry - a guide for high school students

Guest post by Cody Childers, game designer and developer of the game Eruption.


Hello, my name is Cody Childers, and I make video games.  I had the pleasure of speaking at a high school career day recently, and was invited to put my presentation on this blog afterwards.  So with this, I would like to accomplish a few of goals.  First, I want to tell you a little about my background, then break down different roles that exist within the industry, and finally give tips for students who would like to get into games.  So let’s get started.


I graduated from Gilroy High School in 2010 near the top of my class, and immediately was accepted into the B.S. Computer Science: Computer Game Design program at UC Santa Cruz.  At this point in my life, I had no computer programming experience, but I loved playing video games, and I had some experience making levels for games using the level making tools that some games include with them.  I also had taken a few Digital Design & Animation classes in high school, so I had a bit of experience using tools like Photoshop and 3D Studio Max for making art and animations.  I really enjoyed this work, so I thought working in games might be for me.


The summer between finishing high school and starting college, I began to teach myself the Processing programming language out of a book.  I started at UC Santa Cruz, and over the first couple of years there, I realized that my calling in life was writing code.  I continued on through and got my B.S. in Computer Science: Computer Game Design, and continued on at UCSC to pursue a M.S. in Games & Playable Media.  This was an amazing program for a number of reasons.  The curriculum was condensed into just a single year, so I got my Master’s after just 11 months of (really intense) work.  The main reason it was amazing, however, was the staff.  I got to learn from John Romero and Brenda Romero, two of the most successful game developers alive today.  They are amazing people who gave me me a solid foundation for what it takes to work in the game industry.  If you are at all interested in game history, I encourage you to look them up, because their contributions are enormous.  There are a lot of other amazing teachers and advisors from the game industry, but I can go on talking about them all day, so I’ll spare you from that.  I will say, however, that going to school in games is a lot more fun than normal.  Not surprisingly, my Master’s Thesis was a video game, a game called Eruption, where you get to play as a volcano.  I’ll also include this picture from my graduation, where I got to dress up as Link from The Legend of Zelda, while being knighted by Tom Hall (famous game designer who worked with John), with the chainsaw that inspired the one in their game Doom, while my class, who were also dressed as video game characters, did the same in turn.




So hopefully I’ve convinced you that working in games can be a lot of fun and a lot more exciting than most people’s experience with school and work.  But how good is it as a career?  I won’t go into detail since other sources have covered it much more thoroughly, but I’ll link to a recent salary survey below.  The pay can fluctuate a lot depending on what company you end up at and how good you are, but in general it is very good, with potential for huge growth if you work your way up to the top like my teachers did.


If you want to get into the game industry, you have to understand that “I want to make video games” is too broad.  There are a lot of specialties that you have to consider, as they are all too complicated for one person to master them all.  My advice first of all would be to try all of the areas I’m about to list, but pick one or two to specialize in.  This will determine a lot about what sorts of classes and degrees you should pursue.


To make explaining the various sub-specialties easier, I’m going to reference a specific example that I know a lot about, and I have chosen my Master’s Thesis game, Eruption.  You can get it free for PC and Mac at http://eruptiongame.com/download/.  If you don’t have time to play it, I encourage you to at least watch the trailer on that page, it’s only a minute long and captures most of the major elements in the game.  Some of my explanations will make a lot more sense if you can see what I’m talking about.


Game Design
This is the job people usually think of first when they think of making video games, but most people don’t really understand what it is that a designer does.  The designers are the people that decide what the game is about, what is in it, how those pieces interact with each other, and many other details.  Taking Eruption for example, it is the designer’s role to decide that the game was about a volcano, that the volcano’s job was to cause as much destruction as possible, and that the players will be ranked on a high score table at the end.  The designer decided that the lava had to behave a specific way, as well as the villagers, and balanced them with the terrain of the island and how many of each type of target had to be killed in order to progress to the next level.  The designer also oversees the polish of the product, including things like making sure that there was a hiss as lava hit the ocean, and steam was placed at that location, or that a sound should play when the mouse passes over certain user-interface elements, or not.  The designer also decides what the best layout of buttons on a controller is, and how the camera should move, whether the game is first or third person, and many more things.  In the end, if the designer did their job right, every single pixel on the screen is there for a reason, and every single moment of the player’s experience was intended.


Game Programmer
This is primarily what I do, and I can go on for days about this, so I’ll try to brief.  In general, the programmers take everything that the designer has decided, and teaches the computer to do it.  One way to think of computer programming is to compare it to a math class.  In school, the teacher hands you formulas and a bunch of numbers, and it is your job to take the numbers, plug them into the formulas, and give the answers back to your teacher.  In programming, you are giving the computer numbers and formulas, it plugs them in and does all the tedious math, and gives you back the answers.  This is way simplified, most of your time spent programming is figuring out how to best organize all the data you are dealing with, and how to break the problem into much smaller problems, and the answers you get back can be anything from printing a few numbers out to the specifics of how a 3D model is displayed on the screen.  It is further complicated in video games because you are taking in new input constantly (mouse, controller, from the internet if it is a multiplayer game, etc), but there are some excellent tools out there to make this easier.  Game programmers also include the people that make these tools in the first place.  Writing code is hard, and the vast majority of software is there specifically to make some part of the problem easier for you to do, so you can say things as simple as “render this 3d model” in a couple lines of code, instead of the thousands that it actually takes to do that.  Tools programmers take those thousands and do it for you, so you can focus on making the game and not trying to just make it work in the first place.  They also make tools to make the designer’s job easier as well, and in many cases video game designers know little to no programming.


I want to take a moment to untangle Computer Science from Computer Programming, which is not at all obvious until you start doing it.  Computer Science is the study of algorithms.  An algorithm is just a set of instructions to solve a problem.  The steps you take to make a sandwich, that is an algorithm.  Computer Scientists see that in most cases, there are many different ways to solve a problem, and some take fewer steps to solve than others, so they study the different ways to solve problems and try to find the fastest way.  Computer programming is more involved with using a programming language to actually make the computer do something.  There is a lot of overlap between the two roles, and it is really important to know both parts.  If you want to work as a programmer, look into computer science degrees and classes, but if you want to be in one of the other roles I’ve listed here, you should learn a little bit of basic programming but you probably don’t need much Computer Science.  That said, programming classes in college are usually listed in the Computer Science department, but you just need some basic ones, not all the theory that comes in more advanced ones.


Other Roles
I primarily act as a programmer on a team, and a designer if needed, so I have little experience in other roles, but I can tell you what they are and a little bit about them.
  • Business and Management: These are the people that deal more with the financial side of making games.  They also make decisions about which games to fund, which to turn down, and set milestones for the team to meet along the way.  They also allocate team members within a company if it is working on more than one project, moving programmers, designers, and artists around as the projects demand.
  • Audio: In general, audio designers will work on making sure that the right music and sound effects are in the game.  They carefully pick the right sounds to convey the right feelings to the player about the scene, and work with the programmers to implement them.  There are technical audio engineers, who do a lot of the sound creation/editing, and have enough programming skills to implement them in the code.  In my experience, a lot of the technical audio engineers are self-taught programmers, but not always.
  • Art: This is an incredibly broad category, as there are many types of artists.  There are concept artists who set the original direction of the art style, then there are 2d and 3d artists.  There are specialties for environment art, character art, and even as specific as texturing or animating a 3d model.  On a team that can afford a lot of artists, there is usually a pipeline, where one artist only works on a very specific piece of an asset and passes it to the next.  I know that for Eruption, the villagers that are seen running from the volcano were made by at least 4 people: the concept artist, the 3d modeler that made the mesh, the texture artist that made them have color, and the rigger that put the “bones” into the model and told it how to behave when standing, running, and walking, and finally the programming team put them into the game when it was done.
  • Producers: what exactly a producer does varies from company to company, but in general they do whatever it takes to keep the team running, and act as the in-between from managers to the rest of the development team.  They make decisions about what content to cut in order to meet a deadline, and help solve problems within the company so that everyone can work as quickly and efficiently as possible.
  • Quality Assurance: Quality Assurance, or QA, is a vital but underappreciated part of game development.  These are the people that play the game over and over, trying to cause the game to glitch or crash in every way they can, and report their findings to the programming team so they can go fix it.  This can be one of the easier roles on a game team to get into if you have no experience, and may serve as a gateway to one of the other roles I’ve listed if you do well as a QA tester.


So what do I need to know?
What skills you need varies widely from role to role, but there are some basic recommendations I can make.  


Game designers and programmers, you need to learn a lot of math.  Now before I discourage all the people that don’t like math, let me clarify.  Computers are super fast, giant calculators.  Your job is to tell it what math to do, which is why you need to learn a lot, but in the day-to-day you need only to understand the concepts behind the math.  Usually some tool programmer has figured out how to tell the computer to do the  number crunching, and you just need to understand how to use it.  For game designers, you want to learn calculus and statistics, and how to work with spreadsheets in programs like Excel.  Programmers will need to focus more on  Calculus, Linear Algebra, and Physics.  You don’t need a very deep understanding of each to start doing a lot, but those 3 are essential for Computer Science, 3D Rendering, and Gameplay Programming respectively.


I can’t make many recommendations for artists and sound designers, and even fewer for producers or management, so I’ll just some of the tools that it will be essential to learn.  Artists, you’ll need to know Photoshop, Illustrator, and a 3D modeling program.  3D Studio Max and Maya are the two most popular in industry, but you can also get started learning Blender, a free version of the two.  Sound designers will need to know a good Digital Audio Workstation.  Some of the sound designers I know will argue all day about which DAW is the best, but there tends to be consensus that one called FMOD is pretty good.  This is a program that allows you to make, record, and edit sounds, and is essential for making game sounds.


I have some general advice for whatever role you pursue.  First, start now.  Your job will take your entire career to master, and it’ll take a few years just to even get started, so don’t waste any time.  Start learning now, and you’ll have much better luck the more experience you have working on your own projects.  Second, don’t let yourself get stuck.  Especially with programming, chances are that whatever problem you have, someone else has already had it and asked about it online, and someone else has answered it.  Getting good at Googling information about your tools is an essential part of the job.  Third, take as many classes in diverse subjects as you can.  It is essential for a game developer to have broad life experience, and to have a large number of experiences to draw on from when they had fun, and then take what made that experience fun and recreate it for their players.  Learn as much as you can about everything that interests you, and you’ll be a better game developer and person in general.  It is also essential to play as many games as possible for research.  


Programming Recommendations - how to get started writing code
This gets its own section since I know so much more about it, so here are a few suggestions if you want to start learning a little bit of programming.


My first programming language was one called Processing.  Processing is a great starter language for a number of reasons: it makes it easy to start dealing with graphics right away (normally a very complex process), it is relatively straightforward to learn, and it is using the Java programming language underneath, meaning that when you are ready to move into something more complex, you already have understanding of what is currently the most used programming language in the world.  At UC Santa Cruz, this is what they usually start students on, and they are able to make simple video games in it at the end of the 10 week course, so it is a great place to start learning.


Python is another great programming language to learn.  It is the easiest language I’ve ever learned, since the whole philosophy behind the language is to make programming as easy as possible.  It will take more work to get into graphics like Processing, and because of various technical issues it isn’t very well suited for games, but if you find Processing too hard or want the easiest introduction possible, this might be a good place to start.  Many games are made in several programming languages, and in some cases Python is used for the designers to work on their parts of the game, while the rest of the game is made in a language like C++.  If you want to get into design, knowing Python might be directly relevant as a job skill.


Unity 3D is a fantastic game making tool, what is usually known as a “game engine”.  Game engines are tools that recognize that no matter what your game is, some parts are going to be the same, so they take those reusable bits and package them up so you can worry about your game and not the hard math as discussed above.  For example, the code to load a 3D model into the game, load the image that will serve as its texture, apply the texture to the model, and display that model to the screen is the same no matter what, so the engine takes care of those things for you.  Other common engine features include adding Physics behavior to objects, or the networking involved in a multiplayer game.  Unity is a good tool to work up to, but I wouldn’t start there if you have no programming experience.  Unity uses the C# programming language, which is very similar to the Java programming language in many ways, so if you started with Processing, you may consider working up to Unity fairly quickly.  Unity is one of the most popular game engines in the world right now, so knowing this can turn into a job very quickly if you get good enough at it.


Unreal Development Kit is another fantastic game creation tool.  It is built around the Unreal game engine, which is also incredibly popular in today’s market.  This one is specialized for making first-person viewpoint games, especially first person shooters.  If you want to get into making levels for games, this might be a great place to start.  You can add a few boxes to the world, and click play, and the game will start with you in control of a character and holding a gun right away, so it is easy to get started.  It uses its own programming language called Unreal Script, so skills acquired in that language won’t transfer to other technologies quite as easily, but can be a great place to start.


Game Maker is kind of halfway between these complex game engines and the simple starter programming languages I listed here.  It is a tool specifically for making video games, but doesn’t have all the overhead of the more professional tools.  In fact, the first few video games I made were using this tool.  It uses a “drag and drop” interface for anything that requires programming, which is usually much easier than writing the code yourself (unless you really know what you’re doing), so it is a great place to start getting used to working with code without actually writing it.  They have a bunch of tutorials on their website, and it is very easy to get started.


Conclusion
If you made it this far, then hopefully you know a little bit about what work involves for members of the game industry, and what sorts things to learn to help push you in the right direction.  It is essential for game developers to be self motivated, as the technology is changing constantly, so you must be able to learn new technology on your own time.  If you are self motivated enough to take any of the advice I’ve given here and learn something new, then you may just have what it takes.  The biggest advice I can give to anyone who wants to do anything in games is to make lots of games.  They don’t have to be video games, and they don’t have to be pretty.  Make the game with 3x5 cards or scraps of binder paper.  As long as you can tell what the pieces of your game are, and you are able to play it with your friends, then you have a game.  Get their feedback about what they liked and what they didn’t, address the problems and try again.  If you do that enough, by the end you’ll have a good game.  Game companies look for employees who are passionate about making games, and this is one of the easiest ways to show it to them.  Make as many games as you can and if you love what you do enough, eventually you’ll get in.  Making games takes a lot of hard work, and requires a lot of hours from you, but that moment when you see a player playing your game, really enjoying themselves, and just can’t seem to put it down, is the most rewarding part of making games.  Knowing you brought so much happiness and joy into someone’s life makes it all the hard work and long hours worth it in the end.


Links to Stuff

  • Eruption - My Master’s Thesis game: http://eruptiongame.com/
  • My personal portfolio: http://codyachilders.com/
  • Processing: https://processing.org/
  • Python: https://www.python.org/
  • Unity: http://unity3d.com/
  • Unreal Development Kit: https://www.unrealengine.com/what-is-unreal-engine-4
  • Game Maker: http://www.yoyogames.com/studio

No comments:

Post a Comment