| | | Copyright |
| | | Preface |
| | | | Who Are You? |
| | | | What This Book Is About |
| | | | This Book (and More) Is Online |
| | | | What This Book Is Not About |
| | | | A Graphical View of This Book |
| | | | Conventions Used in This Book |
| | | | Using Code Examples |
| | | | Comments and Questions |
| | | | Safari Enabled |
| | | | Acknowledgments |
| | | Chapter 1. Why Java for Games Programming? |
| | | | Java Is Too Slow for Games Programming |
| | | | Java Has Memory Leaks |
| | | | Java Is Too High-level |
| | | | Java Application Installation Is a Nightmare |
| | | | Java Isn't Supported on Games Consoles |
| | | | No One Uses Java to Write Real Games |
| | | | Sun Microsystems Isn't Interested in Supporting Java Gaming |
| | | Chapter 2. An Animation Framework |
| | | | Animation as a Threaded Canvas |
| | | | Converting to Active Rendering |
| | | | FPS and Sleeping for Varying Times |
| | | | Sleeping Better |
| | | | FPS and UPS |
| | | | Pausing and Resuming |
| | | | Other Animation Approaches |
| | | Chapter 3. Worms in Windows and Applets |
| | | | Preliminary Considerations |
| | | | Class Diagrams for the WormChase Application |
| | | | The Worm-Chasing Application |
| | | | The Game Panel |
| | | | Storing Worm Information |
| | | | Worm Obstacles |
| | | | Application Timing Results |
| | | | WormChase as an Applet |
| | | | Compilation in J2SE 5.0 |
| | | Chapter 4. Full-Screen Worms |
| | | | An Almost Full-Screen (AFS) Worm |
| | | | An Undecorated Full-Screen (UFS) Worm |
| | | | A Full-Screen Exclusive Mode (FSEM) Worm |
| | | | Timings at 80 to 85 FPS |
| | | Chapter 5. An Introduction to Java Imaging |
| | | | Image Formats |
| | | | The AWT Imaging Model |
| | | | An Overview of Java 2D |
| | | | Buffering an Image |
| | | | Managed Images |
| | | | VolatileImage |
| | | | Java 2D Speed |
| | | | Portability and Java 2D |
| | | | JAI |
| | | Chapter 6. Image Loading, Visual Effects, and Animation |
| | | | |
| | | | Loading Images |
| | | | Applying Image Effects |
| | | | Displaying Image Sequences |
| | | | Visual Effects for 'o' Images |
| | | | Packaging the Application as a JAR |
| | | Chapter 7. Introducing Java Sound |
| | | | Applet Playing |
| | | | The AudioClip Class |
| | | | The Sound Player |
| | | | The Java Sound API |
| | | | Sampled Audio |
| | | | MIDI |
| | | | Java Sound API Compared with JMF and JOAL |
| | | | Java Sound API Resources |
| | | | Audio Resources |
| | | Chapter 8. Loading and Playing Sounds |
| | | | Loader Design and Implementation Issues |
| | | | Testing the Loaders |
| | | | The Sounds Panel |
| | | | The Clips Loader |
| | | | Storing Clip Information |
| | | | The Midi Sequences Loader |
| | | | Storing Midi Information |
| | | | LoadersTests as a JAR File |
| | | Chapter 9. Audio Effects |
| | | | Audio Effects on Sampled Audio |
| | | | Audio Effects on MIDI Sequences |
| | | Chapter 10. Audio Synthesis |
| | | | Sampled Audio Synthesis |
| | | | MIDI Synthesis |
| | | | Audio Synthesis Libraries |
| | | Chapter 11. Sprites |
| | | | Bats, Balls, and Sprites |
| | | | Class Diagrams for BugRunner |
| | | | The Bug Starts Running |
| | | | The Animation Framework |
| | | | Defining a Sprite |
| | | | Coding a Sprite |
| | | | Specifying a Sprite with a Statechart |
| | | | The Ball Sprite |
| | | | Defining the Bat |
| | | Chapter 12. A Side-Scroller |
| | | | JumpingJack in Layers |
| | | | Class Diagrams for JumpingJack |
| | | | Start Jack Jumping |
| | | | The Animation Framework |
| | | | Managing the Ribbons |
| | | | Wraparound Ribbons |
| | | | Managing the Bricks |
| | | | Storing Brick Information |
| | | | The Fireball |
| | | | The Jumping Sprite |
| | | | Other Side-Scroller Examples |
| | | | Tiling Software |
| | | Chapter 13. An Isometric Tile Game |
| | | | Isometric Tiles |
| | | | Class Diagrams for AlienTiles |
| | | | The Animation Framework |
| | | | Managing the World |
| | | | Managing WorldItems |
| | | | The Tile Occupier |
| | | | A Sprite on a Tile |
| | | | The Player Sprite |
| | | | The Alien Sprite |
| | | | The Quadrant-Based Alien Sprite |
| | | | The A*-Based Alien Sprite |
| | | | Storing Tile Details |
| | | | Further Reading |
| | | Chapter 14. Introducing Java 3D |
| | | | Java 3D |
| | | | Java 3D Strengths |
| | | | Criticisms of Java 3D for Games Programming |
| | | | Alternatives to Java 3D |
| | | Chapter 15. A 3D Checkerboard: Checkers3D |
| | | | Class Diagrams for Checkers3D |
| | | | Integrating Java 3D and Swing |
| | | | Scene Graph Creation |
| | | | Floating Spheres |
| | | | The Floor |
| | | | Viewer Positioning |
| | | | Viewer Movement |
| | | | Viewing the Scene Graph |
| | | Chapter 16. Loading and Manipulating External Models |
| | | | An Overview of LoaderInfo3D |
| | | | Loaders in Java 3D |
| | | | Displaying a Model |
| | | | Examining a Model's Scene Graph |
| | | | Adjusting a Model's Shape Attributes |
| | | | An Overview of Loader3D |
| | | | Using Loader3D |
| | | | Creating the Scene |
| | | | Managing the Model |
| | | | Building the Model's Scene Graph |
| | | Chapter 17. Using a Lathe to Make Shapes |
| | | | Class Diagrams for Lathe3D |
| | | | Creating the Scene |
| | | | The Lathe Curve |
| | | | The Lathe Shape |
| | | | Subclassing the Lathe Shape |
| | | Chapter 18. 3D Sprites |
| | | | Class Diagrams for Tour3D |
| | | | Creating the Scene |
| | | | The Basic 3D Sprite |
| | | | The User's Touring Sprite |
| | | | The Alien Sprite |
| | | | Behaviors in Java 3D |
| | | | Controlling the Touring Sprite |
| | | | Updating the Alien Sprite |
| | | Chapter 19. Animated 3D Sprites |
| | | | |
| | | | Class Diagrams for AnimTour3D |
| | | | Creating the Scene |
| | | | The Animated 3D Sprite |
| | | | Controlling the Sprite |
| | | | Animating the Sprite |
| | | | Full-Screen Exclusive Mode (FSEM) |
| | | | A Full-Screen Version of the Application |
| | | | Pros and Cons of Keyframe Animation |
| | | Chapter 20. An Articulated, Moveable Figure |
| | | | The Articulated Figure Application |
| | | | Forward and Inverse Kinematics |
| | | | Class Diagrams for Mover3D |
| | | | Creating the Scene |
| | | | Processing User Input |
| | | | The Commands Panel |
| | | | Making and Moving the Figure |
| | | | Modeling a Limb |
| | | | Moving a Limb |
| | | | Other Articulated Figures |
| | | | Articulation and Mesh Deformation |
| | | | Articulation and Skinning |
| | | | Articulation and Morphing |
| | | Chapter 21. Particle Systems |
| | | | Particle Systems in Java 3D |
| | | | Class Diagrams for Particles3D |
| | | | Creating the Scene |
| | | | A Fountain of Points |
| | | | A Fountain of Lines |
| | | | A Fountain of Quads |
| | | | Performance Results |
| | | | More Particle Systems |
| | | | Other Java 3D Approaches |
| | | | Non-Java 3D Approaches |
| | | Chapter 22. Flocking Boids |
| | | | A Flocking Application |
| | | | Scene Creation |
| | | | Adding Obstacles |
| | | | Types of Boids |
| | | | Grouping the Boids |
| | | | Flock Behavior |
| | | Chapter 23. Shooting a Gun |
| | | | Class Diagrams for Shooter3D |
| | | | Scene Creation |
| | | | The Sound of Shooting |
| | | | Picking Scene Objects |
| | | | Controlling the Gun |
| | | | Preparing the Laser Beam |
| | | | Causing an Explosion |
| | | | Picking with a Mouse Click |
| | | | Shooting Behavior |
| | | | Firing the Beam |
| | | | More on Picking |
| | | Chapter 24. A First-Person Shooter |
| | | | Class Diagrams for FPShooter3D |
| | | | Setting Up the Target |
| | | | Positioning and Moving the User's Viewpoint |
| | | | Initializing the User's Viewpoint |
| | | | Adding an Image to the Viewpoint |
| | | | Managing the Ammunition |
| | | | Managing a Laser Beam |
| | | | Moving the Viewpoint |
| | | Chapter 25. A 3D Maze |
| | | | Class Diagrams for Maze3D |
| | | | Making a Maze Plan |
| | | | The User Interface |
| | | | Managing the Maze |
| | | | Scenery Creation |
| | | | Tiling the Floor |
| | | | Viewpoint Creation |
| | | | The Back Facing Camera |
| | | | Moving the Viewpoint |
| | | | The Bird's-Eye View |
| | | | Related Approaches to Scene Generation |
| | | Chapter 26. Fractal Land |
| | | | Class Diagrams for the Fractal Land |
| | | | Building the Fractal Land |
| | | | Creating the Landscape |
| | | | Constructing the Ground |
| | | | Generating a Fractal Landscape |
| | | | Responding to Key Presses |
| | | | Terrain Following and Collision Avoidance |
| | | | Placing Objects in the Scene |
| | | | Other Fractal Landscapes |
| | | Chapter 27. Terrain Generation with Terragen |
| | | | Class Diagrams for Terra3D |
| | | | Terragen |
| | | | Scenery Creation |
| | | | Building the Landscape |
| | | | Making 3D Scenery |
| | | | Adding Landscape Walls |
| | | | Creating Ground Cover |
| | | | Moving over the Surface |
| | | | Finding the Surface Height |
| | | | Accelerating Terrain Following |
| | | | More on Terrain Generation |
| | | Chapter 28. Trees That Grow |
| | | | Class Diagrams for Trees3D |
| | | | Creating the Scene |
| | | | Building a Tree Limb |
| | | | Executing the Rules |
| | | | Displaying Leaves |
| | | | Comparison with L-Systems |
| | | Chapter 29. Networking Basics |
| | | | The Elements of Network Communication |
| | | | The Client/Server Model |
| | | | The Peer-to-Peer Model |
| | | | Client/Server Programming in Java |
| | | | P2P Programming in Java |
| | | | Firewalls |
| | | | Other Kinds of Java Networking |
| | | Chapter 30. Network Chat |
| | | | Threaded TCP Clients and Server |
| | | | UDP Multicasting Clients and a Name Server |
| | | | Clients Using a Servlet as a Server |
| | | Chapter 31. A Networked Two-Person Game |
| | | | The Standalone Tic-Tac-Toe Game |
| | | | The Networked Tic-Tac-Toe Game |
| | | | Comparing NetFourByFour and FourByFour |
| | | Chapter 32. A Networked Virtual Environment |
| | | | Background on NVEs |
| | | | An Overview of NetTour3D |
| | | | Scene Creation on the Client |
| | | | Defining Sprites |
| | | | Local Sprites |
| | | | Watching the Server |
| | | | Server Activities |
| | | | Other Java NVEs |
| | | Appendix A. Installation Using install4j |
| | | | install4j Versus JWS |
| | | | The Java 3D Components |
| | | | The BugRunner Application |
| | | | The Checkers3D Application |
| | | Appendix B. Installation Using Java Web Start |
| | | | JWS Benefits |
| | | | JWS Downsides |
| | | | The JNLP Deployment File |
| | | | Steps in Developing a JWS Application |
| | | | A JWS Installer for BugRunner |
| | | | A JWS Installer for Checkers3D |
| | | | Another Way to Install Checkers3D |
| | | | The JWS Portal Page |
| | | | Third-Party Certificates |
| | | | More Information |
| | | Colophon |
| | | | About the Author |
| | | | Colophon |
| | | Index |