¡Nuevo! En español. (Spanish translation by Andrés de Pedro)
GameDevLessons.com has migrated to HobbyGameDev.com - please update links!
Chris DeLeon's GameDevLessons.com Free Lessons
Vol 6 - September 10, 2009
Hello!
I'm Chris DeLeon (about me), and thank you for joining me for my monthly videogame development Free Lessons, vol. 6. This series is one of the ways that I aim to help new game developers get started, while helping current game developers take their work in new directions.
II.) Beginner - The Ways of Self-Education
Programming Language/API Documentation
III.) Intermediate - Defining Videogame Design
Inventing a Discipline For Every Game
IV.) Advanced - Types of Difficulty
Special Note About Starting Difficulty
V.) Taking Action - Don't Be the Donkey
Too Many Ideas, Not Enough Action
How to Tell Bad Ones From Good Ones
How to Tell How to Tell Bad Ones From Good Ones
Fastest And Easiest - Because First Ideas Come Out Poorly
VI.) Indie Recognition
VII.) Donations
VIII.) Next Newsletter
Special Feature - An Interview with Warren Robinett
To read previous editions, or subscribe: http://gamedevlessons.com/?page=free
If you found this link someplace other than your e-mail inbox, and would like to be notified when the next edition is available, you can join my spam-free mailing list. It only takes a minute, I will never send out more than one e-mail each month (only to announce these free lessons), and it's easy to unsubscribe at any time.
The free lessons are not intended to be cumulative - so you shouldn't need to read all previous editions to understand this one - but the different topics in each may be helpful to you. In particular, if you're new to my free lessons, I recommend Newsletter Vol. 1 for its non-technical conceptual introduction to programming, as well as its links to free resources for image editing, audio work, 3D modeling, and other game development asset creation.
II.) Beginner - The Ways of Self-Education
Most of the skills that you'll need to make videogames, you can teach yourself.
...says the guy that devotes much of his free time to teaching videogame making.
What I most like to do is help people that already know how to make videogames learn how to do it better. The sort of project-specific and game design expertise that I have to offer isn't of much use unless you can already make videogames, and a big part of that is knowing how to program. In sharing free materials and information to help you teach yourself, I'm growing the number of potential developers that I can work with on the challenges that I find most engaging.
A recent xkcd did a terrific job of concisely summarizing "computer expertise".
Being good with computers isn't about knowing everything. It's about knowing how to look up or figure out what you don't know. Similarly, teaching yourself to make videogames is largely a matter of knowing which resources are available to you, and how they can best be used to accelerate your progress.
There are a few other resources than Google to consider in this case, though. The main types of resources available to you for teaching yourself basics are Books, Websites, Programming Language/API Documentation, Forums/Peers, Code Libraries, Sample Code, Practice, and Past Project Files.
There are books on every topic, for every ability.
Here are some free e-books on programming languages.
Even though they're available online for free, I recommend going out and buying a real one, anyway. Or check one out from the library.
Relying early on too much on digitized resources encourages sloppy habits that shortcut learning, like copying and pasting code instead of getting in the habit of typing it. Looking at it on a computer screen also makes it harder to read and consider for hours on end before bed. Digitized resources are awesome for looking up information - they can be searched trivially - but compared to paper they still aren't good for the sort of prolonged exposure necessary to develop a rigorous understanding of fundamental skills.
Cost can seem like a factor, since good books on this subject can easily be in the $30-$80 range, but the important things to think about are that (a.) the cost per hour is quite low, (b.) the overall cost pales in comparison to paying for classes, and (c.) it's impossible to estimate value of "this professionally edited content was what enabled me to succeed in learning this" (I can say that last one about at least a few books I had growing up).
(Call me old fashioned, but a printed copy of Alice in Wonderland is infinitely easier to read than a PDF version, no matter how well formatted the PDF version is.)
Websites are terrific resources for providing answers to specific questions, and finding links to other useful resources like sample code. As explained above, I believe that they're inferior for conveying fundamentals (see: the notes immediately above in the Books section).
Programming Language/API Documentation
APIs, or Application Programming Interfaces, are massive branching directories of information indicating what functionality is built into a programming language's default functionality. Languages that are newer than C/C++, especially programming languages used for online content, have extensive APIs, like the Java API (I don't recommend Java for game programming, but its API is classic) and here is the ActionScript 3 API (ActionScript 3 is the #1 language that I recommend for making web games).
There's more information in there than any one human being should read in their lifetime, and a good 95% of it probably isn't at all relevant to what you'll be using most of the time to make videogames. These are handy references to keep a link to, and can be a lifesaver in clearing up detailed questions about what to expect in terms of handling of errors and edge cases. But once again, digital resources are a good way to hunt for specific answers to specific questions you have, or to find other resources.
But learning to program starting from the API would be like trying to learn creative writing in a foreign language beginning with their native dictionary.
Just like in school, if you have a question, there's a pretty good chance that other people trying to learn the subject have this question, too.
Unlike in school, your class size ranks in the hundreds of thousands, and there's a detailed record of virtually every question asked in the past decade or longer.
If you're finding yourself stuck on something - and I know this seems obvious but I'd be remiss to not reiterate it - do an internet search or crawl relevant web forums for an answer. If you can't find one, then - keeping to the school analogy - do a favor to hundreds of thousands of people over the next decade by speaking up on forums with your question someplace that others with your same question will find the answer.
In programming, a library is just a packaged chunk of code someone else wrote to handle specific functionality. This might include network operations, text display, sound playing, image manipulation/loading/displaying, physics simulation, etc.
A good programming library can address a problem that you had no clue how to solve, in a way that's (a.) fast (b.) easy (c.) leaves you clueless how to solve it without using the library. If your goal is learning about something in particular, like graphics programming or network code, point (c) may be a problem. In many cases, a library is used to do something that very smart people have spent decades researching and perfecting. In that case, that library can save you literally years of frustration, and let you focus instead on what you're doing with the graphics, network, and physics code to make your game stand out.
Jackpot!
Finding good sample code can be the difference between taking hopeless shots in the dark about how things tie together, and working with confidence that what you're starting with should work. This is also invaluable early on because by starting with code that you know should work, it can help you determine whether your programming environment is installed and configured properly - if it fails with sample code that came from a dependable source, you know that your project, environment, or compiler isn't set up correctly. That's way better than tearing your hair out hopelessly changing things in your code wondering why it's not working.
Find sample code. Read sample code. Compile sample code. Retype sample code. Modify sample code. Try commenting out various lines of sample code to see how it affects what happens. Add comments to sample code.
Search for sample code appropriate for your level of comprehension. If it's not too long, and it doesn't make perfect sense to you just yet, verify that it compiles in your environment, then print a copy to keep folded in one of your books for occasional review.
Good programmers are dramatically faster and more efficient than less good programmers.
"Good" here isn't in reference to total years of experience, how many different programming languages someone knows, or what projects someone has been a part of building. "Good" is referring to how quickly someone can synthesize the code needed to solve a problem, how well that someone can generate code which is structured with future needs/readability/adaptation in mind, and how easily the person can digest and interpret code put in front of them.
Some people are as fluent and comfortable with programming as they are with their primary speaking language. Others fumble through it like it's a secondary language they remember traces of from when they took a few semesters of it many years ago in school.
I chalk up that difference to the comfort that comes from countless hours of practice. The kind of usage that goes beyond fulfilling a specification someone else handed over. The kind of experience that comes from stretching and applying knowledge to solve problem or create a project that the programmer was personally invested in.
On one end of the spectrum, there's the way that someone with zero background in programming, but access to the internet, could cobble together code they don't fully understand to make something happen. On the other end of the spectrum, there's someone that can just breeze through whatever problem you put in front of them, perhaps occasionally taking a moment to reference documentation or copy something out of their vast library of past project files.
I'm reiterating this distinction for an important reason:
1.) You absolutely, positive, unmistakably, want to be in that latter group. You want to be the person that is really on top of their stuff.
2.) There is no doubt, none whatsoever, about why you will or won't wind up in that latter group, instead of that former group: practice.
Your past project files are much like sample code. The main differences are that you understand everything in it. Because you were responsible for the whys and the hows, you know exactly where to find what.
Time and time again, my mountain of past project code has been the source of my confidence in taking on a new project. Provided that I've done something in a past project, or done something like it, there's no doubt in my mind that I know how to do it, and can probably make it work again without much fumbling around. Instead of spending my implementation time thinking about how to do something, I could start from my past solution, and spend that time finding a way to do that something better.
The only way to get that mountain of past project code is to (here it is again!) practice. On your own time.
If it's done to satisfy classwork requirements, it won't be any different than what every other programmer has been exposed to.
If it's done to satisfy business goals, it's likely company property that you're not free to reuse.
Practice.
On your own time.
III.) Intermediate - Defining Videogame Design
At big companies, where specialization deeply takes root, there's a question echoing through the halls asked by artists, programmers, business people, and audio experts alike: "What do game designers actually do?"
The implied answer is often "nothing". They aren't drawing the images, coding game functionality, negotiating funding, or making sound effects.
The lack of clarity about what videogame design involves can pose an even bigger problem to someone making a project alone - it's entirely possible to get so involved in creating images, code, and sounds to overlook design considerations.
To people outside of our industry and interests, they may hear "designer" and think "graphic designer", as in, the sort of person knowledgeable about expensive typefaces and making brochures. Videogame designers aren't necessarily into that sort of design.
Whether experienced in videogame design or not, whether you're familiar with the role's meaning or not, I encourage you to read along all the same. The way that I think of the role might complement what you already know, or perhaps prove helpful in explaining it to others.
The game design for Solar SFUN, Topple, iZombie Death March, the dozens of indie freeware games that I did before, and for my contributions to EA's Medal of Honor Airborne and Boom Blox, all consisted of entirely different types of thinking, work, and deliverables. If we focused strictly on puzzle games, sports games, or first person shooters, we could present a more exact list of what videogame design means for those genres - but how does completely different work between different kinds of games wind up under the same umbrella of "videogame design"?
The most visible part of a videogame designer's work is tuning and balancing. This consists of tweaking values for jump height, run speed, reload time, enemy attention, puzzle piece probability, upgrade cost, and other numbers affecting gameplay. If set improperly, the values can make an otherwise good videogame sluggish, frustrating, unfair, boring, or oversimplified.
Numbers are often set by a combination of educated guessing (setting initial values by convention or aesthetic concerns), broad-but-rough adjustments to major variables (player health, cost of one army's units based on another's, other factors affecting the entire game/level at once), and final relative tuning through iteratively adjusting a select few numbers at a time until things feel right.
I've seen developers for complex strategy games use spreadsheets and linear models to approximate balancing - and I did something similar to this when developing TriChromic.
While spreadsheets can efficiently generate approximate starting values, these do not replace in-game iteration. In a game with any real-time element, how long it takes units to rotate, aim, and play animations can become a factor, and so can (depending on how collision detection is handled) how an artist models/animates a unit as it takes various actions. Even in a strictly turn-based strategy game, where those factors are equalized, it's difficult for spreadsheets to account for the complex dynamics of groups of units will behave in close proximity on varied landscape.
The part that differentiates a gameplay designer from simply being playtester with access to data files: determining what values should exist to be tweaked. The videogame designer also has to consider solutions to problems which may involve fundamental changes to the functionality. For example, if the problem identified is that the player can die too quickly from enemy attack, rather than increase player health or decrease enemy damage, the designer's solution may be to add a brief invulnerability time for the player to recover, noting that this solution encourages exciting moments as the player can behave more boldly when facing groups of attackers. (New variable to tune, introduced by that feature: how long should that temporary invulnerability last?)
The other highly visible aspect of what a videogame designer does is in the form of level architecture and item/enemy placement. There's more to level design though than setting up ambushes, building obstacle courses, and placing decorations modeled by artists. For some games - notably puzzle games or procedural action games - level design consists of none of those things, but instead come down to dealing with probabilities.
(For two examples of procedural action games, check out my old freeware games Burn 2 - see the Burn 2 Readme.txt for controls - or Battleship 88. Those games involved "level design", yet there are no level layouts saved in either game. The levels are generated randomly from ranges of possibilities that affect numbers involved.)
For games in less established genres, or for games challenging established conventions, there's the bigger question of what qualifies as success in a level, what sort of structures are navigable in a level, and how similar one time playing through a level should be to the next time it's attempted.
In the same way that a musician putting 20 songs on an album isn't just concerned with which songs are there, but in what order they come in for how the composition affects a first time listener's overall experience, game designers can't just think about isolated level designs. Consideration goes into how their ordering and variety can affect pacing, story, and the team's content needs.
There's more free information on level design in Lessons Vol 5.
Inventing a Discipline For Every Game
It's not a coincidence that many versatile videogame designers (not to be confused with people identifying specially as "level designers" or with skills limited to an established genre) express an interest in philosophy. This is not necessarily philosophy in the sense of what German Idealists said about old Greeks, but philosophy in the sense of metacognition - thinking critically about critical thinking, and planning about planning.
Videogame designers enjoy sifting through countless possibilities in search of meaningful patterns, to create terms and label and categorize. Inasmuch as philosophical banter evolved into the fields of biology, physics, chemistry, computer science, law, medicine, and mathematics, a major part of videogame design is inventing a discipline around making content for the current game project. They're often quick study types, eager to dive deep into new information, apply it, then forget it just as quickly to stuff their heads with new systems. (Contrast this to the cumulative learning of specialists in more consistent disciplines like programming, business, or applied digital art.)
What are the relevant terms and concepts needed to discuss and shape the game's detailed direction? What decisions will affect the options of future decisions, and what order can the decisions be made in to minimize thrashing of interdependent considerations?
To share an example simple enough to be covered here in its entirety, in 2004 I made a small "one of these things is not like the other" game for my fraternity's Spring Carnival booth.
The gameplay in that game consists of four pictures being presented, one in each quadrant of the screen, and the user indicating which of the four pictures is unlike the other ones. There can only be 1 right answer, which much be identified by the user under time pressure, and the machine is pre-programmed as to which answer is correct (no explanation or justification is involved). The game was played by public visitors of all ages, approaching for a few minutes at a time, in a kiosk set up.
Simple, right? I immediately began receiving suggestions of things from well-meaning friends. Many of those suggested sets were unusable.
Here's why: even though the fundamental goal, input, and content are simple, there's still a right and a wrong way to come up with a set of 4 images to use for one of these things is not like the other.
Consider this set:
Duck Fish
Eagle Penguin
Say someone suggests this set, intending the Fish to be selected, since it's the only one that isn't a bird. This question is unfair! Do you see why?
The problem with it, as you may have guessed, is that the Eagle is unlike the others, too, for being the only one on the list that doesn't spend significant amounts of time in water.
Or what about this set:
![]() | ![]() | |
![]() |
|
This question set also isn't fair. Can you spot more than one reasonable answer?
Check them out written:
Toothpaste Mouthwash
Toothbrush Triangle
This time the problem isn't with the subject matter. The Triangle is pretty clearly the only one on that list not related to dental hygiene, and it's the only abstract object.
The problem is due to not paying close enough attention to the words, or to details of the image composition. Mouthwash is the only word on that list that doesn't start with a T. The toothbrush is the only image that has a non-white background. At this point, there are at least three valid conclusions that could be drawn as the correct answer, making the 4th one unlike the others for not being a feasible answer. This kind of headache, especially under time pressure, leads to frustrating players by expecting players to read the designer's mind to determine which criteria is most important.
In the same way that considerations can be identified to rule out valid content from invalid content, fair from unfair challenges, the items and levels for real-time games can be created by a set of principles. How long into a level should the first action should happen? How many enemies at once should be in a room of a given size, with what frequency should new items should be introduced, at what pacing is it fair to raise the difficulty, and how much can the game reuse the same settings for consistency and cost-saving without seeming cheap and repetitive?
In an established genre, such as a space marine first person shooter, a third person survival horror game, or a falling block game, a videogame designer's first objective may be to research what else has been done by competitors in that space to learn from their experiences and improve upon their mistakes. It's a very different design challenge creating the 25th football game in a series, aiming to innovate enough to satisfy critics and excite returners without alienating the fan base.
To be sure, videogame design for a sequel still comes down to simplifying a complex space of possibilities into a manageable system of terms and concepts to be used as the foundation of furthered design and content development.
IV.) Advanced - Types of Difficulty
By the time a developer is nearly done with their game, they have played it thousands, perhaps tends of thousands, of times, and have practiced its controls and puzzles since they first took shape. What's an appropriate level of challenge to a new player may be boring to the game's designer, and what entertains the designer is going to be ridiculously hard to a newcomer. In making the game the appropriate difficulty, though, it is important to ensure that attention isn't just given to it's degree of difficulty, but that the right types of difficulty are adjusted.
If the source of newcomer difficulty isn't properly identified before being addressed, no amount of variable tuning will compensate for it, but attempting to address it the wrong way will introduce other problems to the game's entertainment value.
Although this section of the Free Lessons is focused on the ways that a game can accidentally be the wrong type of difficult, it's helpful to distinguish between a few intended types of difficulty to free up thinking about sources of challenge-
Myst is a hard game.
Street Fighter II is a hard game.
Final Fantasy is a hard game.
Anyone familiar with those franchises recognizes that those are three very different statements. Roughly:
In most cases, Myst makes it easy to do what you're trying to do, but hard to figure out what to do.
Street Fighter II makes it easy to figure out what you're trying to do, but hard to do it.
Final Fantasy is time consuming, and how easy it is to do what you're trying to do is a function of how much time you're willing to spend leveling up.
Before we delve into the different ways that videogames can be "hard", it's worth spending a minute clarifying why it's desirable to keep a videogame "hard" in any sense. In making the videogame easier, it's important to not overshoot that goal.
The movement that led to major publications writing at an 8th grade reading level has been spreading into the videogame industry. The argument, which makes sense at face value, is that content is made to reach people, and when a few adjustments can make it accessible to older people, younger people, less patient people, and busier people, both the developers and players benefit.
The problem, if I may use hyperbole, is that fundamentally different things happen in the kiddie pool than in an Olympic-sized swimming pool.
My concern is that whereas hard videogames can train a person to hone their ability to apply strategy, determination, practice, patience, cooperation, and properly dealing with frustration, an easy game teaches someone that success is merely a matter of sticking around long enough. (I went more into this point a few Free Lessons ago about the value hidden in videogames.)
And now, we'll look at some of the various ways that a game can be hard that aren't particularly fair. Most of these sources of difficulty cannot be addressed by adjusting hit points, power, or speed. A fix likely requires rethinking and redesign. The extremes of the sources of difficulty identified above - too unclear what to do, too difficult to perform important moves, or too much time repetitive required to make the game winnable - will be skipped in the list that follows, for having already been mentioned.
Testing without Teaching Schools don't test material before teaching it first. Doing this frustrates and infuriates people. And unlike school material, there's no chance that someone knows the nuances of how your videogame works until you've communicated it to them. Ideally it's helpful to think about game mechanics being introduced in the order of Introduction, Study Opportunity, then Test/Challenge. But at the very least, that introductory teaching is essential before expecting someone to excel at it.
Expecting Mind-Reading If something looks like it should have multiple solutions, but the puzzle or battle is contrived such that it can only be completed as the designer intended, the game is setting up the player for getting mad and saying "that should have worked." The appearance of multiple solutions should translate to multiple solutions, or affordances should be carefully rethought to steer the user toward the intended solution.
Victory Relies on Unexplained Emergent Behavior Most games with even moderately complex input offer some unintended combinations to jump a bit higher, run a bit faster, move puzzle pieces while others are falling into place, etc. In Doom and Goldeneye 007, it's possible to run ~40% faster by strafing while running forward - the velocity vectors get added together. These and other subtle time/health saving tricks will seem just as natural to the designers as the core interactions after so many hours of practice, but need to be introduced explicitly to the player if they're required for success.
Snags in Unexpectedly Steep Difficulty Ramps Assuming your game isn't the first time a person has played a videogame, they will likely be cruising along undefeated for awhile before their first setback. If it takes too many replays to cross that first hurdle, your game is going back on the shelf, probably forever. A player in this situation, going from no replays to replaying the same section many times without progress, is more likely to blame the game's makers for unreasonable tuning or inadequate instruction rather than think it's from an issue with their own ability.
Poor Affordance Affordance is a design word referring to how something's shape, structure, or style suggests its proper usage to a user. A handle affords pulling, a dial affords turning, a button affords pushing, and a spiky floor affords not-touching-or-you'll-die. The classic example of proper affordance in videogames are the weakpoints on bosses - glowing red areas or otherwise particularly vulnerable areas (brains, eyeballs) that were where the boss needed to be attacked.
Poorly designed affordance becomes an issue in videogames when the character in the crowd that the player can speak to doesn't "pop" visually in the scene (may be a matter of layout), if it's difficult to tell a door you can open from a door that you can't until you try (leaving handles off doors that can't be opened), or the player can't able to identify where a wall is fragile enough to be destroyed (hinted by cracks, rubble, significant discoloration).
Insight Puzzles An insight puzzle is a challenge that doesn't provide feedback for near success, such that getting it right involves a non-trivial shift in thinking, a leap between the data provided and the solution. In everyday life these come up in riddles, in school they come up in advanced proofs. In a videogame they take the form of needing to realize that the mirror isn't really a mirror but a window, that badguys can be thrown onto spikes and used safely as a bridge, or that arrows will become fire arrows when shot through a torch.
Where possible, proper affordance (see previous item) like a giant ice target being near the torch, or a subtle hint, like letting the player witness a badguy walking harmlessly across spikes, can make the difference between the player feeling clever by getting it right and thinking it's their idea, or the player getting stuck.
At the end of the day, the videogame is being made for game players, and it will be played without explanation or demonstration.
Consequently, the best way to check for fairness is to sit down a few testers, separately, that haven't worked on the game, and haven't seen it played by anyone. If they can beat the part in question with a little practice and no outside explanation or hints, it's probably fair.
If they can't, then investigate whether it might be one of the above sources of difficulty; if it's definitely not related to those, consider retuning some of the variables involved. Then find a fresh batch of testers - like bulls with bullfighting experience, they're dangerous if reused.
Special Note About Starting Difficulty
There's a famous rule from the old days of Atari that it's impossible to make your first level too easy or too short. By sheer virtue of the player's mind catching up to the new setting, new controls, new characters, new dynamics, and new audio, the newcomer's brain is overloaded and challenged even without difficulty added into the gameplay. They temporarily overlook the overload, searching for an answer to whether this investment of their time will pay off. Meanwhile, getting them out of that short, easy, dumbed down setting into real gameplay fast is critical to not losing the player's attention by creating the impression that the game's activity is too shallow.
It's easy to lose the player by overwhelming them with a performance test given too soon. This can scare first timers into believing they can't handle the game's difficulty.
It's easy to lose the player by boring them by ignoring the core gameplay for too long. This can lose first timers from a sense that the game isn't very compelling.
Meanwhile, the immediate reward of progress serves as an appetizer into the game's main course.
It's impossible to make your first level too easy or too short.
V.) Taking Action - Don't Be the Donkey
"If you aren't sure which way to do something, do it both ways and see which works better."
-John Carmack
Buridan's Donkey (traditionally known as "Buridan's ass") is a parable from philosophy in which a donkey, standing before two equally appetizing bales of hay, is unable to decide on a reason to eat from one pile rather than the other. Paralyzed by indecision, the donkey then starves to death, next to more than twice as much food as it needs.
Too Many Ideas, Not Enough Action
Lots more people have the skills related to game making - programming, digital artwork, storytelling - than are involved in making games. The problem in many cases isn't that they lack ideas for videogames, it's that they have too many ideas for videogames, and aren't sure how to prune bad ideas from good ones.
Without being able to tell bad ones from good ones, how can someone know which concepts they should start on? Which will be the most effective use of their time?
Like trying to cram too much through a funnel, the path from brain to hands jams up from uncertainty about how to narrow down the possibilities.
How to Tell Bad Ones From Good Ones
I can give you my answer to this question, but doing so wouldn't be very helpful.
What's a good idea for me to make is based on what videogames I know best, what ideas I'm passionate about, what types of work my own personal experiences have led me to see the most clearly.
What we want to know is what's a good idea for you, and there's only one way to get to that...
How to Tell How to Tell Bad Ones From Good Ones
Making games that turn out poorly is how you learn which ideas are bad ideas for you.
Making games that turn out well is how you learn which ideas were good ideas for you.
There's really no better way to know. No one else can know for you.
You can't know in advance until you've made some games to get a sense of how you work, what drives you, the way things look to you while you work on them, and how the people that you respect respond to different aspects of your work.
Pick one of your videogame ideas that you can create the fastest and easiest. If you can't quite tell which among the fastest/easiest ideas is smallest and simplest, just pick one randomly. Why the one that you can create the fastest and easiest? See the old Atari rule of thumb for beginning difficulty.
Then make that game.
Fastest And Easiest - Because First Ideas Come Out Poorly
Almost without exception, whichever idea a person decides to make first will come out poorly anyhow. This is particularly true if someone is making a videogame on their own, as opposed to pairing up with someone that has more experience.
More clearly: almost any first project is extremely likely to be a bad one.
That's even true if the project had potential to be a good one if taken on after accumulating more experience. Beginning developers just need to get it out of the system. The sooner they can do so, the sooner they can apply the lessons learned in that process to a second game project. Then it's possible to bury the crummy original work under a pile of newer, better work, like the rest of us have that have been at this for a long enough time.
Seeing people start their dream game as their first game is heartbreaking. It's a surefire plan to crash and burn. It will never be high enough quality to be satisfied with releasing it, but the inability to finish the first project (and the effect associating game making with ruining a dream project) can be distracting from getting back into videogame making. I've seen it happen, to dozens and dozens of college students that were once excited about making videogames.
(That a developer's first game will be bad, and should just be got out of the way, was point 1 of 3 in an old slide presentation I put together in 2006 for beginning game developers. Check it out for points 2 and 3 and how to deal with these challenges.)
Although Carmack's background as a legendary programmer means his quote is typically applied to videogame programming, it's every bit as relevant to art, design, and audio creation. My best work has come from when I created 50% or more levels or features than I intended to keep, then pruned out the weakest 1/3 of what I made. Some exciting ideas just don't turn out as well in-game, and it's hard to know in advance. This overproduction model promotes taking chances and risks, trying out ideas that may not work, because there are fallback options available.
Anyone's best 60% of their work is, obviously, better than the other 40% of their work.
The idea of overproduction is a bit like prototyping, except instead of focusing all your energy on one thing as a proof of concept, you split your energy into trying out a few different directions at once. If you'll spend your time making 9 levels to their halfway point when you only need 6, sketching 4 variations of an icon when you only need one, or trying out a few variations on core gameplay speed/pacing before settling on one, you'll take a lot of luck out of the equation. There are things we can't tell until we try them working on-screen with a controller in real-time, and those are the things that make all the difference in a videogame.
Besides going beyond code into content creation, it also goes beyond content creation into game creation. My best downloadable freeware games could not have been the only six projects that I worked on - they were only possible in the context of the many other downloadable freeware games I've developed. My favorite 42 experimental gameplay projects could not have been the only 42 made, to exist I had to spend 7 months making all 219 of them.
One of the patterns from which one-hit wonders emerge in the music industry is when their first major release is packed with 18 of the best songs they've ever played, out of dozens, even hundreds. When their next CD comes out, they're competing against the best material they had accumulated in the years before becoming famous.
Even the best batters don't hit a grand slam every time, every play Shakespeare wrote wasn't groundbreaking (some of them are considered downright terrible), and every game a developer makes won't be his or her best work. But having created it increases the body of ideas, concepts, and code that might go into future projects. Having created it adds to the pile of variety, breadth, and tangible byproduct of experience that a developer can mine looking back to identify best works.
If it's hard to tell which idea seems better, go for the quicker one. If you can't tell which is quicker, pick one at random, flipping a coin if you have to. If you have the time, money, passion, and tummy room for it, eat both bales of hay, starting with either one.
Just eat the hay. Don't starve.
If you've been sitting around thinking about making videogames and haven't done so yet, whether you've been keeping up with my Free Lessons or not, whether you think you've got time or not, go make the easiest and fastest videogame you can make. Need more help to get started? Check out the other Free Lessons for more information and links to more resources. Whatever excuse you might have in mind, another thousand readers are thinking the same thing - if you'll find a way to get past it and build momentum, you'll have an immediate upperhand on thousands of other would-be developers.
In last month's Free Lessons, I put out a call to rising indie developers to nominate one another (or themselves!) for a chance at some additional recognition and acclaim.
Congratulations to Juan Campa, of Venezuela, and his nominator Jorge Palacios! The following letter came in from Jorge, included here because it very effectively links to Jorge's work, puts it in greater context, and shares the excitement of what he has been up to:
Hi Chris,
My name is Jorge Palacios and I'd like to nominate Juan Campa. Juan is a student at the Simón Bolívar Universiy (USB in Spanish); one of the most important and
recognized universities in Venezuela. Juan is one out of two developers in *Gasp Games (formerly DotSlash Studios). They won 2nd place on Dream, Build Play 2008 (Battle Tennis) and now they've developed Guru Guru (review 1, review 2) for this year's DBP. Furthermore, he participated in the Caracas Game Jam (part of the Global Game Jam 2009) and was one of the developers of Gnaka-gnaka.
He's given Venezuela an important recognition world-wide and those are the reasons for the nomination. You can also check out his blog where he talks about his game development tool (a debug console) for the XNA platform.
Jorge Palacios
Incredible work and accomplishments!
Thanks to all that submitted nominations, and keep up the excellent work!
These Free Lessons are developed as a gift to the community, and I would like to continue developing them, but they are very time consuming. If you find these lessons valuable, and can afford to make a small donation of $10 (cost of a small book), $30 (a brisk group training session), or even just a few dollars (to show your support, and encourage me), it would be greatly appreciated and help me continue setting aside the time needed to keep quality a priority in my free lessons. PayPal makes the transaction safe and simple - you don't even need to have a PayPal account if you have access to a credit card:
Special Feature - An Interview with Warren Robinett
I recently had the opportunity to interview videogame legend Warren Robinett (developer of Adventure for Atari, and cofounder of The Learning Company). I had hoped to include highlights of that interview in this newsletter, but transcribing and editing the informal discussion has proven more time consuming than I had first hoped. It'll be ready in time for next month's newsletter though - bear with me!
Chris DeLeon
PS I am writing this newsletter series to help people, and I want the contents to reach as many people as possible. Please pass along this link if you know someone that might find this useful: http://gamedevlessons.com/lessons/letter6.html Sending the link works better than copy/paste, since that way they'll see the latest updated version with Q&A or corrections.
PPS If you'd like to be kept up-to-date with these monthly mailings, simply subscribe to the GameDevLesson.com Monthly Newsletter: http://gamedevlessons.com/?page=free