This article aims to teach you the basics about how games are made, and what they're made of. The individual fields of game development will be introduced and explained briefly in a simple way, without getting too technical or confusing. For those who want to jump in and start learning, resources (tutorials, software, stuff like that) will be linked as well.
Note:Please keep this article "Under Review" while it is being completed with help from the community! This article still needs a lot of work and is meant to serve as a starting point for beginners. If you have some resources you'd like me to consider linking to, please PM them to me.
The Fields of Game Development
It takes a set of rather unique skills to create a full game; they're made of a lot of parts. This is why game studios often have teams dedicated to making games, with employees from all the necessary fields. It's hard to make even a simple game all by yourself, though it's getting easier with the advance of technology.
Let me introduce you to these fields individually. Once you're introduced, there will be resources to get you on your way to learning whichever field(s) you're interested in.
Programming makes the gameplay itself, and all of the 'gameplay logic'. Jumping, moving, picking up new weapons, and saving/loading your game wouldn't be possible without a programmer.
Essentially, programmers tell the computer what they want it to do. Computers don't speak regular, human languages, though. They aren't that smart. You have to use a programming language to communicate with them, and instead of just using sentences, you use code.
This is essentially what programming is, but in order to really decide if you like it or not, you should just look at some beginner tutorials and get the basic hang of actually writing code and how the code works, because that kind of stuff is hard to explain in a few sentences.
Games must have some form of art (conventionally). The kind of art you need depends on whether you're making a 2D game or a 3D game.
2D games use 2D images, made in Photoshop, Microsoft Paint, GraphicsGale, GIMP, and other such programs. The programmer deals with drawing the images to the screen and moving them based on the game mechanics. These images are usually animated, such as to make a character jump, or swing a weapon. This is done by drawing multiple instances of the image, all in different poses as the image does whatever you're animating it to do.
3D games use a mixture of 2D images and 3D 'models'. Models are made of vertices, which are just "places" or "points". Those vertices (also knows as vertexes, or verts) are connected to each other to form triangles (tris), made of 3 vertices, and/or polygons (polys), made of 4 vertices. Some programs allow you to make polygons out of more than 4 vertices. Models are made with programs like Blender, 3DS Max, and Maya.
3D games also have to animate some of their models, like the player and the enemies, otherwise your game would be made of a bunch of still objects sliding around on the floor instead of walking or running (and that would probably be lame). Animations are commonly done by binding a set of vertices to a "bone", and moving all of those vertices at the same time just by moving that bone.
So you'd have a bone for the upper left arm, a bone for the lower left arm, a bone for the upper body, a few bones for each leg, and so on. You can move those bones into 'poses', like placing a foot forward. You make a lot of these poses and the software you're using to model and animate will move from one pose to the next when you play the animation. So you could have one pose with the character standing, the next with the right leg lifted, then the right leg set down, then the left leg lifted, set down, and so on, to create a full animation of a character walking forward.
3D games also have to put textures on their models. Textures are made like 2D images, and then they're "put on" the model. Modeling programs often provide you with the ability to "UV map" your model. This is how you decide where your textures are placed. It's hard to explain in text, but essentially, you tell your program how the texture should be laid out across all of the tris and/or polys that make up your model.
Textures can be the actual colors that draw the character, like their black-and-white suit and tie, their actual face, like their eyes and eyeballs and their lips, and so on. Those kinds of textures are sometimes called 'skins'.
Other times, your textures are like tree bark that you wrap around your tree models, or rocky textures that you put on all your stones and mountains.
Composers and sound designers don't just create music and sound effects for the game: a large part of their job is implementing the audio. This can be anything from figuring out when and where certain sound effects should play to configuring how dynamic music systems will behave. They will also be in charge of hiring and directing voice actors and musicians for live recording.
Game writers deal with the characters, dialog, the lore of the world, and so on.
But you can't just drag a novel writer in and tell them to write up your game. Games are much different than novels or movies. You have a lot of other means of communicating your narrative to players. The art style, the mechanics themselves, the music and sound, they all have an effect on the mood and environment of the story. Game writers, or "game narrative designers" as some people call them (I think it's more fitting, too), aren't just going to be writing text. There's a lot more to game narrative than text!
Note: Unfinished. I've heard that game companies often don't actually seek out writers, and you kind of have to work your way up if you ever want to be a game writer (like it is with game designers). However, I'm not in the industry, so I need someone to clarify here.
Let me quote Jason Astle-Adams (username 'jbadams' on these forums) from this post, replying to a user who asked which language to start with:
Ultimately it isn't hugely important; programming languages are just tools, and if you follow through and become an experienced developer you will end up using a huge range of languages throughout your career. After learning your first language, and more importantly the underlying concepts of programming, it becomes significantly easier to learn additional languages as needed, and a skilled programmer can pick up a similar language in a couple of hours and will usually need only around a week to become familiar with a very different language from those they already know. Remember that your choices are not forever, and that the most important thing is to choose any language and actually get started.
That being said, given the choice of Python, Java or C++ I would probably rank them in that order of preference. I usually recommend beginners stay away from C++ because it can have a steeper learning curve and is often considered more difficult, and usually encourage higher level languages such as Python because they will allow you to concentrate on the fundamentals of programming and game development without having to worry about so many of the nitty-gritty details of memory management and weird errors that can be difficult for a beginner to understand and solve.
This is the common advice given to budding game programmers. You should just jump in and start programming, because the experience you get will be priceless, and even if you might have to switch languages later, it won't spell the end of the world!
Getting Started: This article provides answers to common programming beginner questions, namely these:
What programming language should I use?
Should I use an engine, or create my own?
What library/tools should I use?
It also reiterates some of the previous points we've made here.
This article here on GameDev.net is your next step. It gives advice on what to do in your early stages of learning how to program, including the best kinds of games to make, how to approach creating your first game, and so on. Even if you feel the article is repeating things you've already read earlier, keep reading!
If you're getting into 2D art, you have some choices on software to use:
Graphics Gale has a free version and a paid version, and is a powerful tool for 2D game artists.
GIMP (GNU Image Manipulation Program) is a free tool capable of creating textures for 3D games as well as lower quality pixel art for 2D games. GIMP is like a free version of Photoshop (arguably), and it even supports add-on scripts that you can download from others.
Here are some common choices on software for 3D art:
Blender is a 100% free, open source program for making 3D art. It has a large community and the tool is very capable and powerful, with innovative controls (once you learn how to use them). At first, the program can seem dauntingly complex, but that's what the community is for! There are lots of beginner video tutorials and videos, as well as resources to help you with all kinds of things in the realm of 3D art with Blender. Blender is capable of modeling, animating, UV mapping, and even rendering with its own engine for lighting.
3DS Max is capable of modeling, animating, rendering, and so on. It's not free, but you may find you like it more than the other alternatives. Some students may be able to get it for free (you'll have to look into that yourself, I personally don't know much about the software, though it is popular).
Maya - I pretty much have the same thing to say about Maya as I did 3DS Max: I don't know much about it, but it's a popular choice among game artists. Look into it if you're interested.
Okay, enough about art software. You're going to have to get down and dirty with art theory and the more creative side of things, outside the realm of how to use a specific computer program.
Luckily, there are a handful of great articles here on GameDev to get you going:
Better Programmer Art: Also aimed particularly at 2D art, this article is particularly useful for those who aren't necessarily looking to become a great artist, but just want better art for the games they program.
Though it seems to have died by now, this thread on a forum has various 3D-art-related tutorials for all kinds of stuff. When it comes to 3D art, I'd recommend you learn by first watching beginner tutorials to get introduced to the software you're using, and then practicing a lot and moving onto whatever tutorials and videos you can find that relate to what you're trying to get good at right away. Learn all about the capabilities and features of your software and try to use them frequently to get used to what they're good at.
Music and Sound
There are quite a few DAWs (Digital Audio Workstations) to use for composing music and making sound effects.
For Mac users, Garage Band is recommended, as it comes with a lot of built-in instruments and sounds, it's powerful, yet is rather simplified for beginners. Also, look into Logic.
Alternatively, check out FL Studio, which also has a free demo.
Some free, cross-platform options would be LMMS (Linux MultiMedia Studio) or Audacity.
There's also Audiotool, which works inside your Internet browser to provide a powerful song composing tool.
As for some resources:
This video gives a brief introduction of the history of game audio and music, gives a general introduction to game audio and sound, why it's different from making sound for films, and other useful beginner topics.
This website contains many articles and how-to's on game sound design.
YouTube, of course! Once you've found out which program you want to use and gotten it up and running, it's time you raid YouTube for help. There are many videos out there capable of teaching you how to use certain programs, and once you learn how to use one of the programs, you shouldn't have much trouble learning the others. You can even try out free trials of the more costly programs and get to know them for a bit to see if you like them.
Article Update Log
August 12 2013: Updated the Music and Sound sections. July 14 2013: At last, updated the article with some fresh new links and content, mostly in the Getting Started/Art section. Plans for finally finishing the article with the music and writing sessions are in order. 13 April 2013: (Doing some re-organizing to the article; expect more changes soon) Changed the 'Resources' header to 'Getting Started'; took a different approach at the Getting Started/Programming section. Removed the section about Blender in the Getting Started/Art section in favor of taking a different approach. 27 March 2013: Cleaned up the Resources/Programming introduction 26 March 2013: Added a link to Resources/Art/Blender 22 March 2013: Initial release