Welcome to the General Programming FAQ and Rules This section describes the general code of conduct for the GP forum, as well as providing resources and tips for commonly asked questions.
Please note that the FAQ in particular is currently an ongoing work in progress. If you see a subject crop up often on the forums, and feel that it would be useful to add the topic to the FAQs, please feel free to send a private message to the forum moderator (currently ApochPiQ).
Rules and Code of Conduct In addition to the overall rules and policies of GameDev.Net, posts in the General Programming forum are governed by the following rules and conditions. Please observe these conditions while participating in discussions in General Programming. Note that these are good guidelines for most of the site, but certain areas may uphold their own, subtly different policies, so be sure to check the FAQ/Rules links for each forum area before participating.
Please do not mark threads as "solved" or similar. This discourages discussion and may prevent people from suggesting better alternatives to the first provided answer. Please see the pinned topic for more details.
Be polite and courteous. It is often easy to get into spirited discussions, particularly about the more subjective aspects of software development; while we would like to foster the presentation of multiple opinions and viewpoints in the General Programming forum, keep in mind that yours is not the only perspective out there. Kindly treat others with respect and refrain from personal attacks, insults, or other negative behavior.
Be very careful when presenting yourself as an authority on any topic. We strive to maintain a high standard of quality and accuracy in our discussions, and in particular wish to foster an atmosphere that is helpful and clarifying for newcomers and less experienced programmers. Although we do not demand explicit credentials from any of our community members (your anonymity and privacy is your right) it should be noted that we do enjoy the presence and participation of many highly experienced and knowledgeable programmers on the forums. As such, strong claims are subject to strong scrutiny and always should be backed up with strong evidence.
In accordance with the above two rules, please be very cautious about presenting subjective material in an objective tone. Examples include topics such as global variables and "goto", singletons, DirectX versus OpenGL, Linux versus Windows, and so on. While such discussions are not actively discouraged, they may be subject to stricter moderation should things turn less than pleasant. Always keep in mind that others may have differing opinions and experiences, and be prepared to back up your claims when challenged.
If you have encountered an error, such as a compiler error or a runtime crash message, please provide the complete and exact text of the message when posting. Paraphrasing or omitting details is not helpful. Often these errors provide subtle but important clues as to the origins of a problem, and more experienced members may be able to help decipher the messages and locate a solution.
When posting code, please format your code using the "code" style in the forum editor. This can be accomplished by copy and pasting your code into the editor, highlighting the code, and choosing "Code" from the "Other styles" dropdown box in the top left corner of the editor area. You can also manually type a tag set, such as [ code ] foobar(); [ /code ] around your code if this is easier (be sure to omit the spaces around the brackets when typing the tags).
If you are asking for help with a piece of code, especially for debugging or troubleshooting purposes, please reduce the code as far as you can to a minimum sample that reproduces your problem. For instance, if you have a syntax error, post the smallest piece of code you can that triggers the syntax error, and no more. If you have commented out code for testing or experimentation purposes, please either omit it when posting, or clearly explain the purpose of the commented-out sections. This helps reduce ambiguity and makes it faster and easier for others to assist you.
When asking for help or advice on a subject, please do as much research and investigation on your own as possible prior to making a post. Always detail what you have read or studied in the post itself, and provide as much detail on what you know and what you would like to know as possible. Remember that the other members of the community are volunteers and helping out of their own generosity; as such, please be respectful of their time. Excessively vague or broad questions are not acceptable.
Frequently Asked Questions A number of topics appear in the General Programming forum on a regular basis. If you have been directed to this FAQ, please read through the relevant areas carefully before proceeding with a discussion. Being able to do your own research and investigation is a vital skill in modern software development, so we prefer to have common questions filtered through the FAQ prior to initiating a discussion. If, after reading the relevant FAQs, you still have questions or comments on the subject, by all means feel free to start or continue an existing thread. For the most part, threads will not be closed simply for having a readily available answer in the FAQs, but we would like to encourage members to use this resource as a first stop before initiating a discussion.
General C++ Questions Many common issues related to working in C++ are examined in detail at the Parashift.com C++ FAQ. If you have a question about C++, please consider taking a few moments to read through these excellent pages and familiarize yourself with common solutions and approaches to various problems in C++.
Debugging If you are encountering a bug or crash in your program, be sure you are familiar with the basic processes of debugging and using your IDE and other tools to help locate the cause of the issue. The more information you can provide when posting, the better chance others have of being able to help you out. Check out the Introduction to Debugging article for some great tips on how to use your debugger for maximum effect.
Input Handling Although this is more games-specific, it does come up fairly often, so it merits it's own entry here. If you're interested in how to set up a good input handling system for your game (or any program, really), check out this article.