As many game developers start, i started in the way of game development by getting inspired by a game...

Its about 2 years ago. From then i have just stumbled from one language to other, one api to other.

1. I made a Tic-Tac-Toe game with Java and Netbeans.

2. Pong and two other unique game of mine with Unity3d. which i uploaded in Kongregate. i used javascript and c# there.

3. Breakout with XNA.

4. used some sdl/directx/opengl/allegro/jmonkey/actionscript..

5. i even know maya character modeling/rig/animation/exporting them to unity...

6. i bought so many books on game development in every sector.

7. i read so many tutorials..

8. I am comfortable with all of them, but i coudnt mastered any of it.

i know its my fault and no one can do anything about it.

but as you guys are so experienced, so i want some good advice.

MY PROBLEM IS: when i start learning a new language, i think that i should use an api of that language to do something productive, then i move to an engine regarding that language and then i start thinking about making a game engine alongside a game and after someday, i throw it away... i am not scared of learning or doing hard work, but i loose patience...

How do you guys keep on at something (in most of the case just 1 thing) for so long?

sorry, if i irritated you guys, i know im a noob, thats why im asking and need you people to answer me...

Just pick any ONE language and toolset, and stick to it. Remind yourself of your goals.

If you have trouble with this you might try writing a list of goals, and of high-ish level steps needed to accomplish those goals and display it visibly near where you work as a reminder to keep you on track. MEl things off as you finish them.

If you frequently find yourself drawn to playing with different tech choices rather than sticking to your projects you could assign some time for that; draw up a schedule of your time, assigning most of it to actual work, but allowing yourself 10-20% of your time to freely explore other options.

Keep in mind that a number of potentially good games stayed in development hell for years because the developers would see something new and shiny and port/redevelop their game for that tech, lather rinse repeat. I suggest that you pick one of the technologies that you've already used that you liked and just develop something small and finish it. As jbadams suggested, there's nothing wrong with experimenting with other tech that interests you, but keep your little project pure. No rewrites or overhauls for a new language/API/engine. Just get it out. Then based on your experimentation and experiences writing your first game, pick a tech for the next project. Work with the mindset that the only reason to change your language/API is that your goal is impossible/ridiculously hard in that language, or the project has failed (isn't fun to play or practical to develop) and it's time to move on.

Note that I wouldn't give the same advice to everyone, but I feel it's what the OP needs.

discipline is as important (arguably, more important) than talent in most human activities, software is no exception to this. Doing things with discipline as opposed to just do things as long they are "fun" is what separate unachievers from achievers. Sadly there is no way to learn discipline other than trying to impose that to yourself. You have to treat is as a job.. give yourself a target that is within reach and stick to it until you are done. Increase the complexity and length of the project gradually one month, two months, three months and so on... the hardest part of every project is always near end, when the novelty and the fun is gone and frustration takes over.

I usually have one big project that I passively work on, alongside that I have smaller projects to keep me entertained. However I suggest you just choose the tools that you find are the best, once that's decided then It irritates you when trying to use anything else (mostly because you find these tools to be inferior). For me my tools are C++ + SDL + OpenGL + Bullet physics, in my opinion everything else is inferior but I'm not going to judge anyone just cause they use something else.

Here's why these work:

OpenGL runs on any platform
SDL abstracts input and audio from the platform
Bullet physics is free and runs anywhere (although it is poorly documented)
C++ is very fast and just makes sense

Edited by ic0de, 13 September 2012 - 09:12 PM.

you know you program too much when you start ending sentences with semicolons;

All of your awesome advices helped me much, you guys are really very helpful, now i can think small, but can see the big picture through it, and sorry for late reply, because i really wanted to know that if i can really follow your advices, Thanks