Companion BOOKS FOR PROFESSIONALS BY PROFESSIONALS® eBook Available Beginning Android 3D Game Development is a unique, examples-driven book B for today’s Android and game app developers who want to learn how to build e g 3D game apps that run on the latest Android 5.0 (KitKat) platform using Java and i n OpenGL ES. After reading and using this book, you’ll be able to build your first 3D n Android game app for smartphones and tablets. in g This book offers an extensive 3D game app case study called Drone Grid with code A that is modular and reusable to help you create your own games using advanced vertex and fragment shaders. Drone Grid is somewhat similar to the best-selling n Geometry Wars game series, utilizing a gravity grid and colorful abstract graphics and particles. d You’ll learn: r • o How to build 3D game apps using Android SDK, NDK, and OpenGL ES • Which Android SDK and NDK APIs are most useful for 3D game i d development • How to get a 3D Math Review for game development 3 • How to build 3D graphics using OpenGL ES • D How to create various motion patterns • How to set up a game environment, including gravity grid, sounds, and heads-up display G • How to create the characters, including the player and its enemies or targets a • How to develop a rich menu system with high score table m e BBeeggiinnnniinngg D e v Android 3D Game e l o p m Development e n t C h Robert Chin in COMPANION eBOOK ISBN 978-1-4302-6547-4 54999 Shelve in Mobile Computing SOURCE CODE ONLINE User level: www.apress.com Beginning–Intermediate 9781430265474 For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. Contents at a Glance About the Author ��������������������������������������������������������������������������������������������������������������xvii About the Technical Reviewer �������������������������������������������������������������������������������������������xix Acknowledgments �������������������������������������������������������������������������������������������������������������xxi Introduction ���������������������������������������������������������������������������������������������������������������������xxiii ■ Chapter 1: Let’s Meet the Android �������������������������������������������������������������������������������������1 ■ Chapter 2: Java for Android ��������������������������������������������������������������������������������������������29 ■ Chapter 3: 3D Math Review ���������������������������������������������������������������������������������������������57 ■ Chapter 4: 3D Graphics Using OpenGL ES 2�0 ������������������������������������������������������������������81 ■ Chapter 5: Motion and Collision ������������������������������������������������������������������������������������135 ■ Chapter 6: Game Environment ���������������������������������������������������������������������������������������183 ■ Chapter 7: Drone Grid Case Study: Creating the Player �������������������������������������������������221 ■ Chapter 8: Drone Grid Case Study: Creating the Enemies ���������������������������������������������267 ■ Chapter 9: Drone Grid Case Study: The User Interface ��������������������������������������������������321 ■ Chapter 10: The Final Drone Grid Game �������������������������������������������������������������������������353 ■ Chapter 11: The Android Native Development Kit (NDK) �����������������������������������������������393 ■ Chapter 12: Publishing and Marketing Your Final Game �����������������������������������������������419 Index ���������������������������������������������������������������������������������������������������������������������������������453 iii Introduction This book is meant to be a quick-start guide to developing 3D games for the Android platform using Java and OpenGL ES 2.0. Development will utilize the Eclipse Integrated Development Environment (IDE) with Android Development Tools (ADT) plug-ins installed. The goal is to cover key concepts and illustrate them, using concrete hands-on examples and case studies. A single book cannot cover every aspect of Android game development or Android software development in general. Thus, this book is not meant as a reference guide. The following is a summary of each chapter in this book. Chapter 1: “Let’s Meet the Android.” In this chapter, I provide an overview of Android, an overview of the Android SDK, instructions on how to set up your computer for Android development, and a hands-on example involving a simple “Hello World” program for those unfamiliar with Android. Chapter 2: “Java for Android.” In this chapter, I offer an overview of the Java language, the basic Android Java program framework, and information on the basic Java OpenGL ES framework. Chapter 3: “3D Math Review.” In this chapter, 3D math, vectors, matrices, and vector and matrix operations are discussed. Chapter 4: “3D Graphics Using OpenGL ES 2.0.” In this chapter, I provide an overview of OpenGL ES 2.0 on Android, 3D meshes, lighting, materials, textures, saving persistent data, and creating a gravity grid using vertex and fragment shaders. Chapter 5: “Motion and Collision.” In this chapter, collision and Newtonian mechanics are covered. Chapter 6: “Game Environment.” In this chapter, sounds and the heads-up display are discussed. xxiii xxiv Introduction Chapter 7: “Drone Grid Case Study: Creating the Player.” In this chapter, I explain how to create a player, including elements associated with a player within our Drone Grid game, such as weapons, ammunition and player’s HUD. Chapter 8: “Drone Grid Case Study: Creating the Enemies.” This chapter details how to create the enemies in our Drone Grid game. The enemies are arena objects and tanks. Arena objects are fairly simple in their behavior. Tanks are more complex enemy objects that will require the use of complex artificial intelligence, which I also cover. Chapter 9: “Drone Grid Case Study: The User Interface.” User interfaces for our Drone Grid game are discussed in this chapter, including the Main Menu System, the creation of the high score table, and the high score entry menu. Chapter 10: “The Final Drone Grid Game.” This chapter brings together everything from previous chapters into the final Drone Grid game. A final complete working game that integrates all the elements from previous chapters is presented. The final game will use elements discussed previously such as menus, heads up display, and enemy objects such as arena objects and tanks. Chapter 11: “The Android Native Development Kit (NDK).” This chapter covers the Android Native Development Kit and discusses the Java Native Interface (JNI) in addition. Chapter 12: “Publishing and Marketing Your Final Game.” This chapter discusses how to publish and market your final Android game. It includes a list of Android marketplaces from which you can upload your game distribution file, a list of numerous ad networks that support Android, and a list of game sites that review Android games. 1 Chapter Let’s Meet the Android Android mobile phones dominate the mobile smartphone market, surpassing even Apple’s iPhone. There are hundreds of millions of mobile phones using the Android operating system in over 190 countries around the world. Every day, a million new users begin using their Android phones to surf the Web, to e-mail friends, and to download apps and games. In fact, in the Google Play Store alone, there are 1.5 billion downloads per month of Android games and applications. If you include other web sites that offer Android games and apps for sale, such as Amazon Appstore for Android, then the number is even higher. In this chapter, you will learn about the Android Software Development Kit (SDK). You will learn how to set up the Android development environment. You will also learn about the major components of this environment, such as Eclipse. We then go through the creation and deployment of a simple “Hello World” program for Android, to both a virtual Android emulator program and also a real Android device. Overview of Android The Android operating system is a widely used operating system available on mobile phones and tablets. It is even used on a video game console called the Ouya. Android phones range from expensive phones that require a contract to inexpensive prepaid phones that do not require any contract. Developing programs for the Android platform does not require any developer’s fees, unlike Apple mobile devices, which require yearly fees in order to even be able to run your program on their devices. A good working prepaid no-contract Android phone that can develop 3D games using OpenGL ES 2.0 can be bought on Amazon.com for as little as $75–$100 with free shipping. Overview of the Android SDK This section discusses the Android SDK. Development system requirements and important individual pieces of the SDK, such as the SDK Manager, Android Virtual Device Manager, and the actual Android emulator will be covered. 1 2 CHAPTER 1: Let’s Meet the Android Android Software Development Kit (SDK) Requirements Android development can be done on a Windows PC, Mac OS machine, or a Linux machine. The exact operating system requirements are as follows: Operating Systems: Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32- or 64-bit) Mac OS X 10.5.8 or later (x86 only) Linux (tested on Ubuntu Linux, Lucid Lynx) GNU C Library (glibc) 2.7 or later is required. On Ubuntu Linux, version 8.04 or later is required. 64-bit distributions must be capable of running 32-bit applications. Developing Android programs also requires installation of the Java Development Kit. Java Development Kit requirements are JDK 6 or later and are located at www.oracle.com/technetwork/java/javase/ downloads/index.html. If you are using a Mac, then Java may already be installed. The Eclipse IDE program modified with the Android Development Tools (ADT) plug-in forms the basis for the Android development environment. The requirements for Eclipse are as follows: Eclipse 3.6.2 (Helios) or greater located at http://eclipse.org Eclipse JDT plug-in (included in most Eclipse IDE packages) Android Development Tools (ADT) plug-in for Eclipse located at http://developer.android.com/tools/sdk/eclipse-adt.html Notes Eclipse 3.5 (Galileo) is no longer supported with the latest version of ADT. For the latest information on Android development tools, go to http://developer.android.com/tools/index.html. Android SDK Components Overview The different components of the Android SDK are the Eclipse program, the Android SDK Manager, and the Android Virtual Device Manager and emulator. Let’s look at each in more detail. Eclipse with Android Development Tools Plug-in The actual part of the Android SDK that you will spend most of your time dealing with is a program called Eclipse, which is customized specifically for use with Android through the ADT software plug-in. You will enter new code, create new classes, run programs on the Android emulator and on real devices from this program. On older, less capable computers, the emulator may run so slowly CHAPTER 1: Let’s Meet the Android 3 that the best option would be running the program on an actual Android device. Because we are dealing with CPU-intensive 3D games in this book, you should use an actual Android device to run the example projects (see Figure 1-1). Figure 1-1. Eclipse with Android Development Tools plug-ins Android SDK Manager The Android SDK Manager allows you to download new Android platform versions and tools through its interface. Current tools and platform versions that are installed are also displayed. For example, in Figure 1-2, the Android 2.2 platform has already been installed and is ready for use for development. This means that you can compile your source code to target this platform. 4 CHAPTER 1: Let’s Meet the Android Figure 1-2. The Android SDK Manager Android Virtual Device The Android SDK also supports a virtual device emulator (see Figure 1-3). In many instances, you will be able to run your Android programs on a software emulator on your development system rather than an actual device. However, this works best for non-graphic intensive applications. Because this book deals with 3D games, we will not be using this software emulator but an actual Android device. The Android Virtual Device Manager allows you to create new virtual Android devices, edit existing Android devices, delete existing devices, and start up an existing virtual Android device. Figure 1-3 indicates that there is a valid virtual Android device named “Android22,” which emulates the 2.2 version of the Android operating system (API Level 8) and simulates the ARM CPU type. The 2.2 version of the Android operating system is important because it is the first version that supports OpenGL ES 2.0, which we will be using in this book to develop our 3D graphics. OpenGL is the graphics system that allows the programmer to create 3D graphics on the Android platform. It is designed to be hardware-independent. That is, OpenGL graphics commands are designed to be the same across many different hardware platforms, such as PC, Mac, Android, etc. The OpenGL 2.0 version of OpenGL is the first version of OpenGL that includes programmable vertex and fragment shaders. OpenGL ES is a subset of regular OpenGL and contains fewer features. CHAPTER 1: Let’s Meet the Android 5 Figure 1-3. The Android Virtual Device Manager Figure 1-4 depicts the actual emulator after it is launched. The emulator depicted is the one for version 2.2 of the Android operating system.
Description: