[quote name='turch' timestamp='1335966767' post='4936753']
A lot of people will tell you that that's a bad approach. A multi-year project is going to make it much more likely that you don't complete it. You can run into a wall and get frustrated, you can lose interest. This is especially true for new programmers. I've been there, and so have many others. That's why everyone recommends "make games, not engines". A short, simple, realizable game is much more likely to get completed and will give you an easily achievable feeling of accomplishment.
In addition, its a bad idea to learn on production code. When you are doing something new, you tend to take shortcuts and program sloppily; this is not something that can be done on a multi-year project (which is one of the reasons you'll likely get fed up and abandon it). Things become more and more bloated until you just can't keep up with all of the patches and duct tape. You end up spending weeks refactoring your code, or more likely abandon it.
Think of a new painter: would it be reasonable for them to buy one canvas and expect to slowly paint it up over the years until they've achieved a Creation of Adam quality work?
Thanks for the reply.
I have to say, I partially agree with you. I know that big ambitious long term projects usually end prematurely - we're pretty fickle beings, especially when it comes to programming [img]http://public.gamedev.net//public/style_emoticons/default/wink.png[/img]
I consider it slightly different however, as my goal isn't so much to develop a 3D game engine (at the moment) but rather to learn the concepts. These would be my milestones and seeing each one implemented albeit in a small use-case would give me a great sense of achievement I think.
To take your painting example, I would compare it rather with a new painter buying a canvas and slowly learning the techniques, each time painting a different picture, maybe one with a certain brush stroke, one with perspective etc.
For that reason, I'm still looking to continue to learn how to build a 3D engine and would appreciate it if anyone would provide me with a "technique check list" if such a thing is possible. Your suggestion coupled with GodFear's however, has led me to consider a smaller, more manageable goal in the long term that I can focus on now or work on simultaneously...
[quote name='GodFear' timestamp='1335972707' post='4936782']
I think the most important thing in starting out is to set a goal but make sure that goal is not too ambitious.
In my first attempt to develop a video game i set my goal like this:
1. To develop a simple side scroller shooting game (like Gradius type of game)
2. Graphics will be 2D so all i have to do is create a sprite based rendering engine
3. Collision detection (contact check between space ship, enemies, and projectiles) is a simple overlap test.
4. Sprites are just simple polygons (circle, triangle, rectangle, etc...)
5. simple system for power-ups and score.
That said, in 3 months i was able to create an engine that runs the game and the actual game itself. Graphics look like a 80's video game but it works and very fun.
Completing this small project gave me a sense of achievement and motivated me to try out a more complicated project next time.
Or i can actually build up from this small project and extend it to 3D, add shader based animation and effects, add features that has physics based collision response, etc...
The point is this - it's like playing Diablo. As you kill monsters, you level up. And when you level up, it has to feel rewarding. That way, you get motivated to keep going on.
I hope this helps!
Thanks for the reply. As I mentioned above, I'm still looking to learn the 3D stuff but your post has inspired me to look into building a somewhat simpler 2D engine. I think I'll do this while still trying to learn the 3D stuff, maybe alternating them when I get bored [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]