Holy thread explosion. Allow me to retort and defend my position.
What I am proposing is to start with a basic pre-made framework for 2D games and use that (instead of the more traditional console) as a testbed to learn concepts and experiment with.
In another thread (through granted not in this particular thread) I posted an example of such a testbed. It basically was a skeleton program which set up a window, loaded an image, and drew it to the screen. A beginner could easily start with that pre-made for them and just learn basic concepts and how to move the image around on the screen.
The logic behind this approach is:
-) You have to learn
some kind of medium in addition to the language. It's unavoidable. The C++ language itself doesn't give you any way to do IO, so to do anything meaningful you need to have some other kind of interface.
I really don't believe that the iostream interface is any simpler or easier to learn than the SFML interface.
-) For someone interested in game development, learning and testing new concepts in a game-like environment is
much more fun and interesting, and therefore is likely to promote faster and easier learning.
-) Console and gamedev programs involve different techniques regarding the way program flow works and I/O is performed. Learning how to do console IO first means that when you move to game dev you'll have to relearn a new way to do things. It's an extra step that IMO is easily skipped. Why spend time learning how to do something you're not interested in?
Now to retort to individual points:
ascii wrote: |
---|
soooo often on game development forums youll see an idiot who doesnt have a game question, they just dont know how to pass a pointer to a function or something stupid like that. |
So what? You see questions like that when people are making console programs, too. All that means is that they're posting their question on the wrong forum.
You seem to be under the impression that learning language basics is a prerequisite to using a library. Banish that thought -- it's entirely untrue. If anything using a library is a prerequisite to learning language basics (or at least they have to be done at the same time).
ascii wrote: |
---|
because the only two things that will really only apply to console applications is cout and cin |
<hyperbole>
Right... "that's all"... just cout and cin.
Have you
seen cout and cin? Here's a reference page that scratches the surface:
http://cplusplus.com/reference/iostream/
Do you understand all of it? Because I don't... and I've been coding C++ for over a decade.
</hyperbole>
Sure it's easy to use cout and cin in a minimalistic sense. I don't disagree. But it's not really any easier than using sf::Sprite and sf::Event in a minimalistic sense.
With cout, if you want to print some text you can do this:
cout << "some text";
With sf::Sprite if you want to draw a sprite you can do this:
App.Draw(mysprite);
Both simple one-liners that the beginner can play around with.
TheNoobie wrote: |
---|
After all that I learned hardly anything and was a "copy paste" coder. |
I don't see that as a negative thing. Think about it:
1) You knew enough to make the game you wanted to make
2) It was probably more fun than you would have had otherwise
But really, it's an unfair comparison. If you go full steam ahead and make games without learning core concepts, of course you won't learn core concepts. I'm not saying people shouldn't learn core concepts.... I'm saying they should use a medium that's more fun for them when they do it.
There's no reason you can't do exercises that practice the concepts your book is teaching you in a game environment. You don't
have to do it in a console environment.
I highly suggest that op not waste his time looking through game source codes |
I agree. Looking through source code when you won't understand it is a tremendous waste of time.
ascii wrote: |
---|
spend 3-4 months getting the basics of console apps down |
Ugh. If I had to waste 3-4 months doing console stuff I probably wouldn't have become a programmer. Talk about a bore.