Killer Game Programming in Java Paperback – May 30 2005
|New from||Used from|
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your mobile phone number.
"Packed with Java content, with hundreds of links to even more information. The last word in Java game programming." - Paul Hudson, Linux Format, October (Top Stuff Award)
About the Author
Andrew Davison received his Ph.D. from Imperial College in London in 1989. He was a lecturer at the University of Melbourne for six years before moving to Prince of Songkla University in Thailand in 1996. He has also taught in Bangkok, Khon Kaen, and Hanoi. His research interests include scripting languages, logic programming, visualization, and teaching methodologies. This latter topic led to an interest in teaching games programming in 1999. His O'Reilly book, "Killer Game Programming in Java", was published in 2005.
What Other Items Do Customers Buy After Viewing This Item?
Top Customer Reviews
The book is a lot bigger than I thought it would be, and thats a plus. I'm sure it'll come in use at a later time in my life.
Most Helpful Customer Reviews on Amazon.com (beta)
Anybody who spends a lot of time writing games in Java ends up running into certain challenges. For each of these real issues, it takes a lot time to identify the issue then many hours to come up a satisfactory solution or work-around. This book saves you from 99% of that work. The author has documented nearly every complication that you will run into. The other Java gaming books explain how to apply common sense and traditional gaming strategies to the Java APIs (usually following Sun's tutorials exactly), giving step-by-step instructions on how to do so. Besides the point that this adds no value for somebody capable of following Sun's tutorials and APIs, they offer no help where you need it most... where the straight-forward approach is unsatisfactory or just doesn't work for some reason.
Another thing that has saved me a ton of frustration and time is advice from the author. For my specific game project I've run into several questions which I've been unable to answer by web searches, posting to forums, etc. I've emailed Davison (the author), and he has answered each of my questions concisely and to the point every time. (I don't want you to spam him, so please don't send questions until after you have looked for the answer in his book!).
To address concerns that other reviewers have posted:
This book is not just for "advanced" Java developers. As Davison has emailed me, the intended audience is, "someone who has just got past their first Java course". He purposefully avoids avoids all but elemental Java features (e.g., no ternaries, abstract classes, logging infrastructures, IOC).
WRT examples, you are not buying a gaming library or framework. The goal is not to give you production classes that you can use as-is in production quality products. Other reviewers are demanding production-ready examples. It is impossible to make production-ready examples that can be easily understood by first-year Java developers. If you want production-ready classes, don't look for them in a HOW-TO book, find them elsewhere or read this book and then write them yourself.
Roughly half the book is dedicated to issues you'll have when writing a 2d game and the other half is dedicated to 3d games (
using Java 3D). Although I've only read the first half in detail the java 3d material seems equally useful if 3d games are of interest.
My only complaint is that I didn't care for the example code much so I won't be using any of it. But unlike other books this book gives you all the information you need to do it in your own coding style.
Lastly the book is definitely not a book for beginners, the author makes no effort to explain things like event handling, Swing, or any other non graphic topics used in the book.
1. Why Java for Games Programming? - Many discussions are revisited about why Java is not a bad choice for game programming- speed, memory leaks, etc.
2. An Animation Framework - The animation algorithm developed through most of this chapter is embedded in a JPanel subclass (called GamePanel), which acts as a canvas for drawing 2D graphics. The animation is managed by a thread which ensures that it progresses at a consistent number of frames per second.
3. Worms in Windows and Applets - The threaded animation loop of chapter 1 is tested inside a windowed application and an applet. The programs are all variants of the same WormChase game.
4. Full-Screen Worms - Three approaches to full-screen games are investigated.
5. An Introduction to Java Imaging - The aging AWT imaging model is discussed, followed by the BufferedImage and VolatileImage classes, ImageIO, and the wide range of BufferedImageOp image operations offered by Java 2D.
6. Image Loading, Visual Effects, and Animation - This chapter examines how to efficiently load and display images, apply visual effects such as blurring, fading, and rotation, and animate them.
7. Introducing Java Sound - The Sound API is compared to the Java Media Framework (JMF), and the recently introduced JOAL, a Java binding to OpenGL's music API.
8. Loading and Playing Sounds - Discusses a single application, LoadersTests, which demonstrates "ClipsLoader" & "MidisLoader" classes for the control of clips and sequences.
9. Audio Effects - Different ways of applying effects to audio, which is key to the advantage of the Sound API- access to audio files to the bit level.
10. Audio Synthesis - How to create tone sequences for sampled audio and how to create MIDI sequences at runtime.
11. Sprites - A game's active entities are often encoded as sprites. A sprite is a moving graphical object.The Sprite class developed in this chapter builds on the animation framework and image and audio loaders developed earlier in the book.
12. A Side-Scroller - This chapter describes JumpingJack, a side scroller much like Super Mario, but considerably simpler, that illustrates tile maps, layers, parallax scrolling, and a jumping hero called 'Jack' who has to dodge exploding fireballs.
13. An Isometric Tile Game - Isometric tiles are the basis of many real-time strategy games, war games, and simulations, and Java-based "Alien Tiles" is demo'd here.
14. Introducing Java 3D - A brief introduction to the Java 3D API.
15. A 3D Checkerboard: Checkers3D - This chapter describes a Java 3D example called Checker3D that demos many Java 3D programming techniques.
16. Loading and Manipulating External Models - Many times it makes sense to create an object using 3D modeling software, and then load it into your Java 3D application at run time.
17. Using a Lathe to Make Shapes - One of the most ingenious chapters of the books shows how to create complex 3D shapes using a Java-based 3D lathe.
18. 3D Sprites - A Sprite3D class is developed.
19. Animated 3D Sprites - Poses and animation are included for the Sprite3D class of the previous chapter.
20. An Articulated, Moveable Figure - The implementation of an articulated figure is performed, composed of rotatable limbs, which can be moved around a checkboard floor in a similar manner to the 3D sprites in Chapters 18 and 19.
21. Particle Systems - Three particle systems are developed in this chapter: one where the particles are points, another using lines, and a third using quadrilaterals (quads).
22. Flocking Boids - Flocking is a computer model for the coordinated motion of groups (or flocks) of entities called boids, performed in 3D.
23. Shooting a Gun - The application in this chapter, Shooter3D, contains a gun which fires a laser beam at the point on the checkered floor clicked on by the user. The flight of the laser beam is accompanied by a suitable sound, and followed by an explosion.
24. A First-Person Shooter - Builds on the previous chapter by putting the gun in the player's hand.
25. A 3D Maze - Emphasis is on navigation through a complex scene (a 3D maze). The two main topics will be how to generate a realistic looking scene as in "Doom", and how to use multiple views to aid navigation.
26. Fractal Land - The FractalLand3D application creates a landscape using a plasma fractal to generate height values for the landscape's component quads.
27. Terrain Generation with Terragen - Landscape is designed with Terragen, then exported as a OBJ file (representing the landscape as a mesh), and as a BMP (showing the surface viewed from above). The BMP is subsequently edited and converted into a JPG.
28. Trees That Grow - Shows foliage that actually grows over time.
29. Networking Basics - runs through networking fundamentals and explains basic network programming with sockets, URLs, and servlets.
30. Network Chat - about online chat, the "hello world" of network programming. There are three chat variants: one using a client/server model, one employing multicasting, and chatting with servlets.
31. A Networked Two-Person Game - Pulls everything together to build a simple networked 2-player game.
32. A Networked Virtual Environment - NetTour3D is a very simple networked virtual environment which allows sprites representing users (clients) on different machines to move about in a shared world. The world is a checkboard, with simple scenery and obstacles.
A. Installation Using install4j
B. Installation Using Java Web Start
If you go to the author's website, he has additional chapters that are not in the book on J2ME, bluetooth, and mobile 3D gaming. Plus the downloadable code for the book is also there. Since Amazon usually throws out reviews with web addresses, just type "Killer Game Programming in Java" into Google and the first address you see should be the author's website.
In summary, I would highly recommend this book to any experienced Java programmer who is interested in programming games, as well as those interested in advanced Java Sound or Java 3D techniques which might be of use to any Java multimedia programmer.
* Disappointing sample programs. The sample programs feel, unfortunately, very low quality - enough, in my opinion, to drive some readers away from Java as a game development language altogether. Providing higher quality sample programs would have been nice. It's not necessary to provide the polished details in the book itself, but having highly polished samples available as a download would have gone a long ways towards showing the reader how great Java can be as a development language. (A picture is worth a thousand words.) I would have preferred one extremely polished, high quality 2-D sample and one extremely polished, high quality 3-D example instead of lots of small, unpolished, low quality examples.
* Bugs in sample programs. I've encountered quite a few little bugs in many of the sample programs. For example, it's easy to end up "under the world" in FractalLand3D, and the lighting is sometimes off (way off). Also, on my updated, high performance machine, I noticed recurring lag in FractalLand3D, preventing it from running smoothly.
* The web site to which the author directs you for downloading the sample code is often very slow, perhaps because it's based in Thailand and I'm in the United States. Since the book doesn't come with a CD-ROM (a decision I support, given the ubiquity of the Internet these days), I think the author could have invested in at least one fast U.S.-based server since a large portion of book sales will undoubtedly be to U.S.-based customers.
* Missing downloads (bad URLs). In the ever-changing realm of the world wide web, it's understandable when URLs in older books (and even newer books) stop working. However, it's barely 2006, and this book was published in 2005. There's no reason the author should direct you to a download such as [...] and have it fail to actually be there.
* Too many pages spent on certain topics, such as: 1. Timing - which includes unnecessary details like timing on Windows 98-based computers (an operating system that's now 8 years old!) and performance on Pentium II-based machines (a CPU that's now 3 generations out of date!); 2. Justifying Java as a game development language; 3. Explaining the design and code in the samples in painfully small steps - I feel the author would have better served the readers by "getting to the point" more quickly.
I don't want to sound too harsh. Obviously, a lot of work and knowledge went into this book. You could do much worse than reading this book, which does a reasonable job covering a topic that isn't nearly as saturated as topics such as how to write Java servlets. However, when I pick up an O'Reilly book, I don't expect reasonable: I expect excellent, and I don't feel this book lives up to the O'Reilly name.
Given the other book choices on the topic of Java game programming, this book would make a decent addition to your programming bookshelf. I do, however, think the author should consider a second edition which addresses the problems listed above.
This book is very good at explaining exactly what methods to use, what they do specifically, and why.
There is one very big NEGATIVE:
I purchased the Kindle edition of this book, which appears to be littered with random typos. This is not a big deal when reading through the actual sentences, but it really screws things up when reading through the code and trying to copy or understand it. In many places there are parenthesis which shouldn't exist or are missing. I've also found one case of a random number appearing in the code which should not have been there. It was very confusing since it appeared in the middle of the equation.
I assume these mistakes were created when transferring the book to a digital format, but I feel it is inexcusable to allow so many typos in something meant to be copied by beginners. Several coding newbies might not realize how out of place some of these typos are and will therefore not be able to easily discover why the code is not working.
If you encounter this problem yourself, the author's website has all of the source code available for download. This will allow you to look through his actual code and see where it differs from the book. I found this to be very useful to make sure what I was seeing was actually a typo and not my eyes playing tricks on me. ([...])
I would rate this book as 4/5 if not for the typos. I do not know if the hard copy has them as well.
Look for similar items by category
- Books > Computers & Technology > Graphic Design > 3D Graphics
- Books > Computers & Technology > Programming > Algorithms > Fractals
- Books > Computers & Technology > Programming > Game Programming
- Books > Computers & Technology > Programming > Java
- Books > Computers & Technology > Programming > Languages & Tools
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Object-Oriented Design
- Books > Computers & Technology > Software
- Books > Humour & Entertainment > Puzzles & Games > Video Games & Strategy Guides
- Books > Professional & Technical > Professional Science > Mathematics > Pure Mathematics > Fractals
- Books > Science & Math > Mathematics > Pure Mathematics > Fractals