I need some spiritual DirectX guidance.

I've been learning from a book titled Tricks of the Windows Game Programming Gurus by Andre' Lamothe. It's outdated using DirectX 7.0a SDK, and I believe his second volume creates software rasterization with DirectX 8.0 SDK. I really enjoy his books because it is very in depth and low leveled. My question is should I continue reading it if I'm geared on becoming a professional in graphics Since 60% of our life is maintaining and upgrading previous games/multimedia, especially MMORPG games that have a long life, you'd be working with older SDK versions, no matter if it's DirectX or not. The idea is to learn this now and migrate over to DirectX 9c. A message board called GameDev.NET seem to disagree, but them being a young age, I don't see a reason to listen to them. Personally, I don't think they live in the real world. I guess I need to know if I'm right on this

Phil



Answer this question

I need some spiritual DirectX guidance.

  • chogye

    ChaosOrdeal wrote:
    You will never write a professional game with the Lamothe information.
    I agree, but arguably it's also true that you'll never write a professional game based on any single book!

    The general technology used by games is very fluid and tends to move much faster than most printing presses do - so reading as many books as possible as well as corresponding web articles, and then making an informed choice is usually the best route.

    Book like Foley et.al. and Moller and Haines will probably last a while, but even the ShaderX, GPU Gems and Game Programming Gems books have a relatively limited shelf-life if you have any intentions of matching the cutting edge...

    hth
    Jack



  • t43

    While it's always a good thing to wrap your head around the latest emerging technologies. On a side note: many professional game dev companies use last year's technology. The main reason being: at least all the bugs are known.

    eg. EA may still be making games using C++, but a lot of the new game prototypes are done in C# now.



  • BigTuna99

    In any publicly-accessible game development forum, you will find people of highly varying experience.  My point is that the "veterans" on Gamedev.net are very bright chaps (and don't let age be a measuring stick....I know Jack Hoxley, and he's a "young pup" relative to my physical age, but he's about 20 years smarter then me when it comes to graphics programming Smile ).

    Yes, you get some immature discussions/questions.  It happens on every public forum, but overall, there's a TON of great information and very helpful people on GameDev.net.


  • Eureuka

    Why do you think GDNet is a professional board Sure, I get some help there, but the majority of developers are in the age range of 14-25. Personally, it gets a little irritating after a while, although helpful to beginners in the programming world, but definitely not a suitable place for real-world information. Anyway, this is another topic for another time.

    This is indeed another topic, probably best discussed elsewhere. David gave a good answer to this above - I agree with what he said. I think the important bottom-line to it is that no one forces you to visit GDNet nor is it the only place you'll get help/whatever - if you don't like the place don't visit Smile

    If you want to answer your question about it being professional, try browsing the profiles of the top-50 users (or other regulars), you'll see that quite a few of them work professionally in a variety of related industries.

    Cheers,
    Jack



  • knreddy

    Thanks for the tips. I've used MDX9, so I agree with most of what you said. My question still remains, though regarding VC++ 6.0 since it's the only IDE that compiles my C++ programs currently.

    ps. Why do you think GDNet is a professional board Sure, I get some help there, but the majority of developers are in the age range of 14-25. Personally, it gets a little irritating after a while, although helpful to beginners in the programming world, but definitely not a suitable place for real-world information. Anyway, this is another topic for another time.

  • Brandon Williams

    I suppose so. The internet has a wide variety of people on it, so it's not just going to be a board of professionals, etc. Well, the MS boards change that quite a bit Big Smile
  • Voast Dev

    I own the book you're discussing. While it's a nice book and really lets a beginner dig in, it's also deeply flawed. Once you've read it, shelve it and look more closely into the DirectX SDK support material, and online stuff, and some of the shareware engines. You will never write a professional game with the Lamothe information.
  • littletiger

    Wow, this is an old thread. I agree about the book now. I moved on to software development w/ gaming on the side, but it's a great book particularly in the physics, parsing & AI chapters. It's just one reference out of many I have that come in handy from time after time.
  • Carsten Thielepape

    Nice Big Smile I got it working on 6.0.
  • common

    Okay, thanks for the insight and link. I guess I needed to hear it from another source, although I am interested in reading Andre's books still since software rasterization is quite interesting to me. I'll go ahead and buy the book tomarrow morning. Thanks!

    ps. Last time I heard, DX 9 doesn't work on VC++ 6.0. I just have this IDE, though. The book says I need either 6.0 or 7.0, so I'm confused that 6.0 does work now


  • Shyju

    This is from a post I made earlier this year on Gamedev.net and should be a nice learning path to follow for anyone starting out with any API.

    The Language
    Choose a language that best suites you and a decent compiler. Most game/graphics developers choose c++ and DirectX/OpenGL. This is obviously very flexible and a variety of languages are available for the use in DirectX such as C#/VB6/VB.NET, etc...

    The API
    I would say the learning DirectX really is very simple and even simpler if you are using the managed directx api. It's clean and straight to the point.

    DirectX also has a good background and through a number of revisions it's become a very concise/clear/readable API. The Documentation is also very well layed out and samples/starter guides are included

    The Learning Phase
    I would like to add that learning an API is a good start but getting a good grip on graphics theory and mathematics related to 3d programming is essential. The world of graphics programming is moving to shaders and a fundamental base of matrices and vectors are very important when working with shaders since you'll be transforming vertices to spaces and back and working with objects in different spaces.

    You can then set some projects for yourself. Don't aim too high but get something to render and play with the possiblities of what you can do.

    Step 1
    Get a window up and running and initialize Direct3D.
    This will help you get some good understanding on what the device is and how it's used. You will pass your window's handle to the creation function. So it links the window with the device. You will also understand how windows messages are handled and a good grounding on render loops

    Learning Objectives.
    - Window messages
    - Render Loops
    - Direct3D Device


    Step 2
    Render a colored triangle
    Through this you will learn about vertex formats and what they are. How they are used and how they are setup. You will also learn about winding orders such as clockwise/counter clockwise and how they are culled. Which just means that they don't get rendered if you have a clockwise winding order and you specify to cull clockwise created primitives.

    You will also learn about vertex streams and vertex buffers.
    Vertex buffer being a direct3d enhanced buffer that stores your vertices.

    Also you will come in contact with some primitive types and how they are formed such as TriangleStrips, TriangleLists, PointLists, LineLists.

    You will also learn how vertices are transformed through matrices and that every primitive might have it's own matrix that places it in the world.

    Transformations also needed to be taken into consideration here or you may decide to skip it for future learning.

    Learning Objectives.
    - Vertex Formats
    - Transformation Matrices
    - Coloring
    - Primitive Types


    Step 3
    Render a textured Quad
    Coming to textured primitives, you will learn what texture coordinates are and how to load resources from a disk. This will further enhance your understanding of vertex formats and how Direct3D helps you place a texture unto a primitive.

    Also you will further learn how primitives are stiched together to form larger primitives as you will have rendered 2 primitives to form a quad.

    Step 4
    Render a lit and textured Quad
    Moving to light you will learn how different lights interact with different objects through normals and materials.
    Normals being the key point in this step. Lights give the scene a more realistic feel by adding more depth to your objects. You will learn about materials and how lights interact with different materials.

    Learning Objectives.
    - Lights
    - Materials
    - Normals


    Step 5
    Translating (moving)/ Rotating objects
    Moving objects in a scene is a very important aspect to getting a game up and running since you want objects to move. Matrices form a big part of this. You will learn about different spaces such as object/world/view/projection space.

    You might also add some additional learning to this section with regards to frame rate independent movement. This will be important when programming your games for different spec machines.

    Learning Objectives.
    - Matrices
    - Spaces
    - Timers



    Step 6
    Meshes
    You will learn about meshes and if you really think about it, it's hardly ever that you will have to hardcode primitives, you want detailed meshes that were created in a modelling package don't you You will further learn about how to load resources from disk and what is contained in these files.

    Learning Objectives.
    - Meshes
    - Resource loading (further advancement)


    Step 7
    Special effects
    You might want to start experimenting with Alpha blending to get transparency and so forth. If you have a good fundamental knowledge of the previous steps the world is your oyster. You will just improve as you carry on. You will also learn  how the graphics pipeline works and how vertices/primitives are fed into the pipeline and colors are computed etc..

    You might want to start looking into alpha blending as I have mentioned and then move unto some more advanced topics.

    Learning Objectives.
    - Alpha Blending (vertex, material, texture, frame buffer, render target)
    - Graphics pipeline (further advancement)


    Step 8
    More and more learning (shaders)

    Get a good grip with the Fixed Function pipeline, The fixed function pipeline is what you've been working with up until now. If you feel you are upto it you can move on to shaders or.. you could start coding your very own game. It may seem boring in the beginning but this is where you have to decide if you want to move on right now or code some games.

    Start off simple like tetris, break out, pong.

    Learning Objectives.
    - Shaders or Game engine development

    This might seem a little confusing at first. I hope not but I missed out alot of aspects and it's just a simple guide. Use the DirectX SDK docs, they are very helpful. When it comes to game engine development. GDNET is a perfect place to start with articles written by very popular people who have been developing for years.

    There is no need to really buy a book. In expensive learning can take you where you want to go. If you have internet access most of the time. Make good use of it.

    I hope this helps buddy.
    Take care.

  • JariOjala

    Sorry, you're wrong.  Many of the frequent posters on gamedev.net are seasoned game developers, with hundreds of man-years of experience.  You should also consider the fact that an "old" game that gets maintained is no more than two years old, on average.  Personally, I know of no retail game (or MMO) on the market that uses DirectX 7 or 8, unless you're looking in the bargain bin.  DirectX 9, for instance, was released almost 3 years ago.  In the graphics world, that's ancient history (ok, that's stretching it, since many of the basics still apply, like matrix math and many collision detection techniques).

    Becoming a successful graphics developer means you constantly strive to look beyond the "here and now."  If you are just getting started in graphics programming, for instance, you should intensely focus on programmable pipeline graphics programming, as fixed-function pipelines are going the way of Bresenham's Algorithm (interesting to know historically, but that's about it).

    My general advice...master the tutorials and samples in the DirectX SDK.  Then hang out on these forums and on GameDev.net.  You won't be sorry.  In the end, the best way to learn graphics programming (going beyond the basics of creating a device) is to learn a "small" concept, then apply it in a simple game program.  Repeat forever.

    And that's my humble "spiritual guidance" for tonight Smile

    P.S. -- At the moment, I recommend Frank Luna's "Introduction to 3D Game Programming with DirectX 9.0" as a starter book.  That's not a "Microsoft endorsement", that's just my personal opinion.  I'll caveat that by saying that I haven't read too many "beginner level" books though (I'm kinda past that now), but if anybody reading this post is an author and wants me to read their book, feel free to contact me and I'll be delighted to go through it.

  • I need some spiritual DirectX guidance.