how much depth goes into making a good puzzle game

how much depth goes into making a good puzzle game

how much depth goes into making a good puzzle game

James recently had an aspiring designer come up to him and say, “Man, puzzle games are easy. Anybody could make a Bejeweled clone.” He wasn’t entirely sure how to respond to that. Stating that making a type of game is easy is something you never want to do as a designer. For one thing, it’s a misstatement. Making a good game is always hard regardless of genre. Making sweeping statements like that shows a lack of curiosity, plus it devalues a lot of people’s work and it demonstrates that you’re only examining games on a surface level.

James didn’t want to be too hard on him because well to be fair, this is a rather common attitude out there on the interwebs. He sat the guy down and walked him through an exercise that James often goes over with his students at DigiPen, and then we realize , “Hey, we could totally go over that exercise here.” Get yourselves ready. This is the first extra credits practicum. Kind of surprised it took us 74 shows to do one.

To get the most out of this episode, especially if you’re hoping to get into game design someday, I’m going to strongly recommend that you pause a lot and do each of these little exercises as they come up. Don’t worry. I’ll warn you and play a little music when it’s time to pause. For the rest of you who don’t feel like doing math right now, that’s cool. You’ll still be able to follow along. Oh, and before we start, I want to give a big shout out to our friends at PopCap. First, you guys are awesome and you make awesome things. Second, I hope you don’t mind me deconstructing one of your games here.

All right. Today, we’re going to go over the web version of Bejeweled 2 because I know everybody can access that for free. You can find it over on the PopCap site. If you are participating in today’s exercises, go start up a new tab, get it fired up, and load up classic mode. If you’ve never played Bejeweled before, pause us for 10 or 15 minutes and get the basic mechanics down. We’ll wait. First pause starts now.

“A slightly lazier designer who didn’t shuffle the board between rounds would’ve created a totally different and probably inferior game. ”
We’re back. Now the first thing to remember when analyzing a game is that as game designers, we are scientists. We engage in the scientific method. We find a question we want to explore, we form a hypothesis, we test that hypothesis against empirical data, and then iterate on that hypothesis based on how it fits with the data we’ve acquired. Let’s start with a question. How does Bejeweled 2’s leveling system work?

First, we need to form a hypothesis and then test that hypothesis against a real world data you acquired from playing the game. For example, you might guess maybe beating a level is determined by the number of moves you make on that level. When you make enough moves, you progress to the next level. All right, so you’ve got your own hypothesis in mind? Awesome. Now pause us and go test it out.

You’re back? Cool. How did it go? Was your hypothesis correct? You probably found that progressing through levels is actually determined by the player’s score. Now we need to dig a little deeper. We’re going to try to understand if there’s a purpose behind this system. The first thing we’re going to do is establish how many points does it take to complete the introductory levels? It’s time to collect some data ie. play some games. Pause this, go beat the first six stages, record your score, and come back. Go.

All done? Great. Now to those scores. I’m going to do something here you should never actually do and I’m going to round these numbers a bit to make the math easier for the show’s sake but you should never do that. Bad designer. No.

All right. On to the numbers. To beat level 1, it takes 500 points. To beat level 2, it takes 1,500 points. To beat level 3, it takes 3,000 points. Level 4 takes 5,500 points. Level 5, 8,800 points. Level 6, 13,200 points.

A designer should always be thinking about how the player experiences the game. How does the player experience those numbers? What would we have to do to our current data set to make it more accurately represent the player’s experience? Well the player rarely starts at level 1 thinking, “Oh man, only 13,200 more points till I reach level 7.” No, no, no, no. They spend much more of their time thinking how long until I beat this stage. Were going to have to take the difference between each level value to see how long it takes to get from one level to the next, much more useful than simply looking at raw point values required to get to a given level. Pause, do the math, and come on back.

You got it? Here’s how the numbers should break down. It takes 500 points from level 1 to level 2. It take a thousand points to get from level 2 to level 3; 1,500 points to go from level 3 to level 4; then 2,500 points from 4 to 5; 3,300 points from level 5 to level 6; and to get from level 6 to level 7 takes 4,400 points.

Now that we know how many points it takes to get between the first few levels, we can say it gives us a weird, slow exponential curve. Now what? How do we make this data useful? Well, let’s return to the player. What other system affect how the player experiences this system? Well of course, the scoring system. Now we have something else we need to get data on. How many points does matching 3 gems on any given level earn you? How about matching 4 gems on any given level? How about matching 3 gems and chaining into another set of 3? Pause, grab some data, come on back.

You got it? Awesome. Matching 3 gems at level 1 will give you 10 points. Matching 3 gems at level 2 will you 15. Matching 3 gems at level 3 gives you 20 points, then 25 points, 30 points, and at level 6, it gives you 35 points. We see that all other block combinations simply give a multiplier to this match 3 base score. How does the player experience the conjunction of these two systems?

To put these two systems together, we’re going to have to divide the amount it takes to get to the next level by the amount of points that a base match 3 will get you on any given level. Now you may ask why we’re doing that. What will the number we get out of that mean? If you guessed it will define how hard the level is, you’re dead on. There’s another important variable here. What helps define difficulty? Your losing condition. In Bejeweled 2 classic mode, what’s the losing condition? When you can’t make any more moves.

Also worth noting is that at the beginning of every level, the board is shuffled. I’ll leave it to you guys to piece out why on average, making a valid move in Bejeweled leaves fewer total valid moves on the board. Just assuming that’s case, the number we’ve now come to, the amount of points to progress to the next level divided by the base points on a given level tells us directly numerically how challenging we can expect the given stage to be. What’s amazing about this system is the level of control over the difficulty it gives to the designer. You can see it right there in our initial data set. PopCap took a vaguely exponential set of numbers, used a completely linear number set to smooth out that exponential curve, and then tweaks the numbers wherever play test told them that players were having a hard time or not being challenged enough.

For example, if you’ve been doing all the math with us up to this point, you may have already noticed that the increase in difficulty from level 3 to level 4 is much greater than for level 4 to level 5. This relatively complex system is totally invisible to the player. To them, it simply feels like they’re progressing since the system is built to continuously increase the amount the player is rewarded and make them feel empowered without breaking the difficulty curve. In fact, its this system that let the designers construct Bejeweled carefully hone the challenge curve, but this entire system is dependent on the lose condition and board re-shuffling it every new level. A slightly lazier designer who didn’t shuffle the board between rounds would’ve created a totally different and probably inferior game.

The really incredible thing is that you’ll see players who’ve played a lot of Bejeweled no matter causal, no matter how uninterested in strategic thinking, playing around with this system. Ask any long time Bejeweled player, and they’ll tell you not to use your special gems until you need them since they carry over between levels. If you ask them why, they’ll probably tell you, “Well, because it’s better,” without a word about the math going on under the hood. The math ensures that that’s the way things work, and it also ensures that they get a sense of that for playing.

Also, if you really want to know how deep this rabbit hole goes, answer me this. How much harder is it to make your first match on level 5 as compared to level 1? That’s correct. No harder at all but your road for doing so is vastly increased. This system is even designed to make you feel like a bad ass every time you get to a new level just by the way they combine their point system and their lose condition.

You can see the depth of thinking that goes into making a good game, puzzle game, or any other kind. The next time you hear someone trying to claim that building little puzzle games like this is simple, you will know better. Just for the masochists out there, here’s a little easy homework assignment for you. See if you can figure out what they changed in Bejeweled 3 or the Facebook version of Bejeweled and then see if you can figure out why. If you’re ever feeling stumped, just come back to the golden question: how does the player experience this?

The play test is one of the most important parts of game design

The play test is one of the most important parts of game design

The play test is one of the most important parts of game design

The play test is one of the most important parts of game design, but it’s also one of the hardest things to do well. There’s a lot more to getting useful data out of your players, than simply sitting them down in front of your game. Today, we’re going to talk about playtesting. This isn’t the same as the bug testing you would do if you’re a professional tester. I’m talking about the user feedback type of play test, that designers do to help us understand the real quality of our games.

Unfortunately, many young designers seem hesitant to go out and playtest. They often feel like their work is not ready to show yet, or that people just won’t get it, or the playtesters are only going to give them feedback they already know. Maybe, it’s just that showing your work to other people is really tough. It’s like reading them your poetry, or playing them a song you wrote. By conducting a playtest, you’re kind of putting yourself out there. The first major challenge in a designer’s career, is to overcome this shyness, to fully invest yourself in your work, without getting your pride tangled up in it.

At playtest, people will say negative things about your design. They will tell you all sorts of things you already know should be in your game, but that the team just hasn’t gotten to yet, or you simply don’t have the budget to do. It’s important that you don’t reject any of this feedback. Don’t get defensive, or try to explain to the player what will eventually be in the game, just embrace it all openly. Write it all down, and really listen, because all of this information has uses. You have no need to justify yourself to anyone. Your only job is to put out a good game, and the only way to do that is with feedback.

Once you’ve steeled yourself for all the criticism to come, the second thing to know about playtesting, is that it is never too early to do it. As soon as you have a prototype, as soon as you have squares moving around on a screen, you can test. In fact, James will often run tests well before, he’s even got anything digital to work with, creating a prototype out of a deck of cards, or even getting a bunch of people to run around a room can yield valuable data. Many times, design students will tell them when they go to playtest early in the depth cycle, that all anyone tells them are things they already know. That just means they aren’t looking at all the data.

“As soon as you have a prototype, as soon as you have squares moving around on a screen, you can test.”
As a designer, you have to observe everything. If all you’ve taken down are just the words your testers said, you haven’t looked closely enough. The order that people give their feedback in, is almost as important as what they’re actually saying. It tells you what’s most important to them, and where in your experience they encountered these issues. Make sure to listen closely. You’re going to be naturally biased about your game. You have a set of things that you know are wrong with the game, that are on your to do list to fix, so when a tester describes something similar to a problem you already know about, it’s remarkably easy to subconsciously think, “Yeah, yeah, I know about that one. I’ve already taken care of it, no problem,” when they actually might have been talking about a different problem entirely.

Additionally, early testing gives you data that you’re going to need for later. Each time you test, you’re going to see if the adjustments you made to the game, made the issues you encountered better, or worse. To do this, you need as many data points as possible. The longer your trend line, the more in depth your understanding will be. One final word about early testing. You may be wrong about your game. Embrace that. You may well find that what you thought was the core engagement of your work, wasn’t what people actually found engaging. Don’t reject that, that is the most valuable data you can get. As anyone who has built a game will tell you, the earlier you make changes, large or small, the cheaper it is to make them. Don’t cost everyone else on your team weeks of work, just because you were afraid to playtest early.

Now, let’s go over a few quick and dirty rules of how to test. First, try and talk to your players as little as possible. Anything you say to them, biases them, and prevents you from getting good data. You may feel the need to explain your game before starting, but resist that urge. Let them take a crack at it, before you tell them what they should be doing. This will allow you to observe what they naturally want to do in your experience, and gives you a better sense of where they get stuck, or what needs to be explained. Once they’ve had a go, or 2, then you can inform them.

When observing them, listen carefully for when they vocalize. Anytime your game draws an utterance from them, a sigh, a gasp, a thoughtful hmm, you’ve either done something right, or something very wrong. Also, try and see where they spend most of their time looking in your game. It will give you deep clues into what they feel is important, and what data they felt like they had to spend most of the time processing. Admittedly, this can be a very hard one to do, and you’ll often have to resort to asking the player, unless you can get all high tech and have a camera set up to record the session.

Additionally, create a test survey, rather than trying to get everything from simply talking to your players afterward. This will not only allow you to get data from a lot more people at once, it’s also unbiased data that can be cleanly turned into metrics, if you give your playtesters a 1 to 10 scale question, which I highly recommend doing. It puts less of a burden on your playtester, than making them write out whole paragraphs. It gives you an easy way to know if you’re making changes for the better in future tests. Just watch to see if the numbers trend upward or down. Just be sure to leave the playtesters room for comments at the end too, because that’s also helpful.

When you do talk to your testers, just be aware that as human beings, we all have a tendency to jump to solutions, rather than stating the underlying problem. When a playtester offers you a solution, like, “There aren’t enough power ups,” really dig in, and try to establish what underlying problem they are trying to solve. You’ll often find, it’s something else like, “My gun doesn’t feel powerful enough,” which may require a totally different solution than the one they offered.play-test

Lastly, be aware that we are all hardwired to avoid suffering, so make sure you’re testing in an environment where you tester feels okay walking away from your game. If you lock them in a room, or even have them in an environment where they feel socially compelled to play, they’ll try to make the best of it. They’ll try to get into your game. That will deny you one of the most important data points you can get, where your player gives up on your game, or walks away to do something else. Remember when you launch your game, you’re not only going to be competing with all the other games out there, but with every book, every movie, every TV show, even the the internet itself, so your game better be ready for it.

If you don’t have to worry about NDA’s, it can often be fun to grab several of your other game making friends, and test as a group. That at least gives your players other options for what to do with their time. Before we wrap this up, let’s talk about who to test with. Test with everyone, but know that the test results you get vary in value. For example, you are the worst tester of your game. You’re just too close to it. You’re naturally going to test your own game a thousand times over the course of its creation, but that sort of testing only goes so far. There’s all sorts of things that you’re going to get used to, things that will become second nature to you, that will seem totally alien to anyone picking up your game for the first time, so you need other people.

As a rule of thumb, if you think the difficulty on your game is just about right, it’s probably way too hard. Next, family and friends. Second worst testers. They’re biased, they can’t help it. Next comes the hard core. Hard core players are often the most willing to test but unless they’re the only audience you’re looking for, and they are a niche, you need to find other testers too. As hard core players, we simply have too much ingrained in us from the thousands of hours we spend playing these things. You’re really looking for people without preconceptions or biases. People who like games, but aren’t in any way invested in them. Strangers who owe nothing to you, or better still, know nothing about you.

Who makes the best tester? In my experience, little kids. They may not be your audience, but if they are, you can always count on them to be open, eager, and 100 percent honest. I hope that was useful, good luck honing those games to perfection.

Why schools should be like video games | Part 2

Why schools should be like video games | Part 2

Why schools should be like video games

Welcome to Part 2 of our series on how games can be used in education. Last week we talked about how games can free us from a fear of failure and make homework a learning opportunity rather than just an assessment by giving students the instantaneous feedback they need to freely discover and explore. This week, we’re going to talk about what that instantaneous feedback does for teachers and how games can help us give each student the lessons they need.

One of the biggest problems with schooling is that classrooms are simply too big to give each student the personalized attention they need. This is true of almost all modern classrooms, not just the overcrowded 60-person classes we sometimes think of when people talk about our educational crisis. Now, many of you who are watching this are probably much better, more experienced teachers than James but when he talks about it, he feels pretty strongly that it’s very hard to give 100% to more than 10, maybe 12 students at a time. Any more than that, and it gets difficult to understand where each student is struggling and to craft lessons for each of them on a personalized basis. Yet, this is what games let us do.

You see, one of the great struggles in trying to educate a nation whose population numbers in the hundreds of millions is that we have to create a standard curriculum for everyone. This is in many ways fantastic. It helps ensure that all schools are teaching up to a baseline level. It allows teachers to share ideas about curriculum nationwide. It creates a standard set of knowledge that colleges and universities can then build from, but it’s not right for everyone.

“They can allow us to serve the needs of each and every school child individually rather than having to hope that our universal standard works for them.”
In fact, you can pretty much guarantee that it’s not perfectly right for anyone, and this is especially important in education as often when you hear someone say something like, “I’m not good at math.” It’s not that they aren’t good at math but rather that at some point in their education, some part of the curriculum didn’t make sense to them and they got left behind. That small gap in their understanding just compounding over time as the class had to move ahead.

This problem could, of course, be corrected if teachers had both the information they needed to identify where each student was struggling, and the ability to tailor their assignments to each individual student’s needs. Clearly, that’s ludicrous in the context of modern schooling. No teacher will ever have time in the classroom to make specialized assignments for each student, and often they don’t even have the data they need to pinpoint what tiny sub-concept a student is struggling with.

Not so with games. Think about games as they stand today. Think about how many metrics games already take. We know wherever you click. We know how long you stood waiting to make a jump or how many people died on that one ledge. We can take in vast amounts of data and if we want, dynamically alter the experience based on that data. At the simplest level, we’ve all played games whether or not we realized it at the time, where they adjusted the difficulty on the fly based on our performance.

On the slightly more sophisticated level, we have things like the director in “Left 4 Dead.” Now think about using that for education. Imagine a child going home each night and the game being able to feedback massive amounts of data to their teacher, automatically calling out anywhere the child is struggling or highlighting places where they excel. Imagine it doing more than that. Imagine the game they play actually choosing challenges for the child based on this data. Imagine one child being assigned something that helps shore up their understanding of cross-cancelling fractions while another gets a little more time focusing on the order of operations.

Imagine the game actually being able to send the child through micro-tutorials on that subject if changing the play by itself wasn’t enough. Finally, imagine the game being able to put a special flag on the assignment so it immediately got noticed by the teacher if the systems within the game weren’t enough to help the student through whatever they might be struggling with. Games could automatically tailor assignments for us based on our needs without overburdening teachers who are already stretched to the limit, and it could give teachers so many more tools to understand where their charges may have misunderstood a lesson or missed a fundamental concept.

This may sound wild, like it would take an incredibly extensive games system, and it would but nothing beyond what we’re already capable of. In fact, when you consider that every student in America would be playing the thing, immediately making it the most played game of all time, producing a game like this suddenly sounds incredibly economically efficient. When we stop thinking on the scale of entertainment and start considering the size of the public school system, an endeavor like this, while by no means trivial, becomes completely reasonable. It would take a great deal of time and effort. It would require an incredible amount of work with teachers and subject matter experts, and even when, would probably need some trial-and-error before we got it right, but it’s no means outside what we’re already capable of.

When someone asks you why we should have games in school, beyond making them more engaging, you can tell your interlocutor that games allow us to provide teachers with incredible amounts of data to work with to better understand the learning needs of the children in their care, and that games, if we were willing to push for doing it, could allow us to automatically adjust assignments on the fly. They can allow us to serve the needs of each and every school child individually rather than having to hope that our universal standard works for them.

Why schools should be like video games | part 1

Why schools should be like video games | part 1

Why schools should be like video games | part 1

Over the coming weeks, we’re going to be touching on 4 concrete problems that educators face, problems which have come up time and again during James’ year with Games For Good. The first of these problems is the fear of failure. Right now much of the way our educational system is set up inculcates a fear of failure. It teaches you of being afraid of being wrong rather than seeing your mistakes as an opportunity to improve. This does not prepare us for the 21st century. Homework is the quintessential example of this. Imagine how the typical homework assignment goes. You get something assigned to you, you take it home, you do it, and you turn it in. A week later you get it back with a grade on it, no chance to revise or redo because by the time you get it back, it’s time to move on to the next thing. You better have gotten it right on the first try, or you’re simply punished with a bad grade. Often homework serves more of an assessment than a learning opportunity.
Now compare that to how we learn in games. Think about how many times you’ve missed a jump and immediately gotten back up to try it again. Think about how many challenges in games you failed only to try a new tactic or experiment with a different solution. You weren’t trained to fear that failure, you were trained to overcome it, and failure still had consequences. This was no lovey dovey everyone is a winner experience, but you were taught that what mattered was finding a solution to the problem in front of you as quickly as possible rather than just getting it right on the first try. The important thing here is that the problems in video games ask you, can you find a way to solve this rather than, do you know the solution, which is the approach most homework in our schools takes. Each problem in a game is a chance to learn and improve rather than simply a test to see if you already have the knowledge required to solve it. This approach, the approach that games provide, is vastly more beneficial for education as it allows homework to be a learning opportunity rather than simply reinforcement or assessment. It’s pretty much impossible to do that in modern classrooms as they are now.
“Through games, we can get kids experimenting, exploring and discovering freely and perhaps through doing so, get them to love learning rather than fear it.”
Often teachers only have a very limited amount of time, just enough to grade the work they give out. They can’t be giving the type of instantaneous feedback that students need to be able to rapidly iterate on problems and test out new solutions or theories they might have, and that’s absolutely not the fault of teachers, but it is an artifact of our educational system’s past that persists into today. When our educational system was created nearly 200 years ago, this sort of drill was the only option, and schooling itself was preparing young people to enter careers that were much more dependent than learning things by rote, factory work, basic shopkeeping. It was preparing them for a world where you couldn’t just look up something on the Internet or pop onto Wikipedia. Today on the other hand, we need to prepare students to find innovative solutions. We need to prepare them to apply the limitless data we have in front of us to solve whatever problem is at hand. It doesn’t matter if it’s a job in IT or the most esoteric medical research, almost all of our decent jobs today require innovation. They require you to find answers to problems you’ve never seen before and for that, you need to see failure as an opportunity to learn rather than something to be afraid of.

Today with computers and especially with games, we provide the opportunity to take a lot of the workload off teachers to free them up to actually teach instead of being tied up in the busy work of grading homework that could be done by a machine, a machine that could respond instantly and tell the students the moment they try something whether or not they’re correct. With games, especially digital ones, we provide the opportunity to create that rapid feedback cycle that allows students to focus on iterating on their mistakes and learning through their failures. We don’t simply present them with assessments but rather use our assessment time not only to assess but to provide learning opportunities. When somebody asks you why we should consider using games in schools, absolutely tell them how much more engaging we can make the classroom, but that’s something they probably already know.

Also tell them that we can finally do away with a classroom that instills in students a fear of failure, that we can finally be done with a classroom environment that discourages students from taking risks that lead to discovery and instead prepare them to innovate for the future, that we can free teachers of the burden of creating rote homework and instead let them focus on their real job, teaching, that through games, we can get kids experimenting, exploring and discovering freely and perhaps through doing so, get them to love learning rather than fear it.

How to be a developer | Part 2

How to be a developer | Part 2

How to be a developer | Part 2

Let’s review what we’ve discussed so far. Development is all about problem-solving. Breaking a problem down and finding the right solution. To do that, you need to be a great analytical thinker and a professional tinkerer who can take apart any digital system, understand how it works and put it all back together. The best problem solvers are explorers, who are constantly learning new tools and techniques on their own and from other developers.

Today, I want to start by talking about the third primary skill of an effective developer: communication. If you’re going to be working with other people, and you are. At some point, you’re going to have to talk to them. Most developers don’t really like this; they like to imagine themselves as the lone wolf hacker, tearing through code into the wee hours of the morning. Free of stupid time syncs, like meetings, but the reality is that real development almost always happens in the context of a team, because there’s a limit to what one developer can do. A well-coordinated team can tackle bigger problems, play to each person’s strengths and solve problems faster and better than if any of them had done it alone.

One developer who’s bad at communicating can wreck all of that. When people aren’t talking to each other, the various pieces don’t line up, the wrong problems get solved. Assumptions are made. Bugs creep in and projects run late. This is just as true for working with non-programmers, as with fellow developers. Somewhere on your team, there will be a manager or an artist or a marketing person who is vital to getting the project finished and out to the end users. If you weren’t communicating with them, they can’t do their jobs and the product will suffer.

“The best problem solvers are explorers, who are constantly learning new tools and techniques on their own and from other developers.”
How do you get better at communication. First, treat it like any other problem and examine the tools at your disposal: meetings, phone calls, Skype, chat, email, passive-aggressive check-in comments. These are ways to stay coordinated with the rest of the team, so don’t neglect them. You don’t wan to treat it just like any other problem, because now you’re dealing with people. That means listening to their ideas, giving the benefit of the doubt. Not assuming your way is always the right way. This is especially true when working with non-programmers, since your tendency will always be to assume that the programmer mindset’s right and the artist is just insane.

Take a deep breath, listen to what they’re saying again. Assume until proven otherwise that they’re just as good at their job as you are at yours. A team that communicates well will always get better results than a team who doesn’t. At this point, we’ve pretty much covered what it means to be a good developer. Of course, there’s much more to it than just the big picture stuff. Here are some more specific tips and skills you should pick up as a developer.

Number 1: math, at least through algebra and geometry. You don’t have to be great at math to be a programmer, but you will need to use it. Most developers won’t do a lot of advanced math, but you’ll definitely use algebra, trigonometry, geometry and basic probability in the course of your career. If you’re going into game development to finance, higher math is even more important.

Number 2: estimation. The software industry is famous for blowing through deadlines, sometimes by months or even years. Some of the is feature creep. It’s very hard to resist adding just one more feature, but just as often it’s due to developers who are bad at realistically estimating how long something will take. Actively work on your estimation skills. Break down each piece and estimate each component. Record your estimate and see how long it actually took you and figure out where you went wrong. If you’re not evaluating yourself, you’re not going go to get any better at it.

Three: microeconomics. If you can’t talk the basic languages of economics: supply, demand, opportunity cost, game theory and all that, you and the suits are just going to be talking past each other. Most of the real decisions on a project will be influenced by money. A lot of the programmers make themselves irrelevant in the decision making process by insisting on only thinking about making the software perfect instead of what’s best for the business.

Four: basic user interface design. It’s basically unavoidable. At some point in your career, you’re going to have to make something that an actual person will use and most bad interfaces come from programmers. Understand common UI metaphors and when to use them. Accordions, modal dialogs, buttons, icons, tabs, folders, all that. Learning to see it from the user’s perspective can make all the difference. You may not be enough of a designer to make it beautiful, but every programmer should be able to make something usable.

Number 5: low-level languages, like C and Assembly. You may not use them everyday. In fact, you may never use them, but the abstractions of all the higher level languages are built on the same basics of pointers, branching and arithmetic. At some point in almost every industry, performance becomes an issue. Understanding how the code works at a low level is the only way to get high-performing code.

Six: understand how computers work. This means understanding computing hardware, networking and operating systems. Most of the details of these things are nicely abstracted for you 99% of the time. Some day your team’s going to have to deal with packet loss or page faulting or hardware failures. You don’t want to be playing catch-up then. Having a solid understanding of how all these systems work will make you a better developer.

Seven: just start programming. If all of this seems like too much to figure out right now, it’ll never hurt to just get more programming experience under your belt. If you’re watching this on a computer or over the internet, you already got everything you need to start programming so get to it.

That’s about it. Once again, very big thank you to our friends at gamedev.stackexchange.com for their insights into game development. Again, if you’re interested in becoming a programmer, definitely make some time to check them out. Even if you don’t want to be a programmer, StackExchange has opened up a pretty neat site to ask and answer more general questions about games, which you can find at gaming.stackexchange.com. Thanks again fellows. I think you may have helped at least a few people better understand how to pursue this career. We’ll be back next week to kick off another multi-part series.

SCHOOL OF GAME DESIGN