Completely overwhelmed - should I just give up?

Started by
19 comments, last by Tutorial Doctor 10 years, 4 months ago

Hey there. I'm posting this for some motivation guidance, more than for tehnical advice. Please don't see it as a rant, it's more of getting some stuff off my chest while I explain my question.

Here's the thing: I've been learning to program games for about a year. What really got me fired up for it was a couple of exciting game ideas I had (no, no MMORPG LOL). Since I'm a relatively reasonable guy I wouldn't expect to tell someone to do the heavy lifting for me, I realize the world is full of so-called "great ideas"... So I started by picking up C++ again about a year ago (I had already learnt C++ basics a long, long time ago). I took it seriously - by this i mean no shortcuts - so I read C++ Primer. That's a huge but excellent book, as I really understood C++ deeply with it, but it also took me a long time to read (I read it thoroughly, taking notes, making sheets for memorizing and personal reference, etc). By a long time I mean i just finished it a couple weeks ago.

After C++ and a lot of "fishing" (searching the web and looking by trial and error for a right approach to learning game programming), I went on to SDL, as it seemed like a very good place to start to learn the game design/coding principles. SDL 2.0 came out recently, so tutorials to learn this version (which includes hardware-acceleration) are pretty scarce. Anyway, I found a book named "SDL game development" that uses SDL 2.0. So I picked that one up too.

I realized that, even though I was able to write custom classes and all that jazz according to the principles taught in the SDL book, learning SDL seemed too much of a detour for something that only handles 2D. "Maybe I could just get on with it and jump straight into OpenGL, which does SDL stuff and much more", I thought to myself. Besides, the fact that I was staying clueless as to how to implement 3D and even 2D on some subjects started to bug me.


So I looked for a good place to learn OpenGL. Being life as it is, my computer only supports up to OpenGL 2.0, which uses fixed pipeline (for whatever that is lol) - a feature that is either tolerated or hated to death by people who discuss it... Anyway, found some good sources to learn OpenGL... I had already picked some information here and there about vectors, matrices, but besides that I was in complete darkness. So when I was learning OpenGL, I was pretty much learning the API without knowing how 3D math actually works. Not very useful...

So I decided I should get some solid grounds on 2D/3D math too. So I put SDL and OpenGL on hold and looked for good books on that subject. "3D Math primer for graphics and game development" seemed like a very good book, and reviews were good too. So I started reading this book a couple of days ago.

Now I'm reading an 800 pages book that teaches math 3D thoroughly until I'm grabbing my hair and tearing it out lolol...

I must admit it... I'm getting burnt out, demotivated and downright lost in the middle of all this learning process. It's just too much to be done single-handedly... I need to know 3D math, then SDL, then either OpenGL or a graphics API like Ogre 3D, then Blender in order to make the models, then God knows what else... In my life I've learnt to play the guitar all by myself, to write and manage a blog all by myself, I've learnt a lot about guitar equipment all by myself, but learning to make games seems too much to bear. Maybe I'm tired of pushing so hard on myself...

Recently I've joined a team of programmers and contributed a bit as a game designer. I wrote a Game Design Document (it wasn't 100% finished, but it was well on its way), so I got a grasp of how a GDD needs to be written, etc. On that team, one of the hardest parts was to find 2D artists - it was so hard that the project was actually shifted to 3D because there seems to be more 3D artists than 2D ones. That also contributed to my shift to OpenGL after some SDL experiments...


So my question is: Should I just give up? I really enjoy the game ideas I have in mind, but I'm starting to believe I simply can't pull it off... On the other hand, I'd be glad to write a thorough Game Design Document for each game idea, and if I could get some folks to help me out I think the games would have some success. But... Is it realistic to expect some people to join me and pick up the GDD and get things started? Because right now that seems like the only way out...

TL;DR - I have some exciting game ideas in my head (none of them are MMORPGs, lol). So to get my hands dirty I've learnt C++ thoroughly during the last year. Then I started learning SDL, but shifted to OpenGL to know more 2D and 3D. I needed 3D math background for OpenGL, so I started learning 3D math from a book - it's boggling my mind after so much self-teaching... So I'm getting burnt out, demotivated and lost. Should I
A) give up my ideas,
B) change my approach to learning game programming (if so, how? Give me some advice, pls)
C) write a Game Design Document and try to get some folks interested in joining my project?

Advertisement

It sounds like you need to set some short term goals to help you feel successful as you move towards your end goals. Give yourself some smaller steps to accomplish, break it into chunks.


I read C++ Primer. That's a huge but excellent book, as I really understood C++ deeply with it, but it also took me a long time to read (I read it thoroughly, taking notes, making sheets for memorizing and personal reference, etc).

Reading, taking notes and making yourself learning aids is a great start, but were you also writing code while you read through the book? A theoretical understanding of programming won't get you all that far unless you're actually applying it to properly test your understanding and to learn all the practical details of the process that aren't necessarily covered by your book.

Along with your reading and note-taking you should also be doing any exercises presented in the book as well as actively seeking out additional practical problems to test your knowledge. If you need some additional problems to solve you could try some problems from Project Euler, Code Kata, or some of the quiz questions and problems presented throughout LearnCpp.com. You should also create additional learning opportunities from your practice problems; intentionally create bugs to see what errors arise, try to add your own additional features or change how things work, etc.


Is it realistic to expect some people to join me and pick up the GDD and get things started?

Probably not unless you can a) pay them, or b) get the project started and make some good progress by yourself so that they can see you really have something to offer a team and that your idea is really interesting. The overwhelming majority of would-be game programmers have their own ideas they would like to see brought to fruition, so it takes something a bit special to motivate them to work on your idea instead. See the discussion "what programmers want from a designer" in our Game Design forum for some more good information.


B) change my approach to learning game programming (if so, how? Give me some advice, pls)

It sounds like you might be getting bogged down in details; you wanted to develop 3d games, so you first started learning OpenGL and then proceeded to try to learn about the underlying theory. While all of that stuff is very valuable and worthy of your time and effort, if you really want to get a game made you might be better off picking up an engine like Unity, UDK, or others which handles all of those details for you so that you can concentrate on actually making a game rather than learning about 3d math.

You can always go back and learn more of the underlying theory later on -- it all depends what you really want to achieve -- is this project about learning how everything works, or is it about making the best quality game you're able to in a reasonably efficient manner? Clarify your goals and the path to proceed should be clearer.

I would also agree with Dragonsoulj: it sounds like you're piling up more and more work for yourself on the path towards your ultimate end-goal but aren't making smaller achievements along the way to keep up your morale. By breaking down your goal into smaller mile-stone projects that are achievable in a reasonable period of time rather than some unspecified future date you can have a sense of accomplishment and may be more motivated to continue.

Hope that helps! smile.png

- Jason Astle-Adams

Ditch the C++, use something else.


I realized that, even though I was able to write custom classes and all that jazz according to the principles taught in the SDL book, learning SDL seemed too much of a detour for something that only handles 2D. "Maybe I could just get on with it and jump straight into OpenGL, which does SDL stuff and much more", I thought to myself. Besides, the fact that I was staying clueless as to how to implement 3D and even 2D on some subjects started to bug me.

Before moving to OpenGL, did you even make a game with SDL? OpenGL only does graphics, so you still need to use an API such as SDL for handling player input, music, sound, and other things required for a game. At its core, programming a game is very much the same whether it's 2D or 3D. Most of what you learn in 2D game development can be carried over to 3D game development. As you've already learned, 3D graphics programming requires you to learn a lot of 3D math as well as learning a complex API, which is why it's a good idea to start with 2D development when learning how to make games.

Since you have a grasp on C++ and learned a bit of SDL, your short term goals now should be creating and completing a few simple 2D games with that API. OpenGL can wait for later, as well as your dream games.

Of course, that's only if one of your goals is to learn how to program games. If your real goal is simply to turn your ideas for games into a reality, then you're better off using a game engine as was previously mentioned.

First, I'll try to give you a dose of reality instead of encouragement. If you're willing to accept the advice that you should give up, you absolutely should give up. Learning the basics is a lot easier than getting to the finish line, so it's going to get a lot harder before it gets easier.

If you can offer more than just game design documents, you might be able to find others to help you. If you can pay them even below market rates, that would work. If you have art assets that can convince people to take you seriously, that might work. If you have experience delivering products to market, that would help. If you wanted me as a programmer, you'd basically have to convince me you solve the non-programming problems for me and I can just focus on what I enjoy most.

If you want to learn game programming yourself, I strongly recommend you drop the books. It sounds like you're reading big, bulky books that are teaching you way more than you'll ever use, and doing it without even giving you the sense of satisfaction gained by actually coding. Just work on your game, and when you hit a problem look up how others solve the problem, then find online tutorials that will quickly teach you whatever is needed to solve the problem at hand. Does it really matter if you don't know how to add sound to a video game before you even have the core gameplay implemented? Does it really matter if you even know a geometry shader exists on your video card before you have core gameplay? Seriously, implement the basics of your game in HTML and Javascript if you have to so you can see if the idea really holds up anyways.

I'd also recommend upgrading your video card if it only supports OpenGL 2.0. A card that old (5+ years, right?) and weak will really limit you when you're running debug builds. It will force you to fix performance issues before playing with the visual result, meaning you might fix a performance issue only to find the code didn't accomplish the effect you wanted anyways. Avoid the countless hours of trying to get more than 0.004 fps every 2nd or 3rd compile. Your time is worth more than a semi-decent video card costs. A better card will also allow easier use of more advanced tools other people have already written when you're just testing out new ideas and such.

IMO Learning game programing is a 5 year course at least (then you will be knowing something, and to be better it is 10 years 15 years) and even then it does not mean you will be able to make something good just you will be educated in the field


IMO Learning game programing is a 5 year course at least

You just reminded me of an excellent journal entry from ApochPiQ, "Become a Good Programmer in 6 Really Hard Steps". That being said, you don't need to do all of this stuff before you can make a great game, and there's a lot to be said for hands-on experience gained during the course of attempting real projects. smile.png

- Jason Astle-Adams


Now I'm reading an 800 pages book that teaches math 3D thoroughly until I'm grabbing my hair and tearing it out lolol...

Books tend to teach extremely generalized theory, proofs, then provide less-than-minimal examples and don't explain how/why/when it is used. My belief is they're useless.

Have you tried playing with code or reading documentation? It's easy to figure what Translation/Rotation/Scaling matrices do; how they do it doesn't matter at all. View/Projection matrices are a bit harder to figure, but you have documentation, forums, Google. As long as you won't care how it works, but rather what it does you'll soon learn to use it.


Now I'm reading an 800 pages book that teaches math 3D thoroughly until I'm grabbing my hair and tearing it out lolol...

Books tend to teach extremely generalized theory, proofs, then provide less-than-minimal examples and don't explain how/why/when it is used. My belief is they're useless.

Have you tried playing with code or reading documentation? It's easy to figure what Translation/Rotation/Scaling matrices do; how they do it doesn't matter at all. View/Projection matrices are a bit harder to figure, but you have documentation, forums, Google. As long as you won't care how it works, but rather what it does you'll soon learn to use it.

This. Books should mainly be used as a reference for something your actually doing. In college, I was forced to buy all of these programming books, that I rarely, if ever actually used. Learning was mainly in the form of homework that involved actually creating stuff. If I ever got really stuck, that was the time to start delving into the books. So my advice to you is to drop all books, and start up a project, one that is not an MMORPG :)

This topic is closed to new replies.

Advertisement