So my ultimate goals for programming, and why I'm trying to learn C++ in the first place, is to develop my own game engine, and subsequently create a game using said engine.
Obviously, since I'm posting this in the "beginner" section, I'm not quite there yet. In fact I'm just beginning. But it's good to have goals, right?
Over the last week or so I've been to dozens of websites trying to get through tutorials and reading chapters of various books online to try to gain some understanding of what C++ is all about. Usually though, these end up being far too complex for the ultimate newbie that I am, or there are compatibility issues between the compiler I'm using and the one the author is using to demonstrate code.
I'm looking to get started on the "C++ Language Tutorial" which is provided on this site, but it, like every other site and tutorial I've seen, assumes that I'm all set up and ready to go.
So my goals and newbie-ness in consideration, my question to you all is this:
What specific Compiler, IDE, Library, and API would you suggest I begin learning on? My OS is Windows XP.
Thank you all so much for taking the time to read this, and an extra special thanks to anyone who responds!
K, your compiler choices are either:
Visual C++ 2008 Express Edition
Dev C++
I prefer VC because it's got a simpler interface imo but it's any choice.
Those are both ides by the way. And libraries? You should start with the standard libraries. You will probably only need <iostream> for a long time, eventually also making use of <string>, the c libraries and the standard containers <vector>, <list>, <deque>, <map> and <set> as well as others.
Since you are using Windows XP you will probably also encounter windows console api at some point.
Just how much skill do you have at C++? What do you expect your game engine to be capable of? You should avoid investing too much in this language (education wise) if you are expecting bigtime graphics (you will need to work with graphic libraries such as SDL) or even advanced text base (curses). It's doable but rather higher level.
or you can use open source GNU windows compiler "Mingw" (or any compiler) and just use a basic text editor such as wordpad, notepad++, etc. (tons of free text editors on sourceforge)
Or you can use Eclipse which has a port of mingw built in to the IDE.
If your on a unix there's those options (except vc), VI / gedit / konquerer / Mousepad etc etc. Sun microsystems has their own c++ IDE based off Netbeans which is only for linux/unix and solaris systems. (so should work on mac).
OK, so I'll see if I can get Visual C++ 2008 EE on your suggestion. It looks like it's free too which is awesome.
Windows Console? How does that stack up against Direct3D or OpenGL? I've heard there's much contention over these API's but I haven't heard of the WC API.
As for my skill level, like I say, I'm just starting out. I can write a simple "hello world" program but that is about as far as my knowledge will carry me without some kind of guidelines or tutorial to follow. That being said, I learn fairly quickly, and will do what it takes to get good at this.
Of course for my ultimate, day-dreamed end result I'd like the graphics to be top notch. Most of my thinking about what I want the engine to be capable of is based mainly on what I'd like the game to be like. My idea for it is an fps game with the best graphics around and bells and whistles up the wazzu. But I figured I should start out with something like Tetris first (perhaps on the system, or one similar to, what I hope to end up working with though?)
Seriously though, as far as specifics for a game engine I'd like to make one capable of:
- objects (size, shape, mass, volume)
- object characteristics (elasticity, rigidity, temperature sensitivity, solid/liquid/gas)
- object painting (like Blender has for bone control, but expanded to object characteristics)
- collision detection & effects
- destructible objects
- force effects (gravity, etc)
- a physics system
- friction
- object preferences, like Company of Heroes' cover system
- I'd also like it to be capable of topography, and multi-variable calculus
- and of course obvious stuff, like sound, lighting, animations, etc.
Sorry you had to slug through that list, but I figure it's better to be too specific than too vague.
Hey gcampton, thanks for the info!
Like I said, I plan on getting started with that very tutorial; I just want to get all software I'll need first for my specific project so I can familiarize with it while I'm working through the tutorial. When I get to the tutorial I'll use your advice and fiddle around with all the sample programs to test stuff out. Thanks again mate!
after 6months or so of being able to complete just about any problem the tutorial covers you then may want to enroll in university and get a degree in games programming. Because as it is, games programmers are some of the top programmers in the world. to develop your own api, you will probably need a degree in physics as well :P But you can always amend that goal I guess. To being able to afford a licence for the unreal engine or some such. :) don't worry if you feel you will never get there, because eventually you will. You just need to be persistent and keep plugging away at it. Just remember the basics are important, learning them well is one of the best things you can do for yourself.
on a side note:
There's a games development course in the city I live in, costs around $12,000.00 US at the time of this post. It's not university it's a business that claims to be games development company(only they havn't released anything). They promise student the world, they can be games programmers in 12 months study for only 12k !.
Needless to say lots of people are dumb enough to believe them and pay to do the course. All of which have zero to none understanding of programming when they enroll, and are taught 3-4 different subjects from programming, graphics, business studies, and one other can't remember.
How much programming expeirence these guys get after 12 months of only doing 1 programming class per week is practicaly nothing, in fact most of them don't even learn the basics of programming. One guy I met who was dumb enough to pay for the course and complete it with a pass I asked him for help on a semester 1 assignment I was doing. It was a simple exercise reading in a file sorting the array and outputing to another file.
I sent him my code, his response was: "wtf is this? is this c++ ?" This was after I had been studying for only a couple months, at the cost of $250.00 (at TAFE, government funded institute).
Hahah, that's my plan, to get a degree in game design. I'm just changing up my major from poli sci to this actually, because I realized that thinking of games, and trying to learn programming was my homework procrastination method of choice, and so hopefully between learning programming in school and practicing it as a hobby I can really learn a thing or two about it.
The problem is that I have to get math credits out of the way before I can take any computer science classes. Though I'm not sure if that's still true if I transfer to a technical college. Anywho, that's why I'm here, so I can learn as much as possible before I start taking classes in this stuff :-) And don't worry, I'll try not to fall prey to such schemes... or I'll try not to.
University has a fairly steep learning curve when it comes to programming which is why i recommend other people learn basics first. Such as the course I'm doing covers most of the basics in first semester, moves onto gui / networking / web apps / QT / boost / swing etc in semester 2, 3. the advantage of this is the cost is very very minimal and I get 1 year credit from uni. However my course is 18months. But I still save around $20,000. As a bonus I am also being taught by industry professionals who are well known, and have been programming since punch cards were the code of choice. These are small classes as well 10-15 people, so getting feedback and interactivity with pros is a huge advantage, and something I will not have when I go to uni.
I just wish I could stay there being taught by them... :( even though it's not games programming it's still great application design.
Windows console is for console manipulation. It's not graphical in nature but it is a good place to work with console (unless you are willing to jump to curses, the true terminal library. Much more powerful and truly meant to work in console, ideal for text-based games. If you've ever played Angband you'll know what I mean; that is programmed in curses). Direct3D, OpenGL, SDL and others are all graphics libraries.
And frankly, unless you plan on shifting gears into a dedicated game-prog course, you will have a long road to pulling off the game you have in mind. You are reaching very far.
I would suggest you work like this:
once you are accustomed to standard input and output, go into loops and conditions
Then follow up with arrays, pointers and file io
Advance into classes and inheritance
Finish up with standard containers and algorithms
That composes most of the C++ standard libraries. Then you will have a pretty solid base knowledge. This website has tons of great tutorials. But just tetris... even text-based tetris is a long long jump from Hello World (at least through all the stuff I just mentioned, plus either a graphics or terminal library).
gcampton - That's pretty awesome. What the school called that you go to? I'm wondering if they have something like that here. I could get into a techniqual college, but I don't think that's what you're talking about. I know it'll be tough going to school for it, but my hope is that it'll keep me on track. By the way, are you going for general programming, or game programming?
tummychow - Taking game-programming courses is exactly my plan actually. I know it's still a long ways out, but I'm hoping that between school and online websites such as this, that I'm going to get somewhere. Besides, going to school gives me 4 years to pull off such an engine. But even if I do get it done I know it's not going to be top notch, but my hope is that I can build off of it to make a better engine and hopefully get some funding to do so.
I'm trying to get loops and conditions to where I can do them on the fly. Not quite there yet, but I'm closing.
TAFE, (Brisbane north insitute of) I'm pretty sure is only Queensland based in Australia. It's government funded institute. If your in Aus, then there should be something of equivelence in other states (probably not called tafe though, you should be able to find out by checking the government websites or contacting local member of parliment). But if your in another country then I have no idea, don't like your chances :P
Darn. No, I'm in the USA, so I guess that rules me out, haha. We have technical colleges here which I think might be similar; not government funded though of course.
When I get to the tutorial I'll use your advice and fiddle around with all the sample programs to test stuff out. Thanks again mate!
American and you still called me mate ! that's comforting :P
if you want to PM me your email, I can send you the notes for semester 1/2 for C++ from my course, you obviously won't be able to follow it fully as we use text (Deitel and Deitel How to program C++ 6th ed). But, there's a lot of good references, and sample code throughout the notes. It is however written by a bias Unix freak and therefore is also included a lot of unix stuff (sh scripting etc), which can be safely ignored if requred.
Hey if you could, that would be awesome! Even if some of the information is irrelevant, it will surely still be useful. I'll send you a message here once I figure out how, heh.
Sadly I think it was Harry Potter that internationalized that expression, lol.