Updating the For Beginners forum FAQ

Started by
30 comments, last by Spoonbender 18 years, 6 months ago
Those of you who actually have checked the forum FAQ probably have noticed that it is a bit light on actual answers to the technical questions that are Frequently Asked in here. Most recently, this thread highlighted the problem that, even when resources are available on the site, they aren't in the FAQ. Adding to that the fact that the 'For Beginners/Start Here' page is rather outdated, I think it's more than time to update the FAQ. If you've been hanging around this forum or Gamedev for a while, you certainly have seen the same basic C++ questions (they're those I notice most, and with everybody blithely advising beginners to start with C++...) asked over and over again (e.g. "What does 'unresolved external' mean?"). I'd like you to submit questions to this thread so we can figure what needs to be added to the FAQ. Answers would help too, but I'd rather not have this thread turn into an argument as to whether a given answer is accurate or not, so while I invite you to think about formulating an answer, let's hold off posting them for now - with the exception of links to GDnet articles. Edit - if you have some good threads bookmarked, dust them off, we might need them. [Edited by - Fruny on June 30, 2005 11:31:52 PM]
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
Advertisement
Not going to go into too much detail (sorry, tendinitis atm) but a couple of topics that spring to mind:

1. Which do I use, C++ or C# (or any a vs b topics)?
2. Why are pointers useful?
3. Where can I get a free compiler/3D modeling package/any other piece of game-related software?

Maybe you could compile different language FAQs for the most common languages used (perhaps even APIs as well, but it might be a lot of work). Could always take a look at existing language FAQs and take the best questions from them, though.

Also, might I suggest adding the Google Directory into the FAQ? It's a hugely under-used resource from what I've seen. It's often incredibly useful for narrowing searches or even finding related sites more easily. I also think some resources aimed at maths beginners would be quite useful, too.

Depends really. How much would you like to cover in the FAQ?
Questions (as is usual for a FAQ, or any information presented in Q&A format, these are somewhat leading and not necessarily realistic ;) ):

(General)
- Why would I choose language X over Y (general discussion)?
- HOW DO I CODED PROGRAM? (kidding!)
- Why would I want to practice "encapsulation" or "data hiding"? Is OOP the only way to accomplish these goals?
- How can I organize my source code within a file into functions, and avoid errors? What is the use of functions anyway, and how can I think about them logically and design them properly? (I think this description is general enough to cover less commonly referred-to languages like Lisp, but perhaps it can be improved upon...)
- What's wrong with copying and pasting the same bit of code several times, anyway?

(C++ - specific)
- What exactly is the relationship between C and C++? If I already know C, how can it help me learning C++? How can it hinder me?
- What is the C++ standard library and what can it do for me? Should I be concerned about efficiency?
- How do these things in the standard library work, anyway?
- How should I choose from among standard library containers? How can I protect myself from making major changes later if I decide to switch the container type?
- Why can't I write "foo" + "bar"? How can I elegantly make something like this work?
- OK, so what can the standard library design teach me about encapsulation, data hiding etc.?
- What are constructors and destructors? Why should I use them? When will I need them?
- What is this funky thing I have seen in constructors with a colon and a list of stuff before the open brace?
- What is a "linker error"? What is the linker, and what does it have to do with the compiler? Similarly, what is the preprocessor? What exactly does a #define, #ifdef, etc. statement do?
- How can I organize my source code into smaller files, and avoid linker errors?
- What does "deprecated" mean? (really - the word itself is probably the sticking point on such error messages, and apparently noone has heard of a dictionary these days)
- What is a namespace? What are my options for dealing with things that are in namespaces? What are the trade-offs of each method?
- How can I reliably and elegantly read in (a) a line of text, not knowing anything about its length; (b) a numeric value (and in this case, what can be done about garbage input?) from a (i) file, (ii) console input, or (iii) existing string?
- How can I keep a console window open at the end of my program? What are the trade-offs of each method? What if I want to display a message from within a destructor (as a debugging technique) and such destructors fire at the end of the program?
- How can I (insert description here of task that interprets the console as a grid of symbols, rather than simply an output character stream)? How about colours and/or varying fonts/emphasis (bold, italic etc.)?
- How can I (insert description here of any graphical task, such that the console can't render it at all)? What are the fundamental difficulties of graphics programming, and what should I do to prepare myself for a project like this?
well I have a list not sure they will all fall in this faq but it really help if I got them all answered. Just the ones I can think of for now.

Make Objects Stay on map and not fallow the world camera(for iso tile game)

Path Finding(methods and to implment them in a simple program)

player highlights when selected (2d directdraw and later 3d)

Play mp3's in game(with a free api that you can sell your game)

Play cut scenes

Add In game Items(link list or what ever method)

Able to interact with in Game Items

make a simple map editor

make make height map for iso

a way to convert functions and structs to classes
-(C/C++)What is the difference between "*" and "&", as in:
float f(float &a, float &b), and float f(float *a, float *b)


hippopotomonstrosesquippedaliophobia- the fear of big words
- Some pointers to Kylotan's free software list would be good. Perhaps a link to the DevMaster engine database too.
- There's often some questions about function pointers/functors - a link to function-pointer.org would be good
- String handling seems to be a common subject
- A link to Washu's journal can be useful

-- will add more later...
After searching though all the pages of posts I've had on this forum and the general forum, here's my list. I'm sure more will come up [smile]

* How do I convert a number to a string?
* How do I convert a string to a number?
* How do I use a std::string with functions that require a const char* and char* parameter.
* I am including the header file <string>, and I am using the string class, but the code doesn't compile? (namespace resolution, having the std:: topics)
* How do I alphabatize characters in a string. (Best post evar!)

* How do I use unique() with vectors? (answered only once, but still a good question to have due to people not knowing that it's possible to do)

* What's the best way to optimize *this* or *that*.
* How do I make my code faster?

* Do I really need to use header files and implementation files?

* Where do I begin?
* What is programming?
* What next? (General)
* Where to go from here (API specific)

* How do I not make my console program quit when it is done?

* How do I get user input?

* How do I allocate/deallocate memory for a <datatype>** array?

* What's a dll and how do I make one?
* Should I put all my code in a dll?
* Does using DLLs add overhead and slow my program down?
* What's a static library and how do I make one?

* How do I fix *this* linker error?
* What library do I need to link in to make *this* work?

* How do I write data to a text file?
* How do I write data to a binary file?
* How do I read from a text file?
* How do I read from a binary file?
* How do I write a class/struct to a file?

* Why not make everything public in a class?

* How do I run an .exe from my program?

* What IDE should I use?

* What is TCHAR?
* What is LPCSTR?
* What is HWND, is it a class?
* What is TRUE/FALSE?

* How do I clear the console screen?

* If I do *this*, will I have to worry about *that* (Legal questions)

* What do I need for *this* (library setup)

* What's the difference between all the styles of having your 'main' function?

* What is XML, is it fast, is it easy?
* How do I use it in my programs?

* Do I need to have a newline at the end of every file?

* Programming Language1 vs Programming Language2
* OpenGL or DirectX?
* SDL or Allegro?
* Ogre or Irrlicht?
* FMOD or OpenAL?
* Gamedev.net for FlipCode.com? ([grin] Couldn't resist)

* What is the Torque engine?
* Can I do *this* or *that* with it?

* How do I add console to my program?
* How do I remove the console to my program?

* How do I find all the files in a directory?
* How do I move files?

* What are pointers?
* Should I use them?
* What about const references?
* Should I care about const correctness?
* What are function pointers and how do I use them?

* What's a namespace and how do I make one?
* Is using namespace std; bad?

* Why can't I have this templated code in my .cpp file and the declaration inmy header file?

* How do I make and use plugins?

* Where can I get a free EBook on *this*

* How do I track memory leaks?
* Do I need my own memory manager?

* Should I use singletons?
* What is a singelton?

* What data structure should I use?

* Is it ok to do delete this;?
* How do I overload new/delete?

* Is returning new memory from a function bad?
* When I use it in a DLL, why does it crash?
* How do I pass memory between exe and dlls then?

* Why signed and unsigned? What's the difference?

* What runtime should I use (MT DB DLL, MT DLL, etc...)

* How do I include a file just once?
* Why don't include guards always work?
* Why doesn't #pragma once always work?
* Why am I getting errors when I include my .cpp files?

* Why shouldn't I prefix my variable names with _?
* What naming convention is the best?
Wow. Now I've got stuff to think about... [smile]

Let's add "How do I make a window class?" (as in C++ class for a Win32 window).

[Edited by - Fruny on June 30, 2005 7:02:18 PM]
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
Links to some of the great resource threads on the forums perhaps?

Music Software, etc.
SFX & Music Resources
A few tips on how to make your songs sound better

3D & 2D Software Information
Sprites, sprites and more sprites
Graphics Tutorials & Downloads

Web Development Resources

All those are stickied in thier respective forums, but I don't think new users always think to go to the appropriate forum and check the sticky threads.

- Jason Astle-Adams

*why is limiting my fps a bad idea
*what is timee based updates
*why is using a fixed timestep for physics-updates probably the right thing in most cases
HardDrop - hard link shell extension."Tread softly because you tread on my dreams" - Yeats

This topic is closed to new replies.

Advertisement