• Advertisement
Sign in to follow this  

I'm interested in starting over. Any suggestions?

This topic is 4676 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello. :) About 3 or 4 years ago, I started getting interested in programming video games. Like so many others, I just wanted a creative outlet and I saw video games (as a combined audio/visual/storytelling experience) to be the perfect outlet. So naturally, I started programming. Makes sense, right? Yeah, I know it doesn't. =P I bought a book called Teach Yourself C++ in 21 Days and read it until I got to the chapter on classes. Inheretance? BO-RING! Templates? BO-RING! Where's the graphics stuff? I skipped ahead and couldn't find any in the book! GRR! This book sucks, right? Yeah, I know it doesn't. =P So I skipped that stuff and bought Tricks of the Windows Game Programming Gurus. I got frustrated about halfway through because I had problems getting Direct Draw to work the way I wanted it to. I liked loading bitmaps from a resource like Andre taught me in the GDI chapters, but I could find no way to do that with Direct Draw. I found a way on MSDN to load a bitmap into a DDRaw surface using GDI somehow (I forget) but I couldn't get it to work properly using MinGW (Dev-C++ was my IDE). Obviously the compiler sucked, right? Yeah, I know it doesn't. So I found SDL and was amazed at how easy it was. I made half a Tetris clone and was very proud of myself, but instantly I wanted to do platformers and Metroid clones and I needed to build a sprite class. Could this be the point where my lack of C++ skills came back to haunt me? You bet ya. I started thinking, "What the hell am I doing? I don't actually like this stuff, do I? I just wanted a creative outlet of some kind!" So I dropped programming completely and started drawing, painting, writing stories, playing guitar, and writing music. A lot. For like a year and half. Now that I have that creative stuff out of my system, programming is still calling my name. I guess it grew on me. But this time, I want to do it right. I want to learn the skill, not necessarily to create the coolest games ever, but perhaps for all kinds of applications and maybe even advance my career a bit. I just have this insatiable need to program things that work, and to do that I need to learn the right way. So my plan is to re-read Teaching Yourself C++ in 21 Days from back to front. I want to do pointless programming exercises over and over again so that I can learn all about templates, classes, inheretance, data structures, overloading, and all that BO-RING stuff. Does anyone have any other books they can recommend, or perhaps some self-teaching strategies or even some useless exercises to try?

Share this post


Link to post
Share on other sites
Advertisement
Guest Anonymous Poster
It sounds like the best thing you can do is go learn Python. Python's pretty awesome, and even better is that you can use PyGame to make game stuff. Think of PyGame as a much, much more feature-filled SDL which is also easier to use.

Now, I'm sure you're thinking, "Man, learn another language? I don't want to waste me C++ skills!" But you won't be -- you will learn Python soooo much faster than C++, and a lot of the skills you pick up in one will apply to the other. I believe, that for a person with no programming experience, it will be faster to learn a language like Python and then C++ instead of just learning C++ first.

-- John

Share this post


Link to post
Share on other sites
Perhaps you're just not meant to be a programmer? The blank project workspace is my paper, and the source code is my poetry. I find it to be an art in itself to get the systems to operate together in perfect harmony, effeciently and transparently.

It seems to me like coding to you is hacking shit together to get it out of the way for the fun stuff. Programming is the fun stuff, to me.

You might be better suited as an artist on a team of programmers or a mod maker where the core is already done for you.

Share this post


Link to post
Share on other sites
AP, I am totally down with learning other languages too. Thanks for your suggestion. If it takes me 20 years to become an expert in C++ (or any other popular, powerful language), then so be it. I will enjoy the ride along the way.

skulldrudgery, thanks for that suggestion. I will look into it immediately.

What do you guys think of Thinking In C++? I see it for free on the web everywhere but I have yet to read it. Unless it's a horrible book that's going to set me back somehow, I don't see why I shouldn't read it sometime.




Edit:

Grozzler, you might be right. I'm not sure if you surmized this from my post, but I did reach that exact conclusion a while ago. I needed a creative outlet, and that's why I started doing the drawing and the music and storywriting -- and subsequently dropped the programming. The drawing and stuff is quite fullfilling and I still do it today. I will probably always do it, even if no one ever gets to see any of my stuff.

But like I said, I feel inspired to program. Not to design games...but to actualy code stuff. Anything. Stupid exercises, powerful apps. It's all good. It's a huge urge for me right now.

Who knows, it may not last, but why not give it a try, ya know?

Share this post


Link to post
Share on other sites
it took me years of picking up and dropping C to finally want to learn it. Dont get me wrong I always had the desire to program. It wasnt until I had found something I really wanted to write though that i was truly able to start learning.
So my suggestion: Figure out what you want to do then learn howto do it. Im completely self taught(I even taught my self maths past algebra) all the effort i put into learning these skills were not for the reason of learning them. Not until i had achieved a few finished programs. Some things i found very useful.

Implement your own linked list class.
Then learn why STL is way better ;)

I found writing some simple classes first helps alot too, a good starting point is a 2d vector class, then try a 3d one.

Get good at math, youll understand why programming is so useful once you've scribbled out 20 pages of math that your pc could have done after you entered 20 lines of code.

Goto guru.com and start making some of the simpler projects there, dont bid - just do it. I have written quite a few programs based on ideas from there and learned many important concepts, just by acting like it was important to finish on time and properly.

Also I code many utility programs for myself. I wrote a torrent file scheduler(it works with my browser to make things real easy), an image converter, a mp3 tag changer/organizer(idea stemmed from guru.com) and many other programs ive needed to use but couldnt find.

Another good learning tool is connecting non pc realted thigns with programming. I wrote a program to keep track of feeding and watering an indoor garden as well as updating a spreadsheet with it information, I also wrote a program to control
stepper motors from old disk drives from the paralell port(I built and designed the circuit completely out of scrap pc parts) and had to wrote the program in C on a 16 mhz 386.

There was no point really to writing any of those besides learning, and keeping myself occupied. I hope you find some of my suggestions useful.

Share this post


Link to post
Share on other sites
No, no, no, NO! All those 'For Dummies' and 'Learn in 21 Days' are the worst books ever! Never ever read them!

Instead, read 'C++ From The Ground Up' by Herbert Schildt and/or 'C++ Primer Plus'
by Stephen Prata. These books are the best when it comes to beginning C++.

Alternatively, you can try 'Beginning C++ Game Programming' which gives you C++ in a gaming perspective (although no graphics, just console). Remember, this is NOT a game design book. This is a C++ book for beginners using games (Tic-Tac-Toe etc.) as... the explanation material. Very good.

And please, you have to understand that learning to program is extremely difficult! Never expect to right even a simple game right away. Learn, learn, learn first. Do stupid examples first. And don't dump any part of language. Learn OOP, templates, all the other stuff.

When you are comfortable with plain C++, go for either OpenGL or DirectX...

Hope I helped.

Share this post


Link to post
Share on other sites
If you haven't done anything in 4 years I'd say give it up and find something else to do.

Programming is more about motivation than anything. You have to want it and you have to follow through with it. You are generally going into solving a problem
not knowing all the answers and having to research and prototype. Good Design is based on experience and ability. The other things are paradigms and patterns.
Languages don't mean much, they are all designed to do the same things from different models and approaches.

I'd start with Scheme. Scheme is clean, you are only facing the problem, and not the complexity of the language. It is probably the simplest language around. It is also fundamentally a very powerful language. If you can master scheme you can master any language they throw at you.









Share this post


Link to post
Share on other sites
chad_420, that helps emmensely. A friend of mine is taking CS in school and he would always have these tedius little projects to do. For example, he had to make a grocery store simulation where each cash register line was a queue and it had to work in a very specific way. Sounds tedius as hell, but I was actually very jealous because I remember reading the C++ book I have and thinking, "Great...queues. How can I put this to use?" Coming up with project ideas was tough.



Zodiak, thanks for the feedback on the books. I've had a sort of attitude re-adjustment with respect to programming, and so I'm no longer in it just to do something great and get recognized. I'll check out the books you mentioned. The longer and more boring, the better. Seriously. I want to know this stuff like English before I even think of doing something that cool. And then I want to learn MFC or Win32 or whatever else I need to build some powerful windows apps. And then I want to learn Direct X and Open GL like they're English "just because."

With that said, please don't make fun of my English skills! It's only my first language!



>>If you haven't done anything in 4 years I'd say give it up and find something else to do.<<

It's been about 4 years since I first began programming, but I programmed for a few years after that. The biggest obstacle, for me, was wanting to do the creative stuff too quickly, and failing to recognize the creativity inherent in programming itself.

I see no reason to give up at this point because I'm only investing my own free time. If I feel like quitting later on, then perhaps I will with no harm done. That's how I see it right now. If I were signing up for $thousands in CS classes, then I would understand your point, but at this points its just a hobby, and perhaps a temporary one.

Share this post


Link to post
Share on other sites
You can learn everything you need to know about making a game on the internet, with enough google you can find just about anything you need about programming.Also, here are some links that I like to go to CProgramming.com, MSDN,fre CPP books,Programmershelp.co.uk,CPP reference.If you wish to learn allegro; here's the allegro vivace, or for SDL tutorials here's some tutorials, or DirectX tutorials; I would recommend MSDN for DirectX tutorials.[smile]
EDIT:fixed links.

Share this post


Link to post
Share on other sites
Quote:
Original post by uncle_rico
A friend of mine is taking CS in school and he would always have these tedius little projects to do. For example, he had to make a grocery store simulation where each cash register line was a queue and it had to work in a very specific way. Sounds tedius as hell.


It is tedious as hell. I've loved programming for quite a few years, but I can barely bring myself to do CS programs for two reasons 1) They're easy. If there's no challenge, it's not going to make me a better programmer. 2) They have no point other than to teach you how to program. Since I already know how to program and can understand the CS concepts just fine without homework, I see it as a patronizing waste of my time.

Share this post


Link to post
Share on other sites
Just mentioning, you can still continue "drawing, painting, writing stories, playing guitar, and writing music" to get some outlet for your creativity. I'm both a programmer and a musician myself, and I find that both of the activites contribute to satisfying my need to do something creative.

For the programming part, you seem to have the focus that I think is necessary for the quite heavy task of learning programming. Just give it time. If it still doesn't feel right after a while, then (as many others here pointed out) maybe programming isn't the right thing for you anyway.

But as I said, if you feel interested and really focused on the task, go ahead. Read a book, take it slow, but also start programming some simple tasks by yourself, then you can see for yourself what it is that you can or can't do. For those things that you can't do, try reading some more on those things.

And a final piece of advice, if you have problems with one book, try another.

Share this post


Link to post
Share on other sites
Though I didn't learn from it, I've seen the Learn C++ in 21 days book and I think it is a good book if you are starting from scratch, you will learn everything and it's pretty well written. Thinking in C++ is not as good as this book (but it's free so it kinda balances it out).

Share this post


Link to post
Share on other sites
First of all, i agree that "21 Days" books are a waste. You need something more solid, but still newbie friendly. The "Thinking In C++" books are good, especially for beginners.

You will find that you will not learn all of C++ and then go and program some great game. What will happen is that you will learn just enough to be dangerous and then go try to make a great game. You will then experience humiliation, frustration, and many other things, then fail. Then you will learn about pointers. You will then tackle the problem with renewed zeal until you find that your meager knowledge is still inadequate. Then you will learn data structures, and say "Aha!", then fail, then classes, then fail, then STL, then fail. Eventually, your failures will mass together and form a greater learning experience for you than any book would have been. There is rarely any "golden way", just a lot of ways not to do things. With any project you take on, half-way through you'll always think to yourself, "I wish i woulda..." Eventually you'll end up with a decent body of knowledge that lets you actually create something with some degree of fluency and structural integrity.

And this is what the rest of us call "fun" ;-)

Share this post


Link to post
Share on other sites
leiavoia, yeah, totally! :)

I mean, the greatest way to learn ANYTHING is to do it. Learning to play the guitar? Damn, nobody can teach you to be Clapton in a day (or, more specifically, 'in 21 days' ;))! Just pick the guitar up and start to play whatever you want! Then, in some years, you will be able to play nicely. Same with programming! Just program! I am also a noob. I am just starting my way with C#. But already I've made a Process Killer all by myself which gave me a great deal of exp. Just think of a program and write it! Of course, don't think of Photoshop or 3DS Max, but something simple :)

Share this post


Link to post
Share on other sites
The book I reccomended walks you through creating your own array class. It is scalable, has bounds checking, you can do assignments like array1 = array2, etc.

It also walks you through the creation of an OO elevator simulator, from design(using UML) all the way up. In the 5th edition they changed the elevator simulator to some sort of ATM thing or something.

It's pretty good for beginning to intermediate level. I assumed that you'd call yourself beginning to intermediate if you skipped chapters on classes and inheritance. If that is not an accurate decription of your level, then don't go rushing out to flush 90 bucks down the toilet. helloworld to pointers is about two fifths of the book.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Don't give up. These things take time.

If you really want to stick with C++, IMHO the single "biggest bang for the buck" thing you can do right off the bat is learn to use and love std::string. It is an accessible entry point towards learning how to use the nice bits of the standard library, and makes things the seem like they should be easy, just about as easy as they ought to be (as opposed to the veritable minefield of char* hackery). Oh, and you'll be using OO without even realizing it - and from there, you can start to pick up the principles of good class design. [smile]

But yeah, going with Python would be a really good idea too.

Share this post


Link to post
Share on other sites
Lots of good ideas here.

From personal experience just using the language helps the most. I learned C++ back in middle school, but even then I learned it by writing my own programs, not by reading straight out of books and doing exercises. The latter were simply way too boring for me.

Even now I use this strategy to learn new languages, and even new APIs. I learned Python by writing tons of little useful scripts, and eventually wrote an IRC bot in it. I tried learning Perl by writing another IRC bot, but went back to Python after I finished and saw how ugly the language was :) I learned C# and Managed Direct3D by writing a 3D stencil-shadowing implementation, and even now I still write a lot of little C# apps to learn various parts of .NET. The code for a lot of these programs fills only a couple of screens, but they help a lot.

They're short and fun, and can be quite useful too.

Share this post


Link to post
Share on other sites
To the OP, I totally agree. I felt like starting over too. The problem was I never finished the book I was reading. Start a C book, then C++, then do Andre's book. If DX is too tough, I'd recommend Managed DirectX. This is for the .NET archetecture using C# or VB.NET. It's very fun. Heck, you can simply play an audio/video file with 2-3 lines of code. DX was really tough for me, but MDX just seemed more reasonable and made sense.

Share this post


Link to post
Share on other sites
I'm was (am) an artist in the industry for a long time... Over time as games became more and more technical we found ourselves needing a "technical artist" more and more. I jumped at the opportunity (I have the jack of many, master of none syndrome something feirce).

I started with MaxScript and Mel, which I picked up pretty quickly. I then moved to C# which while a lot more structured was also fairly easy to pick up, thanks to all those CS classes in HS and early college.

After that I took the plunge into raw C++, and can STRONGLY reccomend "Visual C++ .NET How To Program" from Deitel.

How To Program

It's laid out like a text book with lots of questions and excercises at the end of each chapter, and doesn't dilly dally around, moving farily quickly to some "cooler" stuff.

I also swear by my copy of "Practical C++ Programming" for great reference and non-.NET reference and education. It also has the questions and excercises for each chapter. The only drawback is all your code will be console apps. No windows stuff at all.

Practical C++ Programming


Good luck!

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement