Sign in to follow this  

What to focus on?

This topic is 3731 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

Hey folks. So I've been trying for a long, long time to figure out what exactly it is that I need to focus on learning, and while I've learned a few things here and there, I feel as though I've made no real progress--well, except for graduating college, but even that was painful at times. I keep reading threads on this board, reading books on programming and software design, and each one makes me think of another area I need to focus on. So I end up starting to read one thing and focus my efforts on it, and then something else pops up and I change my focus to that. Then it happens again, and keeps happening until I've mentally stonewalled myself. I'm not one to normally ask for help, but I'm getting tired of my own stonewalling, so I thought I'd ask a few questions about what I should currently be focusing on. Before I do though, I guess I should elaborate more on my programming background: - I've been programming since high school, and it's what I've done in college, so I feel I'm at a point now where I understand the fundamentals of programming and software design. This is from a business perspective, as my college program was a business analyst program. - My main focus for the last 5 years has been on learning C++, and I've spent a great deal of time both in and out of the classroom trying to use it. What I know (or think I know): - Pointers and references, and how they differ from one another (my understanding is that pointers point to an address in memory and can be initialized and changed whenever, while references point to a specific variable, must be initialized on creation, and can't be changed to point to a different variable). - Dynamic memory allocation (new and delete). - Basic Exception handling (mostly Java-specific, though I do understand what the try, catch, and throw statements do and when to use them) - Classes (the differences between public, private and protected, constructors, destructors, copy constructors, operator overloading, friend functions, the *this pointer) - Basic Inheritance (what it is, how to do it, but not really when to use it and when to avoid it) - Polymorphism - Unions - Namespaces - File I/O - Strings What I don't know: - Function pointers - Templates (though I'd say that's more of a design thing; I know what they do) - The Standard Library (though I've played around with vectors) - Boost (I can't even get it to work right) I can't think of anything else at the moment (though I'm sure I've left some things out that I either do or don't know). - My knowledge of data structures and algorithms is limited. I actually have the book "Data Structures For Game Programmers", but I'm not sure when to read it, or if I should even make it a separate read. - I don't have any knowledge of design patterns (or, at least, I haven't been trained to recognize them. That seems to be more of a software engineering thing). - I have dozens of books on the subject of programming, including a number of game programming books. Here's a list of books I own and haven't fully read: - Data Structures for Game Programmers - Swords & Circuitry (more of a game design book, really) - Game Programming All-In-One, 2nd Edition - Programming Roleplaying Games with DirectX, First Edition (really out-of-date now; was completely rewritten not too long after I bought it, actually) - C++ Primer - Pragmatic Programmer - Code Complete - Beginning Game Programming - Beginning C++ Game Programming - Beginning OpenGL Game Programming - Introduction To 3D Game Programming With DirectX 9.0c: A Shader Approach (I tried to read this the other day and actually blacked out for a bit, though I'm not blaming the book. This is the one I'd really like to finish reading) - SAMS Teach Yourself C++ in 21 Days, 3rd Edition (terrible, terrible book) - SAMS Teach Yourself Visual C++ in 21 Days (even worse. I had to buy this for my Windows Programming class; it's basically a step-by-step instruction manual for using MFC and teaches nothing of the Win32 API) - 3D Math Primer For Graphics and Game Development (not a programming book, but I got it when I got Intro to DX9.0c as a supplement to the math chapters) - My math skills are rusty, and the worst part is that I'm not sure how to get them back up to par, apart from taking a class, but even then I'm not sure what exactly I should be focusing on, to be perfectly honest. I think that should provide a sufficient primer. Anyways, on to my questions: 1) Am I setting my goals too high by wanting to learn DirectX at my current level of knowledge, or should I focus on working with something less complicated, such as a 2D API, or perhaps a game engine? 2) As far as data structures and algorithms go, should I focus on them solely when the time comes, or should I be trying to incorporate them into whatever I'm doing? 3) What about math? Should math be a singular focus, or worked on concurrently with a related project? 4) Should I be modding instead of trying to design something from the ground up? The Source SDK is just a download away, after all. 5) Once I've chosen something to work on, what should I do to maintain focus? Last thing I want to have happen is further stonewalling. Those are all the questions I have at the moment. If anything isn't clear, let me know and I'll try to answer it. Thanks for listening, and helping. :D

Share this post


Link to post
Share on other sites
I would concentrate on the The Standard Library next, which will also teach you about templates since the standard library, especially the container classes, uses templates heavily. This will also teach you a bit about basic data structures (queues, dequeues, linked lists, dynamic arrays(vectors), maps, and sets). These are not necessarily prerequisites for the other things you have listed, but learning the standard library first will save you time and make things easier in the long run. I know, I've been down this road before and literally wasted years spinning my wheels because I didn't start with the basics.

As for your other questions, I would hold off on getting in too deep. Take it one step at a time, that's the fastest and easiest way to learn things. Learn the standard library, especially the container classes, and then try doing a simple 2d game, like Pong, Tic Tac Toe first, then create more complicated games like Pac Man, Snake, Asteroids, or Tetris.

Good luck.

Share this post


Link to post
Share on other sites
Quote:
Original post by Quanta_StarFire
1) Am I setting my goals too high by wanting to learn DirectX at my current level of knowledge, or should I focus on working with something less complicated, such as a 2D API, or perhaps a game engine?


Absolutely.

Quote:

2) As far as data structures and algorithms go, should I focus on them solely when the time comes, or should I be trying to incorporate them into whatever I'm doing?


At this point, don't worry about it. If you run into a problem that you think that might be common (and thus have a pre-made algorithm for it) then do a search.

Quote:

3) What about math? Should math be a singular focus, or worked on concurrently with a related project?


I'm not sure. In my experience, you learn math in school and different people forget various amounts of it. Certain stuff like matrix manipulation might get better through practical use, but that's something you can worry about later.

Quote:

4) Should I be modding instead of trying to design something from the ground up? The Source SDK is just a download away, after all.


Maybe. I would recommend that you focus on learning at this point. Some people require a project as an excuse to learn. Some people work better off of a codebase, some people don't read other code easily. Depends on you and your tendencies.

Quote:

5) Once I've chosen something to work on, what should I do to maintain focus? Last thing I want to have happen is further stonewalling.


Picking planning and organizational skills to focus on seems like a good start. Seriously, there's more to being an effective developer than just pumping out code. You have the Pragmatic Programmer and Code Complete, so you should have some background in setting up a good plan and process with which to work off of.

Keep in mind some common sense things: Don't get ahead of yourself. Don't code sleepy. Functionality trumps speed and elegance.


And remember to not beat yourself up too much. Getting stuck is not uncommon. Having troubles with your work habits or process is not uncommon. You're still relatively new to the practice so these non-technical skills will be a little shoddy while you learn them, just like C++ syntax or program design.

Share this post


Link to post
Share on other sites
Speaking from pretty much the same point of view when I started to learning programming and game development, I'll let you know what I did.

I went first into DirectX. Well that didn't work out too well, as C++ was something I was learning at the same time as well.
Since you seem to have a pretty good ground on C++ and building applications which I would assume as not too exciting. I would jump right into DirectX if I were you.
Beware, It's a steep learning curve and initial results will not be too exciting and somewhat discouraging if you look at other's work which looks so fucking good.
It took me about 6-7 years of learning programming, DirectX, reading, researching and yaa daa to fully understand, almost let's say instinctively understand.
Once you reach that point, well whatever your dream up, with the patience to develop it, you can do it.
But thats programming, once you fix a problem, implement a kick ass feature and see the immediate results, the reward gives you the satisfaction that all is worth your time.
I might recommend you create a simple game that would be a good experience you could learn from, suggestively something like tank wars, yet multiplayer over a network. This is something that will exercise just about everything to get the understanding you currently need for C++, Networking and 3D Graphics w/DirectX. Don't rush it, complete it. And look back at how much you did before, and how much you accomplished now.

Anyways, for me its been an incredible hobby, made my understanding of algebra, trig, in a practical sense, which is somewhat hard to explain, but something you will certaintly understand with time and practice. I now am confident enought to release a game commerically as an independent game developer, and I sure as hell hope it pays off =) Nevertheless its now just about the money, its a passion and keeps you sharp.

Share this post


Link to post
Share on other sites

This topic is 3731 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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this