Hello, I have experience with programming in direct X, I know the fundamentals for creating pretty raw c++/DirectX programs but the problem is my understanding is very raw and I have never used a tool or game engine to make the life of 3d game programming that bit easier.
My question is what is the sensible solution for creating 3d games with nice character animations for example what is, or what would have been the common approach to creating games like Never Winter Nights and Crash Bandicoot, Grand theft auto etc. ? Would an existing 3d engine be the way to go for developing these titles or hardcore bare bone direct X animation programming or opengl ?
I hope this question is understandable enough, basically I am wondering where the best place to start would be given that i already know DirectX fundamentals, would it be wise to scrap my knowledge and turn to something like XNA or Irrlicht engine ?
I have always felt that a game engine limits the possiblities to the games that can be created but at the same time it seems insane the amount of code that would be required for a bare bone approach, correct me if i'm wrong ?
There is no general case best engine. You should determine what design elements are needed for the game you want to make, and then compare engines to that specific criteria. Or don't worry about engines and just make the game, which doesn't preclude using available libraries. Lots of people on this forum have developed or are developing their own engines, but it doesn't happen at the beginning of a project—rather it develops over the course of making several games.
I have no ideas for games to make, I'm thinking it would be too hard to make a good game in c++ with DirectX, there doesn't seem to be good support for 2d sprites and the code needed for a simple animation is practically overwhelming.
yes, I guess if I knew what I wanted to make it would be easier to determine how to go about it.
I want to teach C++ to beginners and improve my game making skills but i don't know if C++ is a good suitable language for making large 3D games with stunning character animation.. it seems to take a lot of time to get not very much done in C++
well c++ IS capable of doing good character animation with directx or opengl, the only question is how much time you have or how big your team is:
A big team can design the whole engine all by their own (using c++), but as one person one should probably have a look at freeware engines or something like that.
Unless you want to program it yourself because programming is fun, you can go with some sort of engine.
The code for doing sprite animations with 3D APIs such as OpenGL or DirectX is not that hard. First, you have too look into how sprites sheets work, then bringing that over to the 3D is quiet easy, you just have a sprite sheet in a texture and you change the UV coordinates of your sprite to display different frames of the animation.
In terms of best use of time, an existing engine is the way to go. For someone who finds C++ to be a little overwhelming or requiring too much boilerplate, I would recommend trying Unity, which is a very popular AAA level game engine that uses C# (as one option) for coding custom game logic (Unity's core is all in C++, of course).
Note that I do not believe that a programmer can simply take an engine like that and make the most efficient use of it. If you don't understand how to code 3D animations in C++ yourself then that strongly indicates that you just don't understand 3D animations, and you need to understand them at a decent level to be able to use them in any effective, interesting ways.
If you're looking to teach students about game programming, premade engines are not the way to go. Again because a game programmer has to understand the core techniques of an engine to use an engine effectively. Students will be best served by building their own simple engines. Yes, it's a lot of work, but it's worth it. Otherwise you'll be educating the game industry equivalent of script kiddies: a bunch of young clueless people who know how to use a specific tool but are utterly lost as soon as they need to do something new, different, or innovative.
Specifically regarding 3D animations, there's not a lot to it. Students should have prior knowledge of GPU shader programming (D3D or GL, doesn't matter which) and a solid understanding of linear algebra (particularly vector spaces, changes of basis, and the usual 3D affine transformations). A primary on quaternions can be useful but given in the same class that animations are taught. With those foundations, writing a complete animation and rendering system is not that difficult at all. It's practically trivial, really, if you start out with key-framed skeletal animations and build up from there.
in my head I was thinking I would need to write out all that animation code for a simple directx game every time but i missed the rational idea of reusing in the way of a game engine. I guess the basis for making a game with animated characters is all there in the directx samples and maybe for me, just thoughroly understanding the samples would allow me to create an engine or teach others how to. I have managed to get an animated model on screen but I still don't fully understand how it works so maybe just need to study it a bit more.