Free Sample
+ Collection

Android NDK Game Development Cookbook

Sergey Kosarevsky, Viktor Latypov

For C++ developers, this is the book that can swiftly propel you into the potentially profitable world of Android games. The 70+ step-by-step recipes using Android NDK will give you the wide-ranging knowledge you need.
RRP $29.99
RRP $49.99
Print + eBook

Want this title & more?

$12.99 p/month

Subscribe to PacktLib

Enjoy full and instant access to over 2000 books and videos – you’ll find everything you need to stay ahead of the curve and make sure you can always get the job done.

Book Details

ISBN 139781782167785
Paperback320 pages

About This Book

  • Tips and tricks for developing and debugging mobile games on your desktop
  • Enhance your applications by writing multithreaded code for audio playback, network access, and asynchronous resource loading
  • Enhance your game development skills by using modern OpenGL ES and develop applications without using an IDE
  • Features two ready-to-run Android games

Who This Book Is For

If you are a C++ developer who wants to jump into the world of Android game development and who wants to use the power of existing C++ libraries in your existing Android Java applications, then this book is for you. You need to have basic knowledge of C or C++ including pointer manipulation, multithreading, and object-oriented programming concepts as well as some experience developing applications without using an IDE.

Table of Contents

Chapter 1: Establishing a Build Environment
Installing Android development tools on Windows
Installing Android development tools on Linux
Creating an application template manually
Adding native C++ code to your application
Switching NDK toolchains
Supporting multiple CPU architectures
Basic rendering with OpenGL ES
Going cross platform
Unifying the cross-platform code
Linking and source code organization
Signing release Android applications
Chapter 2: Porting Common Libraries
Compiling the native static libraries for Windows
Compiling the native static libraries for Android
Compiling the libcurl networking library
Compiling the OpenAL library
Compiling libvorbis, libmodplug, and libtheora
Using the FreeImage graphics library
Using the FreeType library for text rendering
Implementing timing in physics
Rendering graphics in 2D
Setting up Box2D simulations
Building the ODE physical library
Chapter 3: Networking
Fetching list of photos from Flickr and Picasa
Downloading images from Flickr and Picasa
Performing cross-platform multithreading
Synchronizing native cross-platform threads
Managing memory using reference counting
Implementing asynchronous task queues
Handling asynchronous callbacks invocation
Working with the network asynchronously
Detecting a network address
Writing the HTTP server
Chapter 4: Organizing a Virtual Filesystem
Abstracting file streams
Implementing portable memory-mapped files
Implementing file writers
Working with in-memory files
Implementing mount points
Enumerating files in the .zip archives
Decompressing files from the .zip archives
Loading resources asynchronously
Storing application data
Chapter 5: Cross-platform Audio Streaming
Initializing OpenAL and playing the .wav files
Abstracting basic audio components
Streaming sounds
Decoding Ogg Vorbis files
Decoding tracker music using ModPlug
Chapter 6: Unifying OpenGL ES 3 and OpenGL 3
Unifying the OpenGL 3 core profile and OpenGL ES 2
Initializing the OpenGL 3 core profile on Windows
Initializing OpenGL ES 2 on Android
Unifying the GLSL 3 and GLSL ES 2 shaders
Manipulating geometry
Unifying vertex arrays
Creating a wrapper for textures
Creating a canvas for immediate rendering
Chapter 7: Cross-platform UI and Input Systems
Processing multi-touch events on Android
Setting up multi-touch emulation on Windows
Handling multi-touch events on Windows
Recognizing gestures
Implementing an on-screen joypad
Using FreeType for text rendering
Localization of in-game strings
Chapter 8: Writing a Match-3 Game
Handling asynchronous multi-touch input
Improving the audio playback mechanism
Shutting down the application
Implementing the main loop
Creating a multiplatform gaming engine
Writing the match-3 game
Managing shapes
Managing the game field logic
Implementing user interaction within a game loop
Chapter 9: Writing a Picture Puzzle Game
Implementing picture puzzle game logic
Implementing the animated 3D image selector
Page-based user interface
Image gallery with Picasa downloader
Implementing the complete picture-puzzle game

What You Will Learn

  • Port popular C++ libraries to Android
  • Write portable multithreaded code
  • Play audio with OpenAL
  • Implement gesture recognition
  • Render text with FreeType
  • Use OpenGL ES to port and abstract APIs from the game code to develop games on a desktop PC
  • Debug mobile applications on your desktop
  • Access Flickr and Picasa web services from C++
  • Extract resources from APK archives
  • Develop Android applications without an IDE

In Detail

Android NDK is used for multimedia applications which require direct access to a system's resources. Android NDK is also the key for portability, which in turn provides a reasonably comfortable development and debugging process using familiar tools such as GCC and Clang toolchains. If your wish to build Android games using this amazing framework, then this book is a must-have.

This book provides you with a number of clear step-by-step recipes which will help you to start developing mobile games with Android NDK and boost your productivity debugging them on your computer. This book will also provide you with new ways of working as well as some useful tips and tricks that will demonstrably increase your development speed and efficiency.

This book will take you through a number of easy-to-follow recipes that will help you to take advantage of the Android NDK as well as some popular C++ libraries. It presents Android application development in C++ and shows you how to create a complete gaming application.

You will learn how to write portable multithreaded C++ code, use HTTP networking, play audio files, use OpenGL ES, to render high-quality text, and how to recognize user gestures on multi-touch devices. If you want to leverage your C++ skills in mobile development and add performance to your Android applications, then this is the book for you.


Read More