Sign in to follow this  
Fruny

Updating the For Beginners forum FAQ

Recommended Posts

Fruny    1658
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]

Share this post


Link to post
Share on other sites
John H    584
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?

Share this post


Link to post
Share on other sites
Zahlman    1682
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?

Share this post


Link to post
Share on other sites
kingpinzs    117
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

Share this post


Link to post
Share on other sites
evolutional    1393
- 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...

Share this post


Link to post
Share on other sites
Drew_Benton    1861
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?

Share this post


Link to post
Share on other sites
Fruny    1658
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]

Share this post


Link to post
Share on other sites
jbadams    25713
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.

Share this post


Link to post
Share on other sites
Jemburula    341
Why use #include <*> instead of #include <*.h>?
How do I become a programmer over night?

and probably a lesson to answer questions like
What's the best book/internet tutorial to learn from?
because seeing as there is no real answer and a LIST of sites/books don't exactly answer the question it should be answered something along the lines of considering their personal presence or its better to have a book you like and can study from instead of staring at a screen because you do enough of that when your programming anyway

Edit:
Someone also previously said something about people asking A versus B topics. Someone could make a small javascript that asks what the user wants to compare like "Direct3D" then "OpenGL" which just redirects them to http://www.google.com.au/search?hl=en&safe=off&q=direct3d+vs+opengl&meta=

[Edited by - Jemburula on July 4, 2005 8:33:28 PM]

Share this post


Link to post
Share on other sites
DJ N3X    122
Here's my advice (coming from a noob, so I can delete this if you want :))

In the FAQ, make a few lists on different paths to learning game programming:

I.E.

Path 1

Learn C++
Learn DX
Practice
Develop first trial (Learn from failures)
Practice

Path 2

Learn VisualBasic
Learn OGL
Practice
Develop some trial games and learn from them
Practice

You get the idea...
You might also want to add notices like "Path 1 is recommended for people with no experience in programming at all"

Share this post


Link to post
Share on other sites
Fruny    1658
Quote:
Original post by hplus0603
I suggest you "leverage" question 0 from the Networking Forum FAQ. Every FAQ should start with that Q/A :-)


Sounds good [smile]

Share this post


Link to post
Share on other sites
jbadams    25713
"What sort of computer should I get for game development."

This is looking like a lot of information for the FAQ though, perhaps an update to 'For Beginners' is also in order so that more detailed information can be given without having the longest forum FAQ ever?

Share this post


Link to post
Share on other sites
DavW    356
Perhaps we should start a wiki FAQ, so it's easy to contribute useful questions, answers, code and examples. I'm happy to put one up if people think it's a good idea.

Share this post


Link to post
Share on other sites
GBGames    217
I know it says "Updating the For Beginners forum FAQ, but the For Beginners page was mentioned as being outdated. While I know FAQ stands for frequently asked questions, it would be nice if the Start Here page wouldn't have such a Win32/DirectX bias. We all know SDL, OpenGL, and a number of technologies exist, but you would think that games are only made on Windows using Microsoft technology if you looked at that page. "Programming Linux Games" and "Mac Game Programming" could be added to the list of game programming books.

Share this post


Link to post
Share on other sites
Raxvan    100
My mane is Razvan. Sorry for my English and sorry for all mistakes.

I need to create a game for a contest and i need help to study the directx9 on visual c++ 6.0. i have no other knowledge in directx and in visual c++ 6.
I have a very good knowledge in Borland c++ and DJGPP and dos graphics.I want to learn visual c++ to create better games with better graphics.I have a book : Advanced 3D Game Programming With Directx 9 but is too complicated for me. Can anyone help me?

With what should i start?

[Edited by - Raxvan on July 15, 2005 10:45:55 AM]

Share this post


Link to post
Share on other sites
Telastyn    3777
It'd be nice to add some "how do I use my compiler!?!" "how do I use my debugger?!?" questions. Those things are never really covered in books.

Share this post


Link to post
Share on other sites
DavW    356
Well I've set up a wiki for beginner FAQs about game development. It's up to you whether you use it or not, but it could become valuable resource.
[click]
Feel free to edit

Share this post


Link to post
Share on other sites
Boder    938
DavW, might be better to add it to the Game Programming Wiki, where it would get more exposure on an already established wiki, which has a great community and many hits.

Share this post


Link to post
Share on other sites
DavW    356
Hmm, that's not a bad idea. It's the same wiki software and both are GNU free doc, so I can just transfer all the info on my wiki to gpwiki.org

Share this post


Link to post
Share on other sites
Samsonite    528
Quote:
Original post by DavW
Perhaps we should start a wiki FAQ, so it's easy to contribute useful questions, answers, code and examples. I'm happy to put one up if people think it's a good idea.


Or why don't we write on the DevMasters Wiki page(it's all about gaame development and math)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this