|  
                               Game 
                                Programming Gems Volume 1 
                                Author: Various 
                                Contributors (Edited by Mark Deloura) 
                                Publisher: Charles Rivers Media 
                                Published: 2000 
                                ISBN: 1-58450-049-2 
                                Purchasing: [Amazon.Com] 
                                [Fatbrain.Com] 
                                - RRP US$69.95 
                                Reviewed: 3rd September 2001 
                              Front 
                                Cover Shot: 
                                
                              Overview 
                                of whats on offer 
                              well, 
                                picking up the book for the first time - not too 
                                heavy, not too big (unlike some massive computer 
                                related books), it has a nice picture on the front 
                                cover. It runs into 615 pages in total with a 
                                few pages of glossy colour-plates in the middle. 
                              Looking 
                                inside (as you should never judge a book by its 
                                cover!), we find a total of five sections, each 
                                with around 10-12 articles ("Gems"), 
                                those five sections are: 
                              1: 
                                Programming Techniques (14 Gems) - covering 
                                data structures, code layout, optimisations and 
                                other clever tricks 
                                2: Mathematics (10 Gems) - surprisingly 
                                this covers lots of stuff about maths, and how 
                                to use it/optimise it for games 
                                3: Artificial Intelligence (9 Gems) - Goes 
                                over a lot of common aspects of artificial intelligence 
                                4: Polygonal Techniques (19 Gems) - rendering, 
                                terrain generation, geometry culling - all that 
                                sort of stuff! 
                                5: Pixel Effects (11 Gems) - essentially 
                                just 2D effects, but includes articles about clever 
                                texture effects (reflections etc..) 
                              All 
                                in all we have 63 gems to read - working out at 
                                roughly $1 (RRP) per article; which is good, as 
                                alot of the articles in here are worth 10 times 
                                that.  
                              As per normal with computer programming books, 
                                we get a fully featured CD with the book - covering 
                                almost all of the source code in the gems (except 
                                for the ones where there is no source code). Most 
                                of the samples are quite interesting to play with/look 
                                at, and all the source code is there for you to 
                                break/experiment with. The only annoying aspect 
                                is that it's just files and directories - and 
                                the directories being named by author - so it's 
                                sometimes a bit of a pain trying to find the source 
                                code for the article you just read. 
                               
                                Analysing the content - what it's got 
                              Each 
                                article is relatively short, which is partly a 
                                good thing, partly a bad thing. The good point 
                                being that we get a lot of different information, 
                                and we get it quickly - rather than having to 
                                read 20 pages of dense text just to find out a 
                                simple formula/algorithm. The bad thing is that 
                                some of the articles are very complicated and 
                                would be much better off with a longer, more detailed 
                                description of the algorithm/process/idea. Having 
                                said this though, each article tends to offer 
                                several reference papers/books/websites with further 
                                information, so if you are still scratching your 
                                head at the end of it all you can go look up the 
                                references for more information. 
                              The 
                                articles are well chosen, offering unique content 
                                you wont normally find on the net, or if you can 
                                it's not easy to find. The articles do assume 
                                a certain level of experience - this isn't a book 
                                for an absolute beginner, I would say it was more 
                                for the intermediate game programmer looking to 
                                go up to the next level, or add some of the more 
                                clever/cool features to their next game. There 
                                is, in almost all of the book a huge tendency 
                                towards 3D games/graphics - which is fine if you 
                                are writing a 3D/semi-3D game, but if you're still 
                                sticking to plain 2D games then there is suddenly 
                                a lot less on offer here. There is the pixel-effects 
                                section, which is essentially 2D graphics, but 
                                it's all with respect to 3D graphics - light maps, 
                                shadow maps, bump mapping, texturing, reflective 
                                textures etc... 
                              The 
                                other interesting aspect is that it's fairly platform 
                                independent - which is a good thing. It uses OpenGL 
                                for almost all of it's 3D rendering articles (which 
                                is growing in popularity amongst VB developers), 
                                and all but a few articles are just plain programming 
                                - not tied to a particular operating system or 
                                platform. However, as with many game development 
                                books it's all in C/C++, but as I just said, much 
                                of it can be ported over to visual basic relatively 
                                easily as long as you can read and interpret C/C++ 
                                code. I have heard many people just cant be bothered 
                                to learn C/C++ just for learning new techniques. 
                                I think they're wrong, simple as that. Grab a 
                                good C and a good C++ book, read them over (neither 
                                language is as hard as their reputations make 
                                out) and you'll have a whole new goldmine of information 
                                available to you (90% of online tutorials are 
                                in C/C++). It is worth it for this book, almost 
                                none of this material is available in visual basic 
                                form, so if you dont do it, no one else is doing 
                                it for you... 
                               
                                Analysing the content - what it hasn't got 
                              Whilst 
                                this book so far is looking absolutely excellent, 
                                there is no such thing as a perfect book. This 
                                book has weaknesses and flaws just like any other 
                                book - but luckily they dont offset the excellent 
                                content of the rest of the book. 
                              Music, 
                                Sound, Input and multiplayer gaming - none of 
                                these are covered, or mentioned significantly 
                                (with the exception of one article about online 
                                gaming data protection). This is a major downer, 
                                graphics are great and so is the AI and general 
                                programming, but forget these three things and 
                                all your left with is a demo - not a game. I can 
                                appreciate the abscense of these sections to a 
                                certain degree, there would not have been enough 
                                space in the book - simple as that. If they had 
                                made space for them then it would probably have 
                                reduced the quality of the existing sections. 
                                A second volume of the book is out at the moment 
                                (at time of writing, I intend to review it soon), 
                                and hopefully this will make up for the lack of 
                                music, sound, input and multiplayer sections - 
                                but we'll have to wait and see! 
                              The 
                                AI section is another one to mention, of 9 gems, 
                                4 of them are about path finding - A* in particular. 
                                Whilst this isn't too much of a bad thing (A* 
                                is an important algorithm), you will get a feeling 
                                of "I've read enough about A*, tell me something 
                                else". There are sections on neural networks, 
                                fuzzy logic, FSMs etc... but they are relatively 
                                small and dont help a huge amount when it comes 
                                to writing an AI engine. Maybe I'm just being 
                                picky, but I would of prefered that only 5 AI 
                                gems be included, and for them to be longer and 
                                more detailed - AI isn't really something you 
                                can cover that quickly, it takes a lot of understanding 
                                to get a half-decent AI component written. 
                              The 
                                other aspect is back to the good-old language 
                                problems, the first section (Programming Techniques) 
                                is obviously based entirely in C/C++; but this 
                                time almost none of it is transferable to visual 
                                basic. Maybe it will be in VB.Net, but definately 
                                not VB5 or VB6. It discusses template meta programming, 
                                macro's, scripting, data structures (inheritance/polymorphism), 
                                Standard Template Library, resource allocation, 
                                debugging - whilst if you're a good VB programming 
                                you are probably aware that some of those listed 
                                are possible/useful - but they key to these gems 
                                is in things that you cant do in VB. Take the 
                                data structures articles, sure you can learn from 
                                the articles, but without the ability to use inheritance 
                                and polymorphism you will be missing out on the 
                                most interesting parts of the gem. This is a shame, 
                                but not one you can really do anything about. 
                              Finishing 
                                things off 
                              Well, 
                                I think thats covered pretty much everything. 
                                As with all the other reviews I've done I'm going 
                                to leave you with a summary of good and bad things 
                                - I dont like giving books scores, I feel that 
                                they dont portray the book very well. Needless 
                                to say, if you still cant decide if you want this 
                                book: you can do an awful lot worse than this 
                                book, but not much better.  
                              
                                
                                   
                                    | Good 
                                      Things | 
                                    Bad 
                                      Things | 
                                   
                                   
                                    |  
                                      Excellent selection of articles | 
                                     
                                      Uses C/C++ for all code examples | 
                                   
                                   
                                    |  
                                      Neat, to the point content, with references 
                                      for further reading if required | 
                                     
                                      Sometimes a little to brief on important 
                                      subjects | 
                                   
                                   
                                    |  
                                      Good enough to warrant learning C/C++ so 
                                      that you can understand it | 
                                     
                                      Not for the absolute beginner, assumes some 
                                      understanding of the field. | 
                                   
                                   
                                    |  
                                      Works like a reference book, you want to 
                                      know about something, look it up in here. | 
                                     
                                      Large sections not applicable to visual 
                                      basic development.  | 
                                   
                                   
                                    |  
                                      Everything in one place - would take hours 
                                      to find all of these gems on the web. | 
                                     
                                      Not very cheap! | 
                                   
                                   
                                    |  
                                      If you make good use of the majority of 
                                      the gems the price:content ratio is very 
                                      reasonable (~US$1 per Gem) | 
                                     
                                      Large areas of game development not covered 
                                      (sound, music, input, multiplayer). Do you 
                                      really want to shell out for Volume 1 and 
                                      Volume 2 just to get a complete coverage? | 
                                   
                                   
                                    |  
                                      Contains a CD of all source code | 
                                     | 
                                   
                                 
                               
                                 
                               |