Welcome to GDNet. On this site you will find a wealth of information pertaining to game development. This FAQ is meant to hilight the rules and more common questions found in the For Beginners forum. Please read and understand this page in its entirety before posting -- failure to comply with the rules outlined here will result in swift disciplinary action. Ignorance is not an excuse.
I want to make games, where do I start?
First you need to ask yourself if you want to make games or learn to program, as they are not necessarily the same thing. You can make games without any programming knowledge, using tools like Game Maker or by using the mod tools that come with existing popular games. You can also learn to program, and build games yourself from (more or less) the ground up.
Using game construction tools will tend to allow you to create your games much faster, but you may yourself limited by the capabilities of the tool you choose (similarly so with the practice of modding existing games). Learning to program and building your games that way will take much longer, but you will have more control over the final product.
In either case you must be committed to learning, experimenting, failing, and trying again. You must be willing and able to dedicate yourself to the task of problem solving; you will never learn if you expect others to do the work for you, or if you spend all your time reading about how to make games and never actually trying it.
I want to use game construction tools, what are some options?
I want to learn to program, what language should I learn?
Python and C# are very powerful languages that are both also relatively easy for a beginner to pick up as a first language. They have good documentation and helpful framework libraries for producing games (such as PyGame and XNA, respectively).
C++, although a popular language in the production of commercial games you'll see on store shelves, is generally considered to be an extremely poor choice for a first language, largely due to its advancing age, cumbersome nature, and most importantly its cultural design bias towards the idea that the programmer is always correct -- which is an assumption that is almost never true for a beginning programmer. Such traits can complicate the learning process, and while it is certainly possible to learn C++ first, it tends to be sub-optimal.
Remember that a good programmer will know many different languages in time, and be able to learn new ones easily. Just because you do not learn C++ first does not mean you should not learn it ever.
How should I use this forum to help me learn to make games?
This forum is for beginners to ask questions, not for posting educational material aimed at beginners (in other words, if you post tutorials or guides, be prepared to have your thread closed). Keep the audience in mind as well when engaging in in-thread conversation -- it is very easy to digress into advanced topics that intimidate and exclude beginners. Some such digression is permissible, but be mindful. If you are asked to stop discussing a particular topic, do so and consider taking that discussion to another forum. Failure to comply will result in strict handling, including removal or editing of posts so as to prevent the discussion from becoming too off-topic or inflammatory.
- Before you post, make sure you have tried every option you can with respect to figuring out the problem yourself. Be prepared to answer the question (proactively, ideally) "what have you tried to solve the problem yourself?"
- Be as descriptive as you can; state the language, platform, compiler, et cetera that you are using, as relevant. When posting code (which you should do if the problem is at all code-related), post it verbatim without transcribing or omitted code you believe is relevant as you can easily hide the problem that way.
- If your problem exists in a very large code base, try writing a smaller test application that reproduces the problem so that you can post a smaller amount of code for others to search through.
- Make your question as understandable as possible -- go easy on abbreviation and Internet slang. If you ask a clear, concise question, you are most likely to get a clear, concise answer.
- Make your subject title as relevant as possible. Avoid all-caps titles.
- Browse and search before you ask, to see if your question has already been asked and answered.
- "This" versus "that" threads are considered flame bait and will usually be closed on sight. Such questions have usually been asked before, several times, so there should be no need to ask them again.
- Do not ask homework related questions, they will be closed on sight.
- Don't use this forum to ask questions about cheats or hacks. Similarly, questions regarding piracy or evading copy-protection methods will be firmly and swiftly dealt with. Typically with suspension or banning.
- Don't cross post -- keep your question on one forum only.
- Do not mark threads "answered" or "solved" in any way.
- Do not use the forum's "poll" software.
- Do not answer a question that you do not know the answer to. Nothing is more damaging to a beginner than incorrect or misleading information, so be sure what you are posting is correct and back it up with evidence when possible.
- Do not flame users because of their lack of knowledge. We all had to start somewhere. This forum is for beginners to ask questions without being harassed because somebody more experienced thinks the answer should be obvious. Make sure your replies are helpful and guiding the beginner in the right direction, not taunting or flaming or insulting them.
- Answer the question that was asked. Unless the question is completely illogical and makes no sense, you should at least attempt to provide a cursory answer before offering up alternatives.
- Remember that this is a forum for beginners