   How to approach after learning a language
  I have learned a pretty good amount of C++ and some other languages and I want to try learning some 3D animations. (I learned C++ on learncpp.com. So far I've made it to lesson 4.5). After thinking for a while I came up with some questions about 3D modeling and animations and I also have some questions about what to do next.Here are my questions:- Are 3D models animated with 3D modeling software or are they manipulated with code? Or both?- What are some file types that 3D animations are saved in?- If I want to have some well-rounded knowledge of making games, what should I learn next after I generally understand C++ code and I aim to make a very simple 3D game from scratch? (Such as a ball rolling around controlled by the arrow keys).- How does code work together with 3D models and animations to make a character walk around for example? (I know this is a pretty broad question).   
Quote:Are 3D models animated with 3D modeling software or are they manipulated with code? Or both? Both.  Generally speaking, a model is created and animated in some external software, such as Blender or MAX or Maya.  Then it is exported, containing bone animation or key-frame animation (maybe there are other methods than I'm unaware of).  Your application needs to know what to do with the data.Quote:What are some file types that 3D animations are saved in?Tons of formats.  DirectX (.x), QuakeX(.md2, .md3, .md5)... .md2 is an easy start.  Spend a few weeks wrapping your mind around .md2 and how binary files work, then you'll be ready to start tackling some others.Quote: If I want to have some well-rounded knowledge of making games, what should I learn next after I generally understand C++ code and I aim to make a very simple 3D game from scratch? (Such as a ball rolling around controlled by the arrow keys). First and foremost, its going to take a looooong time and a lot of reading outside your C++ Primer to understand the language completely.  You should consider learning to program games/simulations exercises in programming--having a well-rounded knowledge of making games and simulations should be second fiddle to being a good programmer.  That being said, try creating a "ball" class that procedurally generates and renders a sphere.  That in and of itself is going to require a lot of research.Quote:How does code work together with 3D models and animations to make a character walk around for example? (I know this is a pretty broad question). Perhaps you should start with 2D?[Edited by - zerothrillz on June 6, 2010 10:31:15 PM];  Thanks for replying so quickly. (You replied about 10 minutes after my post). ^_^Quote:Original post by zerothrillzQuote:Are 3D models animated with 3D modeling software or are they manipulated with code? Or both? Both.  Generally speaking, a model is created and animated in some external software, such as Blender or MAX or Maya.  Then it is exported, containing bone animation or key-frame animation (maybe there are other methods than I'm unaware of).  Your application needs to know what to do with the data.Thanks. Yes, I did do a tiny bit of learning in Blender a while back and I probably forgot most of what I learned.Quote:Original post by zerothrillzQuote:What are some file types that 3D animations are saved in?Tons of formats.  DirectX (.x), QuakeX(.md2, .md3, .md5)... .md2 is an easy start.  Spend a few weeks wrapping your mind around .md2 and how binary files work, then you'll be ready to start tackling some others.Thanks again. I was just wondering about some examples. I'll read up on .md2 pretty soon.Quote:Original post by zerothrillzQuote: If I want to have some well-rounded knowledge of making games, what should I learn next after I generally understand C++ code and I aim to make a very simple 3D game from scratch? (Such as a ball rolling around controlled by the arrow keys). First and foremost, its going to take a looooong time and a lot of reading outside your C++ Primer to understand the language completely.  You should consider learning to program games/simulations exercises in programming--having a well-rounded knowledge of making games and simulations should be second fiddle to being a good programmer.  That being said, try creating a "ball" class the procedurally generates and renders a sphere.  That in and of itself is going to require a lot of research.Yeah working on a ball class sounds like a good idea and doing some exercises sounds like it might help too. Actually, one of the things I like about learncpp.com is the little quizes at the end of each lesson. Most of them involve exercises about writing programs that revolve around the lessons and they're pretty fun and helpful. (I'm certainly not done learning the language but I was just curious about what some of the next steps might be.)Quote:Original post by zerothrillzQuote:How does code work together with 3D models and animations to make a character walk around for example? (I know this is a pretty broad question). Perhaps you should start with 2D?Well learning the C++ isn't really my first experience with learning about making games since I've taken a class (an easy one that involves drag and drop software and I'm going to do the second level of the class in the start of Summer). I also know some other languages (that you can see on my profile) and in the past I've followed a Flash CS4 tutorial to make a flash game with Actionscript 3.0. So I've done a decent amount of 2D (nothing really advanced) and I'm interested in trying something in 3D. If I can't grasp the concepts then I'll go back to 2D and try again in the future.;Quote:Original post by Whitellama- If I want to have some well-rounded knowledge of making games, what should I learn next after I generally understand C++ code and I aim to make a very simple 3D game from scratch? (Such as a ball rolling around controlled by the arrow keys).It is a good idea to learn the stuff that interests you here and now. As you grow better and better, there are several more advanced concepts that you would do well to get acquainted with. That way you will begin to see your code in a different light. It won't appear as "magical" as it might originally do. It becomes just an alternative representation to what computures really are about. So, while you are working towards your goal, it is a good thing to try and understand computer, and the way its used to execute programs. Here are some concepts in a completely random order. Some you may be familiar with, maybe the most.The trick is that these things won't give you much in the short run. In the long run however, these are the things that allow you to truly leverage low level languages. - Caches?- Virtual memory?- Processors anatomy?- Instruction executing modes?- Memorys operating principle? ( SRAM, DRAM?)- Interruptions, their types and purposes?- Graphics cards. What why and how?- What exactly is it that they offer to you?- Machine language?- How it relates to assembler?- How it relates to high level languages?- Datatypes: bit? nibblet? byte? word? dword? qword? ...- Stack and its purpose?- Heap memory, what how and why?- Stack versus heap?- Pointers and ways to manipulate them.- Pointer vs reference?- Binary based number system.- Hexadecimals- Endianness of numeric representation in bits.- Numerical representation with computers. ( IEEE Floating point rep? )- Integers and two's complement format.- Bit shifts and their significanse.  These and many more are concepts you would do well to master one day, if you really want to truly understand what is happening under the hood. The only reason I prefer C++ to moder "modern" languages is that it allows me to use everything I know about how computer works to my advantage. If you know it, you can manipulate it.Of course, theory without practise is useless at best, so just do anything you can get done in the meanwhile. 2D is good if 3D feels too complicated. Even if it doesn't, 2D techniques are a good training exercise that most definately won't go to waste. I have heard good things of SDL, perhaps you could try implementing rudimentary 3D with it? A simplistic and crude vector graphics are very doable with it. In addition the basic knowledge of how the 3D pipeline works is crucial to your later success with it.Just my piece of generic advice.<Long post, little to say. Heck. Thats my way...>   ;  Thanks. I'll make sure I know this stuff.   