If you've picked up this tutorial, you want to get serious about making Java games. A lot of modern games look, sound, and behave so well that it can be hard to imagine how you'd even begin to program something like that. But even the biggest, most detailed games start with some basic game-programming concepts. This tutorial aims to cover those concepts so you can create your own impressive games. Many previous Java game-programming tutorials focused on making simple web-based game applets, such as card or puzzle games. But you know Java can do much more than that. In this Java game-programming tutorial, you'll make fast, full-screen action games such as side scrollers and 3D shooters that take full advantages of the capabilities of Java. But this tutorial really isn't about making Java games—it's about making games that happen to be written in Java. We'll cover a lot of Java game-programming topics, such as using certain APIs to get desired results, but we'll also cover a lot of generic game-programming topics such as collision detection, path finding, artificial intelligence, and BSP trees.