I need some recommendations..

Started by
13 comments, last by mmakrzem 16 years, 1 month ago
I've been spending the last few weeks getting back in to the groove of things, and I think I'm comfortable enough with my C++ programming again. I've only had experience using C++ itself so far, I havent spent much time on the librarys aside from the basics - . But I've decided its time to continue on down the road towards game programming. So I'm wondering what I should work on learning for now and the near future? All this time spent to learn how to make games, and I havent made any games yet! (in C++ at least) So I would love to start getting in to the graphical aspect of things. DirectX is obvious as something I should learn, but I heard it is fairly complicated. Would it be a good idea to get started on DirectX right away? Or should I start with something a bit simpler? I've also seen loads of libraries/dev kits/engines/etc. I really dont know which libraries are actually worth learning, and the same goes for the dev kits/engines. I seen a bunch of information on the MSDN website about DarkGDK and really dont know if that would be worth checking out either. With all the choices I just want to be sure I head in a good direction. I want to be sure I learn what I need to be able to develop some quality content. Does anyone have any recommendations on what I should check out? More then 1 recommendation is welcome, as I am pretty much learning full-time until fall, so I need to make a list of things im interested in learning the next few weeks/months.
Advertisement
A library you may want to check out is SDL (which stands for Simple DirectMedia Layer). Since, like you said, you've spent so much time reading how games are made that you haven't found the time to actually make one yet, I think it's of some importance that you use something which will get you into the thick of things really fast. SDL does that, it really is very simple and should you feel the need to 'move on' you can easily start using OpenGL in combination with SDL.

SDL can be found at http://www.libsdl.org.

Of course, there are many other libraries and toolkits that will ease working with graphics, but I have only used SDL (and OpenGL) myself so I can't comment on those. There's one other thing you may want to consider though; learning OpenGL is probably a little easier than learning DirectX because of its immediate mode rendering. SDL has the added benefit of interacting really well with OpenGL.

Hoping this helps,

Rogier
If you're going C++, learn C++. If you only think you're there, you're not. Then get into learning to program, and design of applications. Being able to push pixels around isn't going to do you any good without those skills.
Quote:Original post by Telastyn
If you only think you're there, you're not. Then get into learning to program, and design of applications. Being able to push pixels around isn't going to do you any good without those skills.


That seems quite unhelpful to me. There is no reason you need to be expert at C++ to play around with SDL and push a few pixels around, as you describe it. My bet is that pushing pixels around will do him a lot of good. Pixels have the marvelous ability to keep people interested in learning things that they would otherwise find extremely tedious, and perhaps frustrating. It's not like attempting graphics will somehow damage his ability to learn C++.
___________________________________________________David OlsenIf I've helped you, please vote for PigeonGrape!
Quote:Original post by Telastyn
If you're going C++, learn C++. If you only think you're there, you're not. Then get into learning to program, and design of applications. Being able to push pixels around isn't going to do you any good without those skills.


Whether he's pushing pixels around or designing word 2.0, he's still learning C++. The difference, as RAZORUNREAL pointed, is that the former is much more interesting than the later.

Each to his own, really, and I don't claim to have enough programming experience to really be giving advice, but from my own personal experience, I always tend to work backwards. That is, I usually decided that I am going to make X, and then worry how the hell to implement it.

To give an example, I started reading the "3D game programming with DX9" some time ago and doing small applications after each chapter. Once I have finished the book (thus just barely touching on the topic) I set out to make a first person survival horror game with nice lightning, bump maps, parallax maps etc. Truly, a goal way above my abilities and now, few months and complete re-writes later, I am still not completly done with just the static geometry of my world. But on the other hand, I learned how the DX framework works, batching data for rendering, the different ways of spacial partitioning, oct, bsp and kd trees, portals, shaders, how bump mapping and parallax mapping works and so on. Even if I never complete this project, I've already learned much more than if I had made 3D pong instead.

If you haven't done much C++ game programming, though, you may want to stick to some 2D small apps. You see, with small games you get to see the outcome faster, which means you can evaluate your coding techniques and see what worked and what didn't quicker. With 3D, you can spend weeks on just the math stuff, not even getting to the stuff like "is my entity class inheritence system a good one?" that are crucial for your games to work efficiently.
Comrade, Listen! The Glorious Commonwealth's first Airship has been compromised! Who is the saboteur? Who can be saved? Uncover what the passengers are hiding and write the grisly conclusion of its final hours in an open-ended, player-driven adventure. Dziekujemy! -- Karaski: What Goes Up...
Quote:Original post by RAZORUNREAL
It's not like attempting graphics will somehow damage his ability to learn C++.


But not having a decent foundation will hinder his ability to learn graphics, and definitely his ability to actually put graphics into a game. It's still very frustrating, only now you know 3 things insufficiently (C++, program design and graphics library X). He's going to have to learn C++ in depth sometime, might as well do it before trying to learn a library that has "know C++" as a pre-requisite.


The majority of code that goes into a game is not graphics. The majority of code that goes into a game is tedious. The reason the vast majority of members here haven't even finished a game isn't because they couldn't get their graphics to the screen, it's because they can't work through tedium to see something done. (or lack the program design fu to architect something sufficiently well).
Thanks for the responses guys!

Quote:Original post by Telastyn
If you're going C++, learn C++. If you only think you're there, you're not. Then get into learning to program, and design of applications. Being able to push pixels around isn't going to do you any good without those skills.


While I understand your concern, to be honest I am not going to get too much farther with ANSI C++ then I am now without moving on to bigger and better things. I have 2 books on ANSI C++ that I've read thru twice each in the last few weeks, and I've done all the programs involved in them, all the exercizes, everything. With the two books I have theres not much more I could learn about ANSI C++. I am in no way a master, as the books I own are only beginners and intermediate, but I am confident enough that I could continue learning elsewhere.

I tend to learn better when I am challenging myself anyway. When I run in to a problem where I dont know how to do something and I have to figure out a way to do it, it usually ends up being a very good learning experience for me. Similar to how Koobazaur explained. =)

I remember reading on these forums somewhere that someone said alot of the actual game programming schools really only teach u how to use a large variety of libraries and/or SDK's. Now when it comes to what I should learn next, I'm still a bit lost. I added SDL to the list, which I am going to start working on this afternoon, but I am not sure what I would like to learn besides that. I'm going to of course use 2d first as suggested, but when it comes to 3d I'm pretty lost. Some people recommend OpenGL because it is easier to learn ,but then I see other people saying its pointless to learn OpenGL if your going to use DirectX because there is no need to learn 2 libraries that do the same thing.

Being confused on how to start out 3d is also why I asked bout DarkGDK or any of the game development kits/engines. Not having to build an entire engine from the ground up might help me learn a bit about how to program games without designing the entire thing my first run. But in other programming languages I used it was typically bad practice to use libraries made by other people. I know C++ is a much more powerful language then anything else I used though, so I do not know if this still stands true.

I guess to sum things up, I really would like to know 2 things. First, what libraries/SDK's/toolkits do professional game programmers use? And second, is there anything (libraries/SDK's/toolkits/etc) that I should learn BEFORE them as a stepping stone to make it easier to learn?

Thanks!
Quote:
But in other programming languages I used it was typically bad practice to use libraries made by other people.


This is crap. The language used does not somehow change software engineering best practices. It is always a good practice to use (well made) libraries.



Fine fine, it's your time to use. I've just seen far too many come through these forums (myself included) try to rush ahead before they're ready and just flail about.

FMOD is a good sound library if you're not going to use SDL's mixer (which you should if you use SDL, which you should if you're going the graphics library route).
I strongly recommend Lazy foos tutorials. I recommend them to everybody. You will be able to learn the basics of SDL and C++ game development.
Don't thank me, thank the moon's gravitation pull! Post in My Journal and help me to not procrastinate!
A few suggestions from me:
- If you haven't already, brush over the STL so you can see what it can be used for because you'll probably need it pretty quick.
- Give Boost a quick look over as you may find some things useful in here as well
- Choose either OpenGL or DirectX and stick with it!
Note, if you choose OpenGL I agree with what the poster said a few posts above about looking into SDL. SDL/OGL work good together and SDL will get you into game programming right away.

If you go with DirectX check out the documentation for tutorials and check out directxtutorial.com, if you go OGL then check out the NeHe tutorials and for SDL definitely look at lazy foo's
__________________________________________
Eugene Alfonso
GTP | Twitter | SFML | OS-Dev

This topic is closed to new replies.

Advertisement