Building Android Games With Cocos2d-X - Sample Chapter
Building Android Games With Cocos2d-X - Sample Chapter
Building Android Games With Cocos2d-X - Sample Chapter
ee
Building Android
Games with Cocos2d-x
pl
C o m m u n i t y
$ 24.99 US
16.99 UK
Raydelto Hernandez
E x p e r i e n c e
D i s t i l l e d
P U B L I S H I N G
Sa
m
Raydelto Hernandez
Chapter 7, Creating Particle Systems, illustrates the creation of realistic explosions, fire,
snow, rain using the built-in particle systems engine. This chapter shows you how to
create your own particle system when you require a customized effect, using the most
popular tools.
Chapter 8, Adding Native Java Code, helps you when you need to add native code for
creating and invoking Android-specific behavior from within your Cocos2d-x game
activity. We do this using the Java Native Interface (JNI) mechanism, available on the
Android platform.
Cocos2d-x overview
Setting up Java
Setting up Python
Setting up Cocos2d-x
[1]
Cocos2d-x overview
Cocos2d-x is a C++ cross-platform port of the popular iOS gaming framework
Cocos2d. It was first released in November 2010, and bought in 2011 by Chukong
Technologies, a Beijing-based mobile gaming company. Nevertheless, it is still
maintained by an active community of more than 400,000 developers worldwide,
including Ricardo Quesada, the creator of the original Cocos2d iPhone engine.
This framework encapsulates all the game details, such as sound, music, physics,
user inputs, sprites, scenes, and transitions, so the developer will only have to
focus on the game logic rather than re-inventing the wheel.
Setting up Java
The Android platform technology stack is based on the Java technology; that is why
the first item to be downloaded will be the Java Development Kit (JDK). Although
Java JDK 8 is the latest version at the time of writing this book, it is not officially
supported by all Android versions, so we will download JDK 6, all the template
Java codes generated by Cocos2d-x can be successfully compiled with this version.
Java Runtime Environment (JRE) is not enough for building the Android
applications, since it only contains the files required for running the Java
applications, but it does not contain the tools required for building the
Java applications.
If Windows is your current environment, then after installing JDK you are required
to add the path of the binaries folder to the PATH environment variable. This path
will look like this: C:\Program Files\Java\jdk1.6.0_45\bin.
Open a new system console and type javac version, if Java compiler's version
number is displayed, then you have successfully installed JDK in your system.
JDK 7 is required for building the applications for Android 5.0 and
higher. You should download this version if you are targeting the latest
Android versions. But, if you want your game to be compatible with the
Android versions that are older than 4.4, then you should pick JDK 6.
[2]
Chapter 1
[3]
Once the Android SDK Manager starts, select Android SDK Platform-tools and
Android SDK Build-tools from the Tools folders. Then select SDK Platform from
your desired API level, as shown in the following screenshot:
Downloading Eclipse
Download the latest version of the Eclipse IDE for Java Developers from
http://www.eclipse.org/downloads. It will suggest the download versions
compatible with your current operating system, select the version that better
suits your operating system platform which will either be 32-bit or 64-bit.
At the time of writing this book, Eclipse Luna (4.4.1) was the latest version.
[4]
Chapter 1
Click on OK, then select the Developer Tools checkbox, and click on Next in order
to finish the ADT installation wizard.
Download the latest NDK revision. At the time this book was written, it was 10d.
This version of NDK will allow you to build for all the Android platforms, including
the latest.
You can download the latest version of the Android NDK for all the platforms from
the following link:
https://developer.android.com/tools/sdk/ndk
[5]
After downloading it, run the executable file. It will decompress the Android NDK
directory on the current path; you need to be aware of this path since you will need
it later.
At the time of writing this book, version 1.9.4 was the latest. This tool is a crossplatform tool so a single download will work on any operating system that provides
support for the Java technology.
In order to install this tool, just unzip the file. Remember the path since you will
need it during the Cocos2d-x setup process.
Setting up Python
All the Cocos2d-x configuration files are written in Python. If you are using Mac OS
or any Linux distribution, it will already be installed on your OS. So, you can skip
this section.
If you are using Windows, you need to download Python 2 from the following link:
https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi.
Take in to consideration that Python, as Cocos2d-x, keeps simultaneous support for
versions 2 and 3. Cocos2d-x only supports Python 2. At the time of writing this
book the latest version of the 2 branch was 2.7.8.
After the installer finishes with the setup, you should manually add the Python
installation path to the PATH environment variable. The default installation path
is C:\Python27.
[6]
Chapter 1
Open a new system console and type python, if the Python console is shown, as seen
in the following screenshot, then it means that Python has been installed correctly:
Setting up Cocos2d-x
Now that you have all the Cocos2d-x pre-requisites for building your first game
for the Android platform, you are going to download the Cocos2d-x 3.4 framework
and set it up with the help of the following steps:
1. You can download the source code from http://www.cocos2d-x.org/
download. Be aware that this page also has the link for downloading the
Cocos2d-x branch 2, which is not covered in this book, and the manufacturer
has officially announced that the new features will only be available in
branch 3.
2. After downloading the compressed Cocos2d-x source code, uncompress it
to your desired location.
3. In order to configure Cocos2d-x, open your system terminal and point to the
path where you have uncompressed it, and type setup.py. It will require
you to specify ANDROID_NDK_PATH, here you will specify the root directory
of the NDK that you have previously uncompressed in the previous sections.
Secondly, it will require you to specify ANDROID_SDK_ROOT, here you will
specify the directory path from where you have chosen to install the
Android SDK during the installation process. Then, it will require you
to set ANT_ROOT, where you will specify the root directory of your ant
installation. Finally, close the terminal, and open a new one so that the
changes can take effect.
[7]
This script has created an Android template code for your game that will run in all
the Android devices containing the Android API 9 or higher, that is Android 2.3
(Gingerbread) and later.
Take in to consideration that the package name should contain exactly two dots,
as the example shows, if it has less or more, then the project creation script will
not work. The l cpp parameter means that the new project is going to use C++ as
the programming language, which is the only one that is covered in this book.
Cocos2d-x 3.x, as opposed to branch 2.x, allows you to create your project outside
of the framework directory structure. Therefore, you can create your project at any
location, and not just inside the projects directory, as it was in the previous versions.
It will take a while, since it will copy all the framework files to your new project's
path. After it finishes, plug your Android device to your computer, then you can
easily run the template HelloWorld code by typing the following command within
your new project's path:
cocos run -p android
Alternatively, you could run the following command regardless of your current
path on the terminal:
cocos run -p android /path/to/project
For building and running Cocos2d-x 3.4 for Windows, you will need
Microsoft Visual Studio 2012 or 2013.
Now, you should be able to see the Cocos2d-x logo and a text that says Hello World,
as we can see in the following image:
[8]
Chapter 1
[9]
Now, right-click on the project name in the package explorer, click on run as, and
finally, click on Android Application. The following pop up will be displayed, and
it will require you to specify the Android device on which you want to launch the
Cocos2d-x game:
After picking your Android device, you will see the HelloWorld game scene as it
was shown when we ran the Run command in the previous section.
Java classes
We now have one Java class in our project named AppActivity that has no members
and extends the Cocos2dxActivity class from the core library. We can also see that
22 Java classes from the core library have been referenced in the project. This code is
aimed to make our C++ code work, and we don't have to modify it at all.
[ 10 ]
Chapter 1
C++ classes
Two C++ classes have been created: AppDelegate and HelloWorldScene. The first
one is in charge of launching the Cocos2d-x framework and passing the control to
the developer. The framework loading process happens within this class.. If the
Cocos2d-x core framework is successfully launched on the target device, it will run
the applicationDidFinishLaunching method, which is the first game-specific
function to be run.
The code is very straightforward and it is documented such that you will be able
to grasp its logic easily. Our first minor change to the code will be to hide the debug
information that shows by default on this sample game. You could simply guess
that in order to achieve this you should only send false as a parameter for the
setDisplayStats method call in the director singleton instance, as we can see
in the following code listing:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
[ 11 ]
Scenes
As we will cover in the chapters later in this book, Cocos2d-x handles the scene
concept just like movies; movies are composed by scenes, so are the Cocos2d-x
games. We can visualize the different screens, such as loading, main menu, world
selection, gameplay levels, ending credits, and so on, as the different scenes.
Each scene has a class that defines its behavior. The template code has only one
scene named HelloWorld scene that is initialized and launched from within the
AppDelegate class. The scene flow is managed by the game director as we have
seen in the previous code. The Director class has all the basic features to drive
the game, just like a director does during a movie. There is a single shared instance
of the director class that is used within the whole application scope.
HelloWorldScene contains the layer that represents all the visible areas that
show up when we run our HelloWorld application, that is, the hello world label,
the Cocos2d-x logo, and the menu showing the exit option.
Within the init method, we do the instantiation of the visual elements, and then
we add it to the scene using the addChild method inherited from the Node core class.
[ 12 ]
Chapter 1
Summary
In this chapter, we have introduced the Cocos2d-x 3.4 gaming framework,
and explained how to download and install it. We have also explained all of its
pre-requisites. We have configured our work environment, launched our first
Android application into an actual device, and gone through a quick code
overview of the main aspects of the template code generated by the script.
In the next chapter, we will cover how to create and manipulate all of our game
graphics, such as the main character, enemies, obstacles, backgrounds, and so on.
[ 13 ]
www.PacktPub.com
Stay Connected: