En español. (Spanish translation by Andrés de Pedro)
Chris DeLeon's GameDevLessons.com Newsletter
Vol 3 - June 3, 2009
Hello!
I'm Chris DeLeon (about me), and thank you for joining me for my monthly videogame development newsletter, vol. 3. 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.
For this edition, I'll try using lists with explanations. My hope is that this way I'll be able to provide just as much information, through less text, to give more value for the time spent reading.
II.) Beginner
III.) Intermediate
IV.) Advanced
V.) Perspective
VI.) Schedule
Volume 1 - April 2009: gamedevlessons.com/lessons/letter1.html
I'd encourage at least checking it out if you haven't already - plenty of resources and starting material. A few key themes are important enough for reptition between newsletters, but if you're just getting started, I'd suggest going back to read this volume before the latest one.
Volume 2 - May 2009: gamedevlessons.com/lessons/letter2.html
This edition includes an extensive article on the value that videogames offer in the form of experiential personal development. It also has details on my offer to provide free training and advisory services for those interested in learning about videogame creation specifically to help alleviate systematic challenges facing civilization (seriously.).
Volume 3 - June 2009: gamedevlessons.com/lessons/letter3.html
This is what you are currently reading. Please share this link with others, instead of copy/pasting or forwarding this text around. By viewing it online, you can see the latest version with fixed typos, late clarifications, or added Q&A for questions sent my way.
Subscribe: 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 newsletters), and it's easy to unsubscribe at any time.
6 things that helped me go from making no games to making my first games
1. Turn off the ways your computer tries to hide technical details
A car mechanic - even more so a car designer and manufacturer - needs to know what a car looks like under the hood, and can't just enjoy the smooth, shiny, colorful outside like everyday drivers.
Browse online to find out how you can adjust your operating system's settings to display file extensions and hidden files. Until it's obvious when looking at a folder that a ".exe" (runnable program on Windows machine) isn't the same thing as a ".ico" (icon image), it's impossible to get started because the carburator, car battery, and engine are all disguised to look the same. It's also useful to realize that the contents of every file, whether a readable .txt file, a nicely formatted .doc file, or a viewable .png image, are all just a string of bits, and often the extension is the computer's first way of knowing what program is most effective in interpreting those bits for your viewing.
2. Learn to program – generic programming, not 'game programming'
Just as Paint or Photoshop translate visual arrangements into image files, and Audacity or SoundForce translate listenable sounds into audio files, a compiler is the piece of software that translates human-readable program code into runnable program files.
I suggest starting with looking into the C programming language. Once pointers and structs are understood well enough to seem useful, moving on to either C++, JavaScript, or ActionScript 3 will accelerate your work, building on many of the same concepts but introducing new ways to organize larger projects to complete them in less time. If you're on a Mac the program XCode (either already installed or obtainable for free) is all you'll need to turn human-readable program code into runnable program files. If you're on a Windows PC here's the free compiler and development environment that I used happily for many years:
www.bloodshed.net/devcpp.html Dev-C++ 5 (PC only; use XCode on Macs)
3. Strive for breadth in your early learning, not depth
Elementary school covers little bits of lots of subjects - it isn't 6-7 years spent on microbiology. Extreme specialization is best when it comes last, if ever. A general understanding of the main conceptual tools at your disposal, best obtained by first writing simple text programs that display numbers and take keyboard input, can be mastered in a finite time and will serve you well practically as you progress forward. Digging too deep early on into any area of coding specialization could literally consume a lifetime addressing impractical hypotheticals or optimizing for invisibly marginal gains.
You don't need to learn how to write networking code for an MMORPG, develop AI for a 3D game that navigates hallways in tactical formations, perform advanced physics calculations to simulate realistic jointed animations, or render fancy performance-intensive special effects. People write their Ph.D. theses, establish middleware companies, and build specialized hardware to attack those challenges. Especially as a beginner, it's best to turn to existing libraries that encapsulate the fruits from those countless hours of labor (Allegro, SDL/OpenGL, DirectX, etc.) or look up example code from books/websites on the subject on an as-needed basis, rather than independently trying to rederive their work.
The main goal is to get a sense of how program code explicitly describes and organizes systems relating program data to output, and input to program data, creating space for our user to relate output to input. Building this connection does not require an especially deep mastery of any particular type of programming.
4. Then figure out how to program a videogame's building blocks
Once you can do these 5 things...
|
...you can make virtually any 2D videogame ever made.
Really pause to think about that for a moment. Every 2D game is images displayed, sounds played, input taken, things happening between user input (unless a strictly turn-based game), and certain things changing when the images touch certain other images.
There are, granted, a handful of surprisingly straightforward programming tricks (like tile-based levels to optimize collision detection), and about a half dozen key formulas from geometry, trigonometry, and matrix math that will help you do other nifty things more efficiently. Even still, these are mostly just more clever ways of what you're technically capable of doing given a practical understanding of those 5 concepts.
Note that if you followed the above link under to download Dev-C++ 5, there's a handy library you can use with it called Allegro that's installable via the Dev-C++ Package Manager. It comes with many clear examples, and trivializes the above fundamentals of image and sound loading/use, timers, and input. Collisions, for many applications, are as simple as less-than greater-than comparisons to check for rectangle overlaps, or distance checks between circles. For Linux Allegro, or discussion forums, see www.allegro.cc/. For any OS (including Mac), SDL is a powerful alternative that has a slightly steeper learning curve: www.libsdl.org/.
5. Be your own supplier of basic art, audio, and interface design
Learn to make simple images (with transparency), record/edit basic sounds, design basic game menus (borrow menu layouts from other old games when getting started if needed, but never use anyone else's art/audio).
You won't want your ability to practice game development to be dependent upon finding, waiting on, or counting on someone else to make art and audio for your games. Better to get things done with rough graphics and sounds than to be stuck in the mud with code but no assets, and there is much you can learn in the process of practicing with the tools of other disciplines. When you do begin working with others, you'll have a huge advantage in working with them by being able to make placeholders to avoid being held back by content creation time, and they'll benefit from having exact template files handed over clearly answering any questions about dimensions, number of animation frames, and so on.
Free program available for image creation and manipulation:
gimp.org GNU Image Manipulation Program
Free program available for sound effect creation and editing:
audacity.sourceforge.net Audacity
6. Start small. Simpler. No, smaller. Less innovative. Now smaller...
I mention this, in some way, in every newsletter. I will continue to do so. There is no more surefire way to throw off a potential hobby or career in videogame development than to begin by biting off more than can be chewed. Either it never completes, or it completes well below quality expectations, and either way a discouragingly exorbitant amount of time winds up vaporized going into something that you won't want to share.
For your first few games, start as small as you possibly can, to gain a better sense of how long it takes to generate questions worth answering, answer those questions fast enough to beat temptation to ask more, and implement all those answers. Dice games, sliding puzzle games, games of tag, memory games, and so on make good early projects.
For many people, Super Mario Bros from NES was either their first game or the oldest one they found compelling. I would advise starting simpler than a platformer. Making a camera that scrolls isn't hard; however, making the images and levels needed to fill a game that has a scrolling camera is incredibly time consuming, and it is far more likely to go well if it's not one of the first games that you attempt to build.
5 ways to turn domain and tool competence into a habit of videogame creation
1. Doing is half the battle
People have said "knowing is half the battle" for so long that lots of tech savvy people, somehow, forgot about the other half.
"I can do that" is critically different than, "I'm doing that".
In the time that it takes for "I'm doing that" to turn into "I did that" or even "I've been doing that for years", the former stays "I can do that" until it sadly becomes, "I never did that" or even "I wish I had done that".
Time must be put into it. Regularly. It must become a priority over something else that currently holds priority over it. If the thinking is, "I'm not good enough yet at doing this to make it a priority" - that approach will plainly prevent someone from ever becoming good enough at something to make a priority out of it.
2. Plan with a mock-up screenshot and a 1-page or less ordered to-do list
Not every game benefits from having a design doc. With small projects, a concise to-do list is often the right way to think through project needs without getting lost in writing prose.
An equally important part of project planning that can serve much the same purpose as the list is the single faked 'screenshot' showing roughly how the finished game might look while in action. There is no need to attempt drawing every level or situation from the game. Having that one image is a very quick and easy way to force answers to some important design questions: how large are the characters on-screen, how much of the level can be seen at once, and how will gameplay values (health, lives, score, map) be indicated? As a freebie, parts of the planning image can be easily cut out and used as functional placeholder art during the game's early development.
3. Don't do it for the money (yet)
Does anyone start playing their first instrument, sign up for dance lessons, or learn how to play basketball, under the pretense that the activity is being learned as part of a career strategy?
It's enriching. It's empowering. It's challenging, creative, stimulating, and poses infinite room to grow over an entire lifetime in technical, creative, and human understanding. You'll always have more to learn and try, I'll always have more to learn and try, Shigeru Miyamoto and Will Wright will always have more to learn and try. Do it for those reasons.
4. Back up your work
Hard drives fail unpredictably, fires start, files get corrupted.
It only takes a few minutes at most each day to back up your work. It's best to back it up someplace off-site (on a server through a webhost, over source control like svn if possible, or gmail yourself attachments), second best to have a physical copy someplace (USB flash etc.), and third best (but still infinitely better than not backing up) to just keep zip files of your project's folder in a backup directory on your computer.
There's never a good excuse for data loss to waste more than a day's work.
The biggest threat to be guarded against isn't having to do the work again though; when a substantial amount of creative work and/or detailed programming is lost, the effect can be devestating to morale, depth charging a project's schedule and a developer's motivation to continue in videogame development. Protect yourself (and if applicable, your team members) from this nightmarish, easily avoidable disaster.
I visualize myself frustrated, thinking, "I wish I had more recent backup!" Not wanting to feel that way has kept the experience strictly in my imagination since 2001. That's when I lost a few weeks of original, experimental work on the procedurally-generated destroyable terrain, colored dynamic lighting, and artificial intelligence for Burn 2 (Windows/PC game), pieces I then had to rewrite a second time from scratch.
If you have a side, hobby, or (especially) professional project now that you haven't backed up in awhile, please do so now. This newsletter will be here when you get back.
5. Do a "cover" of someone else's existing game for guidance and momentum
"Cover" here isn't referring to a box or manual cover - it's referring to "a recording of a song by a singer, instrumentalist, or group other than the original performer or composer".
Feeling a lack of inspiration, or not sure where to start? Remake a small part of an old game you like. No need to build out the entire thing - though that has been done, it takes a very long time, and as you hit diminishing returns in learning it quickly becomes a senseless way of destroying time. However in copying the core engine behavior, level format, inventory system or puzzle mechanics, and thinking about level creation, powerups, score values, timing, or enemy movements with a developer's level of detail, you can learn a great deal more than is picked up by merely playing games.
When someone is first learning to play a guitar or piano, they'll often learn how to play someone else's popular or classic song before trying to compose their own music, right?
Ditto.
I harp on clones as a waste of development energy and consumer mindshare, and readily downplay their artistic significance. Am I really advocating, then, spending time on partly rebuilding an old game verbatim? Absolutely. I believe that doing so as a beginner builds important skills and understanding that can help tremendously when trying to innovate successfully.
It's partly from developers lacking conceptual understanding relevant to successful innovation that causes either (a.) the developer to play it safe by sticking to knockoff work (or b.) driving publishers or other funding sources away from innovation because the few bets they ever placed to it burnt through their money.
It would be like you paying someone to compose a new song, but that someone has never learned to play any other songs first. I don't care how well they can pluck the strings or strike the keys. I wouldn't put my money on it.
5 question areas that I hope all experienced developers are considering
1. It was difficult for you to get to where you are today, right? What can you do to help others get into it?
When get older we'd all like to have better videogames to play. Sooner is better than later to give kids or peers the head start and foundations help that you wish you had.
How it helps you: Some of the people won't stick with it. Some of the people will not do much with it. Inevitably, someone from the people that you help will outpace you, since their young and nimble brains are more on top of what videogames have become instead of what they were 20 years ago. Meaning: your new boss will be nicer to you.
2. If you could make any videogame, what sort of game would it be, and what would it be like? If you are not currently on track to make it, what changes can you make to help put yourself on track to do so?
It's in everyone's interest that there are as many "dream projects" made real out there as possible, the best of which will almost certainly offer more to the collective culture than the clones output from corporate games factories.
How it helps you: You've only got one life to live. In ancient Egypt, there wasn't much flexibility in who got to decide what the Great Pyramids and Sphinx should look like, vs who had to drag 2.3 million 2.8-ton limestone bricks to build them. The world has (mostly) changed, and what opportunities there are for upward mobility goes to those that are constantly preparing and looking out for them. Remember that no one really knows what they're doing the first time they're calling the shots, so everyone doing so had to get that out of their system at some point (ideally on a free side project first).
3. Excluding digitized versions of solitaire, chess, checkers, and tiny web game diversions, most people still don't see the point of videogames. Why? What can you do to either help a new audience discover the benefits of videogames, or help videogame developers discover a new audience?
A bookstore filled with works written mostly by male software engineers wouldn't speak effectively to many aspects of the overall human experience on earth; why should we tolerate that from videogame stores?
How it helps you: Unless your favorite game is either Space Wars or Pong, the only reason you got into videogames is because someone else dreamed up something that appealed to you. I strongly believe that videogames can play a healthy and positive role in human development (see: newsletter #2: gamedevlessons.com/lessons/letter2.html). As I see it, the more people and perspectives that we can get involved in playing and making these things, the better world you'll be leaving for your grand kids.
4. Videogames still have outspoken opponents - people concerned that videogames are bad for attention span, a waste of children's time, advocating violent reaction to conflict, or any number of other worries. Which of their concerns are the most on-target, for what types of games, and how can we be more conscientious of meeting their concerns? Can we turn their criticism into creativity?
Someone concerned that today's films or blogs are all junk can do the most good by making one that isn't; our work only touches thoughts, so unlike the cigarette or liquor industries we can have the potential to remove destructive elements without giving up the essence of our product's appeal.
How it helps you: You're more likely to still be enjoying novel experiences as you age, instead of still killing more zombies in World War II settings. We all win when more of the people critical of today's videogames harness that river of complaints and use it make a superior product, but if they're too hopelessly disillusioned to get involved, nothing stops the rest of us from trying. Moreover, whatever experiential learning opportunities playing videogames may provide, there are surely diminishing returns when the fundamental activity of every game played is the same over and over again.
5. What arbitrary principles and ideals do critics (or publishers, producers, even players) emphasize that could be misguided in certain contexts?
Some of the videogames that I'm most happy to have played broke from one or more of these seemingly reasonable ideals:
|
How it helps you: Everyone else is assuming that what's true in many cases is true in all cases, and it's creating blind spots right under our noses of things we'd love to have, that are well within our development capacity, that no one else is making. Shadow of the Colossus, Guitar Hero, Mechwarrior 2, Braid, The Sims, Portal, Myst, Left 4 Dead, and Goldeneye 007 all broke from some of the (then) assumed ideas about how games should be made, played, or sold.
It's what's in the imagination that counts.
I tried the first Mega Man on a whim. I was at the local rental store, and the box appealed to me. I bought later versions of Mega Man because I wanted to refine my concept of what I read the new bosses were like – what weapons they used, how they moved, and what their stages would be like. And once I had that, the boss was mine, a part of me and my powers, in the same way that Mega Man took on their powers by beating them. I fought them in my backyard on the trampoline, I was chased by them in dreams, I drew crude pictures of them battling each other between lines of poorly written dialog.
But it didn't matter that my pictures were crude, it mattered that they were sufficient to excite synapses and fill in between my thoughts. It likewise didn't matter that the graphics, sound, and interactions of Mega Man were crude. For the same reason.
Playing videogames is like installing new software in the brain
Whether a game character looks like a still photograph, a blocky picture, or it looks like a $100 million budget film...
Whether a game lasts 5 minutes or 2 hours or 350 hours...
The purchased part is a compressed version of what decompresses in the imagination through playing. Like playing a MIDI file on different sound cards, it didn't always decompress exactly the same between one brain and another, but the same tune was unmistakably there.
What happens inside the player's head, while and after they are playing the game, or even before (Gravity Man, Gyro Man, Magnet Man, Air Man... such cool ideas!), is the most important part. What happens on screen, how long it happens, and how it looks while it happens, is an instrument to implant, adjust, and shape ideas.
Of course, the game can be enjoyed as a transient aesthetic experience, as when attending a symphony, or casually browsing an art gallery. But whether it's to the videogame connoisseur, or to the player too culturally removed to treasure a passing artistic moment, what I think compels most (young?) players is the prospect of getting new toys to play with inside their head.
This is the secret to how people were able to stand, nay, fall in love with, old videogames, and why people can still find great novels more compelling than films, TV shows, and (bad ;) videogames.
Red Rectangle Gaiden
Years ago, I was just getting started transforming myself from a freeware hobbyist into a developer of commercial videogames, and I was finding myself getting sucked into the zeitgeist of believing videogames were mostly about mechanics. If the gameplay could work with graphics, then it must work (first or also) with colored rectangles instead.
Fellow indie John Nesky (of www.johnnesky.com) found where I wrote about this at the end of a short e-book I wrote in 2005 filled with maxims related to videogames. He helped me come around to admitting that it matters a lot whether you were a ninja, a knight, or a toad, and not just because it affects what actions you're expected to do – go back far enough in videogame history and you'll find ninjas, knights, and toads had pretty much the same abilities. I was over-extending my then young hypothesis that what people learn from videogames is in conditioning to develop conceptual models (strategic problem solving), rather than superficial representation (looting a bank), and in the process had undervalued that the superficial representation had definite value other than learning context.
Abstract thinking exercises aside, there just aren't as many fun things that I can do in my mind with a red rectangle that climbs up walls, gets pushed or pulled by changing winds, and can attack with multiple versions of its shadow - compared to what my mind does with a ninja capable of those same things.
What's in this universe? What's it do? How's it do it?
Growing up, videogames were my sources of mental action figures, new things for mental action figures to do, or new places for mental action figures to do those things.
This is also why I have a greater appreciation as a lifelong videogame developer (and player) for David Crane's A Boy and His Blob: Trouble on Blobolonia from 1989 or Fukio Mitsuji's Bubble Bobble from 1986 than for Infinity Ward's Call of Duty 4 Part 2 ("Modern Warfare 2" they're calling it) - those first two games gave my imagination fantastic possibilities to wrap itself around, and a new way to see the world and characters and spaces interacting. War games are generally cashing in on reinforcing ways that people already see the world.
I've never uninstalled any of the imagination toys. I still tote my full collection of dinosaurs, robots, aliens, ninjas, soldiers, mutants, spies, monsters, ghosts, elves, scientists, gangsters, demons, witches, thieves, princesses, Lemmings (break for a fun fact: Lemmings came from David Jones, the guy that later invented Grand Theft Auto), helicopters, mechs, submarines, tanks, hovercrafts, spaceships, racetrack pieces, warp pipes, teleporters, gravity boots, grappling hooks, giant keys, computerized keycards, jungles, underwater cities, dark hallways, haunted mansions, ancient tombs, spacestations, magic swords, lasers, phasers and cloaking devices everywhere I go.
I've filled appointments up until early September. Feel free to drop me a note any time if you'd like to inquire about being next on the list. I can't say for sure whether I'll still be doing this 2010, and already half of my months between now and then are scheduled.
If you only have a one or two line question, I'll probably answer it for free. If it's a particularly good and succinct question, I'll include the answer in my next newsletter - then who knows how many people you've helped by getting a free answer to something you wanted to know?
Until next time,
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/letter3.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: gamedevlessons.com/?page=free