| ||||||||||||
|
Il y a une édition plus récente de cet article:
|
Détails sur le produit
Souhaitez-vous compléter ou améliorer les informations sur ce produit ? Ou faire modifier les images?
|
First, the bad.
It seems that the author never really decided what his audience is. Parts of the book (e.g. the introduction to 3D graphics) are written for total beginners, while others (such as the overview of game engines - all of which cost tens or hundreds of thousands of dollars to license) are really only relevant to experienced professionals. The author/publisher really should have picked an audience and stuck with it.
Some readers will be annoyed by how platform-specific this book is, which really isn't apparent from the cover copy or even the other reviews. All of the code samples use DirectX, and there is a lot of space dedicated to Windows-specific information. Granted, Windows and DirectX are by far the most popular choices for PC-based game development, so this won't be an issue for most readers.
And now for the good.
The best parts of this book were those covering topics that typically get overlooked in other game programming books, namely things like pointers and memory management, scripting, creating automated build enviroments and code/resource management, debugging, and notably the entire section on production, scheduling and testing. Although some of these topics are covered in other books that are not specific to game development, putting them in a single volume and exposing game developers to them early on is a Good Thing.
Although the sample code was fairly sparse, what he did provide was extremely useful, in particular the resource file implementation, random number generator, and scene graph.
Finally, props to the author for maintaining a website and actively supporting this book. As an author myself, I know how much work is involved in doing so, and I recognize that it reflects the author's desire to really help people and not just sell books.
In conclusion, my overall impression of this book was very positive. It's marred by a few shortcomings, but overall, I think that most new game programmers will benefit from it.
I really liked the 2D chapter because it provided some good pointers on surface management (such as when and when not to restore surface data), explained how alpha blending works (and provided a surface-surface copy function that utilizes alpha blending), and lays out some of the basic functionality of a sprite class. For a newcomer to game programming, I really found these practical examples very helpful in at least getting ideas churning in my head as to how I want design my game.
Chapter 7 on the whole initialization, main loop, and shutdown procedures were real insightful in my opinion. Mr. Mike begins by discussing what he thinks is a good initialization process. One of the earlier reviewers might dismiss this as just another opinion of the author, backed up by no fact, but, at least to me, the author has some pretty sound reasoning for suggesting what he suggests. An example would the case he makes for doing initializations of certain objects: instead of relying on a user calling some Init method and using the return value from it to test for success or failure, he suggests doing all initializations from within the constructor and throw an exception if an error occurs. I agree with the author that the resulting code looks cleaner and a bit more elegant than testing the return value for multiple Init method calls (of course, this is also partly a matter of personal preference, but what have you). As with many other chapters, this chapter provides some pretty useful code for you to use, such as a function that will calculate the CPU speed, another example showing how to ensure that only one instance of your game is loaded, and a fairly solid cooperative process manager.
Chapter 8, which covers resource management, was pretty informative and made a convincing argument as to why you ought to use resource files rather than relying on all your images/sounds/what have you as individual files. Even though resource packing may seem a little daunting at first for a beginning game programmer, but in the long haul it's rather rewarding to be able to store all your resources in a few packed resource files. Mr. Mike uses the iPac program as an example for a resource packer, and although it is not freely available (I'm unaware of any free resource packing tool), through images and bit of information the book provides, I've been able to create a resource packing tool that more-or-less models after iPac and that suits my needs.
There are other chapters, especially the 3D math and 3D graphics chapters, which are pretty helpful, but again, as someone with no knowledge in 3D graphics, it kind of confusing. But I attribute that to my ignorance.
This book is not without its shortcomings though. Some of the source code won't work if type straight from the book. Fortunately enough, many typos have been pointed out on the book's website, and the source code appears to be in working order. Also the GUI and user-input chapter didn't seem to have the same caliber as some of the other chapters had. The author did mention it would've been much longer, but just seems like it's lacking a bit in its current state. It's better than nothing though. Also, there isn't any mention to audio really (aside from his choice of Miles Sound System in the beginning of the book).
In all fairness to Mr. Mike though, he does state in his introduction that he has a bit of a bias to Win32 and DirectX throughout the book. As such, you can't necessarily assume that ALL the concepts are applicable to every type of game programming (PC or console). I do think he makes a valiant effort in trying to cover certain topics relevant to console development. He does a very nice job of trying to cover a lot of material in a rather short book. Coupled with the source code that is available online, I found this to be one of the best books I've read on game programming. It's chock full of very useful information, much of which can be insightful for both the beginning and the professional game programmer. Has my definite recommendation.
IMHO this book is geared toward those who want to make a professional career in making games, but have no idea how, while at the same time teaching concrete principles of game programming to those like me who are currently hobby coders. Many times had I tried and failed to start developing a game, but I am now building my game intelligently and efficiently, knowing exactly what I need to do to get things done. I have to say it is all because of this book.
This is also one of the few books that has managed to grip my attention for as long as it did because of the clever way that Mike writes. His writing style is such that it is easy to read because of its almost informal nature. The text thankfully lacks rigid structure, and welcomed breaks in the lessons of "how and why" are made up of "I remember the day" stories that are both amusing and filled with helpful hints on what NOT to do OR how the approached a problem and fixed it :) (Which is the point BTW)
The code in the book is sparse, and it initially bugged me, but I came to realize that it really is not about giving the reader chunks of code. This is not a step by step guide on how to make a game, but a collection of ideas on how to cleverly write and manage your game. Mike frequently comments on the potential problems one might have compiling his code, and he rightfully tells the reader to fix it as an exercise. After all that is the kind of industry Game Development is if I am not mistaken: Fixing broken code and solving problems???
Anyways, this book is not for know it alls already in the industry. This is a book for people like me who are passionate about games but don't have a clue on where and how to start. To me working in the industry is an impossible endeavor, but this book is not only filled with concepts on game programming, but it is filled with motivational stories and tips on how to GET IN. This is a booster in the right direction, and to actually get the opinions of someone already in the business, and not just straight HOW TO LOAD A BITMAP crap, (which is also in the book I might add...) has left me pleasantly surprised and content. If McShaffry wrote another book, hopefully something that covers topics he didn't cover in the original, I would be all over it like a Fat Kid on a Smarty.
I highly recommend it!!
|