-
June 6th, 2009, 11:19 PM
#1
Moving on
I hope this is in the right place. I apologize if it is not.
I'm closing in on the end of the textbook I've been reading. I still have a couple of chapters left, but once I finish, I'd like to look towards what to do next.
Of course, I intend to continue expanding my knowledge on C++. My intention is to find some good reading on the STL. But what kind of other options do I have? Are there some general subjects I should look into to apply my C++ programming capabilties?
I began my venture into C++ to learn how to program graphics and, ultimately, video games. But as a programmer, I don't want to limit the ways to apply myself for reasons that I hope are obvious enough.
Any suggestions? I'm going to continue looking for myself, but for some reason, I'm having a difficult time finding much.
-
June 6th, 2009, 11:21 PM
#2
Re: Moving on
Might be worthwhile to begin learning OpenGL or DirectX if you haven't already. Program a roller coaster simulation of some kind. Or you could do a project that lets you explore Boost a bit.
Last edited by Lindley; June 6th, 2009 at 11:27 PM.
-
June 6th, 2009, 11:34 PM
#3
Re: Moving on
Any experience is good experience... I'd agree with Lindley - OpenGL is a good idea. I'd usually say something simple like SDL, but lately I realised if you're planning to program video games, you're better off getting used to 3D graphics and not getting stuck in the simplicty of 2D.
-
June 6th, 2009, 11:34 PM
#4
Re: Moving on
Yeah, I've been debating OpenGL and DirectX for a long while now. If I understand correctly, OpenGL is capable of running on various systems, while DirectX is Windows-only. I'd prefer that whatever I eventually do, it be capable of running on Windows, Mac and Linux at the very least. I'm glad I decided to just stick to general programming first, though.
I guess what I was aiming for is whether or not there are any general programming topics I should learn first. Data Structures, for example? Or would it be safe to begin learning OpenGL/DirectX as you suggested?
As always, thanks for the quick response.
-
June 7th, 2009, 12:02 AM
#5
Re: Moving on
Knowing data structures and algorithms in general terms can be useful, certainly. There's usually a class on that in any undergrad computer science curriculum.
-
June 7th, 2009, 12:13 AM
#6
Re: Moving on
Probably. I've been out of school for a little while for a couple of reasons, but felt the brain-rot beginning to kick in, so I've been studying a couple of things on my own for a little while now. When I go back to school (this Fall, thank God), I'll look into it more. I guess I'm getting a little ahead of myself.
Alright, I suppose I'll move into OpenGL and/or DirectX next. Still not sure which one to go with. I mentioned that I wanted to program video games, which is definitely ideal, but more specifically I want to program physics/simulation engines. Thus, I really like your idea of programming a roller coaster simulation.
Mybowlcut - I missed your post by accident since you posted at the same time as me. Thanks go to you as well for the reassurance.
-
June 7th, 2009, 01:24 AM
#7
Re: Moving on
Alright, I suppose I'll move into OpenGL and/or DirectX next. Still not sure which one to go with. I mentioned that I wanted to program video games, which is definitely ideal, but more specifically I want to program physics/simulation engines. Thus, I really like your idea of programming a roller coaster simulation.
If you aren't extremely interested in learning the nuts and bolts of 3D graphics, I can't really see it being worth investing the considerable time you'll need to learn and use OGL or D3D from scratch. Just pick a mature and established graphics engine like OGRE or Irrlicht, learn it, and get on with working on what actually interests you.
-
June 7th, 2009, 11:40 AM
#8
Re: Moving on
Originally Posted by Raislin
I guess what I was aiming for is whether or not there are any general programming topics I should learn first. Data Structures, for example? Or would it be safe to begin learning OpenGL/DirectX as you suggested?
To make your roller coaster simulation a more complete learning experience I suggest you:
1. Make use of a GUI package. Try Qt. It's cross-platform and has built in support for OpenGL.
http://www.qtsoftware.com/
2. Make use of the C++ standard library as much as possible, especially the STL containers. There's a good reference called (what else) The C++ Standard Library by Josuttis. But beware, there's a new standard coming up so lend a copy or buy it used.
3. During the project study the book C++ Coding Standard by Sutter & Alexandrescu at the side. This definately will improve your C++ coding style.
4. Start small. A roller coaster simulation in 3D is a major undertaking. Start by simulating a sledge sliding down a slope in 2D (powered by gravity and stopped by friction).
Good luck.
-
June 7th, 2009, 12:07 PM
#9
Re: Moving on
Personally I'd start by defining the track in terms of spline control points. Until you can draw the track, not much point in worrying about the physics. There are subtleties you'll encounter such as which direction the "up" vector should be at every point on the track.
Here's one I made in my computer graphics class at Carnegie Mellon a few years back:
http://img.photobucket.com/albums/v3...y/Coaster1.jpg
http://img.photobucket.com/albums/v3...y/Coaster4.jpg
The extent of the physics there was that the speed at any point was related via the standard equations to the height (kinetic vs potential energy). I didn't bother with collision detection, friction, or anything like that.
It should be noted WRT GUI usage, that there is a well-defined disconnect between the GUI side of the program and the OpenGL side. You could design the OpenGL simulation using something simple like GLUT and then drop it into a Qt or GTK+ or WxWidgets framework later if you wanted.
Last edited by Lindley; June 7th, 2009 at 12:12 PM.
-
June 7th, 2009, 01:36 PM
#10
Re: Moving on
It should be noted WRT GUI usage, that there is a well-defined disconnect between the GUI side of the program and the OpenGL side. You could design the OpenGL simulation using something simple like GLUT and then drop it into a Qt or GTK+ or WxWidgets framework later if you wanted.
It really depends on what you're doing. Most "real" games won't use a GUI like Qt or WxWidgets, but will have a system that's rendered by your 3D engine. But still, pretty much any decent game GUI library will be pretty much independent of OGL or D3D.
-
June 7th, 2009, 09:16 PM
#11
Re: Moving on
Originally Posted by Speedo
If you aren't extremely interested in learning the nuts and bolts of 3D graphics, I can't really see it being worth investing the considerable time you'll need to learn and use OGL or D3D from scratch. Just pick a mature and established graphics engine like OGRE or Irrlicht, learn it, and get on with working on what actually interests you.
Well, I'm very much interested in creating simulations of real world or game world situations. I've been a gamer since I was 4 years old, so I most definitely have an interest in programming in the video game industry. What exactly would the nuts and bolts of 3D graphics consist of?
Whether or not what I really want to do requires D3D/OGL or a graphics engine is something I'm not sure of yet. I'm willing to look into both.
Originally Posted by nuzzle
To make your roller coaster simulation a more complete learning experience I suggest you:
1. Make use of a GUI package. Try Qt. It's cross-platform and has built in support for OpenGL.
http://www.qtsoftware.com/
2. Make use of the C++ standard library as much as possible, especially the STL containers. There's a good reference called (what else) The C++ Standard Library by Josuttis. But beware, there's a new standard coming up so lend a copy or buy it used.
3. During the project study the book C++ Coding Standard by Sutter & Alexandrescu at the side. This definately will improve your C++ coding style.
4. Start small. A roller coaster simulation in 3D is a major undertaking. Start by simulating a sledge sliding down a slope in 2D (powered by gravity and stopped by friction).
Good luck.
Thanks for the tips. I don't know anything about Qt or GUI packages in general, but I'll look into it.
-
June 7th, 2009, 09:24 PM
#12
Re: Moving on
Originally Posted by Raislin
What exactly would the nuts and bolts of 3D graphics consist of?
At the lowest level, it's all about points, lines, and triangles. Some packages will allow you to take a step above that and start working with models directly.
-
June 7th, 2009, 09:45 PM
#13
Re: Moving on
I had assumed there might be something more important being hinted at, but I really didn't know what.
One thing I know for sure is that I hate using something without knowing how it works. Even if I eventually turn to a graphics engine, I'd prefer to have some understanding of what's going on underneath.
-
June 7th, 2009, 10:18 PM
#14
Re: Moving on
The what you need is one of David Eberly's texts on game engine design (Morgan Kaufman publishing).
Ian Millington also has an excellent text on the introduction of a physics engine.
Eberly covers a wide range of topics which explain 3D engines in considerable detail. It's better than studying Direct3D or OpenGL directly.
I know - I do what you're aiming for.
If my post was interesting or helpful, perhaps you would consider clicking the 'rate this post' to let me know (middle icon of the group in the upper right of the post).
-
June 7th, 2009, 10:31 PM
#15
Re: Moving on
Which of Eberly's texts should I start with? Or should I read Millington's book first? Thank you very much for helping me with the next step.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|