As previously mentioned in another thread I made a while back, I'm interested in seeing some good documentation in the For Beginners section. However, it seems like the moderators and staff are very busy making GameDev as awesome as it's shaping up to be in 2013, so I figured I'd take some initiative myself and try to get the ball rolling.
So, I'm trying to make an explanatory, newb-friendly post in the For Beginners section, with answers to frequently asked questions, like "How do I be an idea guy for a game studio?" and "Which programming language should I start with?" and "Which engine should I use?".
Also, another goal for the thread was to explain in minor, not-very-overwhelming detail, what the major fields in game development are, how they do what they do, etc.
I've written some about game programmers and artists and a bit about writers...but I'm pretty sure I'm going to need some help here. I pretty much have no experience with sound effects or music, let alone music as it applies to games, and I'm not a master at anything game development related.
...but I do have a lot of time to devote, so I figured that makes me at least eligible to 'get the ball rolling' here so more experienced and knowledgeable people can contribute.
Also, I put red text in the post for things that aren't finished/I want help with. I plan on removing it eventually, when the thread is ready.
Anyway, here's the post so far. I'm going to try to put it in a spoiler box for convenience, because it's pretty big at the moment:
Because the For Beginners forum gets a lot of the same questions posted again and again, I decided to make this thread as an attempt at answering some of the frequently asked questions, since this forum doesn't seem to have a FAQ section. Hopefully, I'll be able to add lots of links to helpful articles and other resources as I go on, and hopefully, this will be considered helpful enough to get 'stickied' so it doesn't get swept away by the same questions it aims to answer (which would be pretty ironic).
This isn't how it works. You most likely won't be able to pitch a game idea to someone or some company, and have them make it for you. You pretty much definitely won't be able to actually SELL the idea for a huge check or a percentage of the profits that the game makes.
This is because games are mixtures of quite a few different fields: programming, art, music, sound effects, and sometimes writing a world, story, characters, dialog, etc. (though not all games include those kinds of writing).
These are all rather extensive fields that require skill and knowledge to implement well. Games are tough to make. They're combinations of both artistic and technical fields, each one requiring time and dedication to get skilled with.
The idea for a game, the raw concepts for it, are a tiny fraction of what's involved with making a game. Not only this, but game ideas are often changed a lot during the process of developing them. People make short demos of their game ideas and play-test those demos to see if their games are fun, and they tweak and iterate on their ideas until they're great. Very rarely (if ever) does a game idea just come to someone, perfect and ripe for development, ready to make people rich and entertain on a meaningful, worldwide level.
So...in short, it's very unlikely that you'll sell a game concept/idea, because game studios have lots of these (pretty much anyone who's into game development has their own ideas, too), and they don't consider them valuable. What's truly valuable is the implementation of those ideas, and how you turn them into an actual game.
If you still want to be involved in game development, even though you can't be an 'idea guy', you'll have to learn how to do one or more of these skills, so you have something to contribute to the actual process of implementation.
Please read the next 2 questions. They're related.
This is a more realistic approach to turning your idea into a game.
Getting a Group to Make Your Game
Most people in this position are looking to find a group of people who have experience in the necessary fields (mentioned in Question #1) and then have those people make their game for them. They'll be the "idea guy" who decides how the game should play, what all the weapons do, how much damage this enemy does with this kind of attack, and so on. These people usually call themselves "idea guys" when they post on GameDev (e.g. "I want to be the idea guy, who tells everyone how the game should be").
Before I properly address the question, let me just clear something up here...
The appropriate title for "the idea guy" is called a 'game designer' (even though that sounds like they make graphics or art...it confused me at first).
At least in these forums, people have separated the idea guy and the game designer into two different kinds of people: the idea guy is the one who has vague ideas, and the game designer is the one who elaborates on those ideas and fills in a lot of technical details (such as damage and health and so on). So don't try and be an idea guy. They aren't loved. Be a game designer.
Anyway, back to the topic...
The cold, hard truth is, game designers (and especially idea guys) won't have an easy time recruiting a team to make their game for them. As mentioned in Question #1 (see it if you haven't yet), developing a game is tough work. You'll need more under your belt than just "game design". You need something that you can contribute to the development process. Again, those skills were mentioned above: programming, art, sound, music, etc.
Learning a Skill to Help Make a Game
If you've read the above section, you now realize that simply being a 'game designer' isn't enough unless you have another skill that you can contribute to the development of the game.
I'll try my best to introduce you to each of the common skills below. Later in this thread, I'll link to some resources to help you learn more about the skills and possibly learn how to do them yourself, if you find you're interested in them.
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 have 2D images, made in Photoshop, Microsoft Paint, GraphicsGale, GIMP, and other such programs. The programmer draws these images to the screen and moves them based on the game mechanics. These images are usually animated, such as to make a character jump, or swing a weapon.
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 even more vertices, which can be convenient. 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 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 setting 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.
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.
Anyway, 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 usually 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.
Music and Sound
This is a part where I'd need help...I really don't know much about music and sound effects.
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!
I've heard that game writers, or "game narrative designers", usually don't just get a job in a game studio. Kind of like game designers, they start out in other fields and work their way up. Like I said, I'm not in the industry and have no experience there, so I'll need someone who knows about it to elaborate here. If you don't want to write anything yourself, feel free to give me a link that may help (maybe there's a post about it somewhere on Sloperama?)
Once again, this is the wrong way of going about it.
MMOs are incredibly difficult to make. Big companies sink millions of dollars into MMOs and have big teams of many different developers working on them.
Among other things, you need lots of content, you need expensive servers, your programmers have to know how to network games (which isn't something a beginner should be looking into, to say the least)...the list goes on.
It's best to start with smaller games, like Tetris and Pong clones. You'll see results fast, and you won't be completely in over your head. You'll learn about programming from a ground-up, solid route, and get a lot of helpful experience.
My advice is to simply put the idea of an MMO down for a while, and focus on smaller, more achievable goals until you're...well, until you have a huge company with a hundred employees and investors waiting to throw money at you...
There's no "best" programming language. They're like tools, you use whichever one suits the situation.
You'll want to start with one language, and get really good with it, and then move on to other languages. This is because a lot of what goes into becoming a good programmer is learning the fundamental things that apply to all languages: just general, good programming practices.
The languages are just the way you talk to the computer. They're all still programming, you just have to write and approach the code differently based on your language. This is why it's sometimes more convenient to use a different language.
The Resources section below will give some advice on finding a language you like.
A game engine is a computer program that's designed to help you make a game faster and easier than if you wrote it from scratch. Every game is different and has different needs, so there are a lot of engines out there that cater better to certain kinds of games. So don't ask me "What's the gosh darn best game engine out there?!" because I'll just end up telling you something similar to what I said in question #4.
Games often are built out of many different, reusable parts. Every game has graphics, and that means every game has to have some kind of code that draws those graphics to the screen. Every truly 3D game uses 3D models, and they have code that draws those models to the screen based on where the player is.
The purpose of game engines is to offer robust and pre-made systems for those things that pretty much every game is going to need. However, as I mentioned a bit ago, some engines will focus more on specific types of games, and the things they'll be needing. For example, some engines are made to make it easier to create online games, or first-person shooters.
Engines usually come with a way to import your 3D models/2D images and other assets and put them into your game world, as well as a way to handle physics, input, rendering, and other such tasks.
Some well-known and popular game engines are Unity3D and the Unreal Development Kit, both free to download.
JBAdams, a moderator on these forums, has an explanatory post about this on his website, so I'll leave this question to him.
At last, the biggest and most common questions are out of the way. It's time to talk about resources.
To start learning programming, you should first figure out what kind of games you want to make.
A lot of people will suggest you start with 2D games, because they're a bit simpler, but it's up to you. The most important thing is to pick something and stick to it until you're good enough to comfortably switch to other things that expand your abilities. Like I said before, it's more important that you know general programming fundamentals rather than lots of languages. Get really good at one language, not mediocre at three different ones.
C# and XNA
You can hop into making 2D games with C# as your programming language, using Microsoft Visual Studio C# Express, a free IDE for writing C# code.
Here is the Microsoft official tutorial on making a simple game with C# and XNA.
The tutorial tells you to get Visual Studio to write your code and to make sure you have XNA installed.
Get Visual Studio C# 2010 Express (click on "Visual C# 2010 Express")
Get Microsoft XNA 4.0 (okay I don't really know enough about XNA to recommend which version to get...it seems like there are a lot of them on the Microsoft website. Some help here, please?)
Obviously, I still need to add sections for UnityScript/C# and Unity3D, and scripting languages like Python, Lua, etc.
I plan on adding the UnityScript/C# with Unity3D myself eventually because I have experience with it, but for stuff like Python, Lua, and Ruby, I'll need some others to recommend good tutorials (not just any tutorial you can find on Google - good ones!)
Blender is a great, free program that can be used to model, animate, rig, and UV map (among many other things; it can even be used as a game engine!)
Here is the official website.
The user 'cgboorman' on YouTube has a very helpful beginner's tutorial for Blender. If you're just getting started with Blender and/or 3D modeling, I highly recommend him. Here is a link to the entire playlist on YouTube, with all the tutorial videos in it.
Blender Cookie is a website with lots of tutorials for using Blender.
As previously mentioned (I say that a lot...I should just start saying APM...), I don't have enough knowledge with this to determine whether or not resources are good learning material or not. I'd appreciate help from the community here as well.
So obviously, I still have work to do, and I plan on editing that post a lot before I'll consider it extensive enough to call it finished. As well as that, the formatting still feels a bit off, but...I've been at this post for like an hour, so I'll get to that later.
Hopefully, we can make this an awesome, extensive, and greatly helpful post that will be a friendly, easy to understand welcome to beginning game developers.
Thanks to anyone who can offer help!
EDIT #1: Improved formatting with rollup tags and horizontal rules