一、设置您的开发环境

在本章中,我们将解释如何下载和设置所有必需的工具,以帮助您开始为安卓平台构建游戏环境。虽然苹果操作系统和视窗开发环境有很大的相似之处,但我们将涵盖这两个操作系统中安装的所有细节。

本章将涵盖以下主题:

  • Cocos2d-x 概述
  • 设置 Java
  • 设置安卓软件开发工具包
  • 设置安卓原生开发套件(NDK)
  • 设置阿帕奇蚂蚁
  • 设置 Python
  • 设置 Cocos2d-x
  • 设置 Eclipse 集成开发环境
  • 模板代码演练

Cocos2d-x 概述

Cocos2d-x 是流行的 iOS 游戏框架 Cocos2d 的一个 C++ 跨平台端口。它于 2010 年 11 月首次发布,并于 2011 年被总部位于北京的移动游戏公司 Chukong Technologies 收购。尽管如此,它仍然由全球 40 多万名开发人员组成的活跃社区维护,其中包括最初的 Cocos2d iPhone 引擎的创造者 Ricardo Quesada。

这个框架封装了所有的游戏细节,比如声音、音乐、物理、用户输入、精灵、场景和转场,所以开发者只需要专注于游戏逻辑,而不是重新发明轮子。

设置 Java

安卓平台技术栈基于 Java 技术;这就是为什么第一个要下载的项目是 Java 开发工具包(JDK)。虽然在撰写本书时 Java JDK 8 是最新版本,但并不是所有安卓版本都正式支持,所以我们将下载 JDK 6,Cocos2d-x 生成的所有模板 Java 代码都可以用这个版本成功编译。

Java 运行时环境(JRE)不足以构建安卓应用程序,因为它只包含运行 Java 应用程序所需的文件,但不包含构建 Java 应用程序所需的工具。

你可以通过http://www . Oracle . com/technetwork/Java/javase/downloads/Java-archive-downloads-javase 6-419409 . html从甲骨文下载 JDK 6,不考虑你的开发环境。

如果 Windows 是您当前的环境,那么在安装 JDK 之后,您需要将二进制文件文件夹的路径添加到 path 环境变量中。这条路会是这样的:C:\Program Files\Java\jdk1.6.0_45\bin

打开一个新的系统控制台,输入javac –version,如果显示的是 Java 编译器的版本号,那么说明你已经在你的系统中成功安装了 JDK。

安卓 5.0 及更高版本的应用程序需要 JDK 7。如果你的目标是最新的安卓版本,你应该下载这个版本。但是,如果你想让你的游戏兼容 4.4 以上的安卓版本,那么你应该选择 JDK 6。

设置安卓软件开发工具包

Android SDK 包含构建 Android 应用程序所需的所有命令行工具。它有 Windows、Mac 和 GNU/Linux 操作系统的版本。

Android Studio 现在是唯一官方支持的 IDE 尽管如此,Cocos2d-x 3.4 只为 Eclipse 提供了开箱即用的支持,Eclipse 是安卓开发的前官方 IDE。它不再可供下载,因为它不再处于活动状态开发,但是您可以按照以下步骤手动下载 Eclipse 并安装安卓开发工具 ( ADT )。

下载安卓 SDK

你可以从链接:http://developer.android.com/sdk下载安卓 SDK。在页面底部的其他下载选项下,您可以找到下载 SDK 工具的选项。选择与您的操作系统相匹配的版本。

在写这本书的时候,SDK 的最新版本是 24.0.2。

运行安卓软件开发工具包安装程序,并在您的计算机上安装安卓软件开发工具包。

当安卓软件开发工具包完成安装时,它还没有准备好构建安卓应用程序。因此,在安装向导的最后一个屏幕上,选中启动 SDK 管理器的复选框,这样您就可以下载构建游戏所需的组件,如下图所示:

Downloading the Android SDK

安卓软件开发工具包管理器启动后,从Tools文件夹中选择安卓软件开发工具包平台工具安卓软件开发工具包构建工具。然后从你想要的 API 级别中选择 SDK 平台,如下图截图所示:

Downloading the Android SDK

下载月食

http://www.eclipse.org/downloads下载 Java 开发人员最新版本的 Eclipse IDE。它将建议下载与您当前操作系统兼容的版本,选择更适合您的操作系统平台的版本,32 位或 64 位。

在撰写本书时,Eclipse Luna (4.4.1)是最新版本。

设置 Eclipse ADT 插件

打开 Eclipse,导航至帮助 | 安装新软件、添加 Eclipse ADT 下载位置,为https://dl-ssl.google.com/android/eclipse/,如下图截图所示:

Setting up the Eclipse ADT plugin

点击确定,然后选择开发工具复选框,点击下一步完成 ADT 安装向导。

设置安卓原生开发套件

我们已经下载了安卓 SDK,可以使用 Java 技术创建安卓应用;尽管如此,Cocos2d-x 框架是用 C++ 编写的,因此您将需要 Android 原生开发工具包(NDK),以便为 Android 平台构建 C++ 代码。

安卓的官方文档明确指出,您应该在特定情况下使用这个本机工具包,但是您不应该仅仅因为熟悉 C++ 语言,或者因为希望应用程序执行得更快而使用它。厂商之所以提出这个建议,是因为安卓核心 API 只适用于 Java。

下载最新的 NDK 版本。写这本书的时候,是 10d。这个版本的 NDK 将允许你为所有安卓平台构建,包括最新的。

您可以从以下链接下载适用于所有平台的最新版本的安卓 NDK:

https://developer.android.com/tools/sdk/ndk

下载后,运行可执行文件。它将解压当前路径上的安卓 NDK 目录;你需要知道这条路,因为你以后会需要它。

建立阿帕奇蚂蚁

Apache Ant 是一个构建管理工具,广泛用于自动化 Java 项目的构建过程。它已经在 Cocos2d-x 3.0 中引入,用于构建安卓平台的框架。它简化了安卓构建过程,增强了跨平台构建。回到 Cocos2d-x 2.x,在 Windows 操作系统中构建安卓应用程序需要使用 Cygwin 模拟 UNIX 环境。这需要小规模的黑客攻击才能成功构建代码,其中许多仍然没有记录在官方的 Cocos2d-x 网站上。

该工具可从链接下载:https://www.apache.org/dist/ant/binaries/

在写这本书的时候,1.9.4 版本是最新的。这个工具是一个跨平台的工具,所以一次下载可以在任何支持 Java 技术的操作系统上运行。

为了安装这个工具,只需解压文件。请记住该路径,因为在 Cocos2d-x 设置过程中您将需要它。

设置 Python

所有 Cocos2d-x 配置文件都是用 Python 编写的。如果您正在使用苹果操作系统或任何 Linux 发行版,它将已经安装在您的操作系统上。所以,你可以跳过这一部分。

如果使用 Windows,需要从以下链接下载 Python 2:https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi

考虑到 Python 作为 Cocos2d-x,对版本 2 和 3 保持同步支持。Cocos2d-x 只支持 Python 2。在撰写本书时,2 分支的最新版本是 2.7.8。

安装程序完成安装后,您应该手动将 Python 安装路径添加到 path 环境变量中。默认安装路径为C:\Python27

打开一个新的系统控制台,输入python,如果出现 Python 控制台,如下图截图所示,那么说明 Python 已经安装正确:

Setting up Python

在 Windows 上设置环境变量,点击开始按钮,输入:edit the system environment变量,点击并点击环境变量按钮,将显示环境变量配置对话框。

设置 Cocos2d-x

现在您已经具备了为安卓平台构建第一款游戏的所有 Cocos2d-x 先决条件,您将下载 Cocos2d-x 3.4 框架,并通过以下步骤进行设置:

  1. 可以从http://www.cocos2d-x.org/download下载源代码。请注意,此页面还有下载 Cocos2d-x 分支 2 的链接,这本书没有涉及,制造商已正式宣布新功能将仅在分支 3 提供。
  2. 下载压缩后的 Cocos2d-x 源代码后,将其解压缩到您想要的位置。
  3. 为了配置 Cocos2d-x,打开你的系统终端,指向你解压的路径,输入setup.py。它将要求您指定ANDROID_NDK_PATH,在这里您将指定您在前面章节中已经解压缩的 NDK 的根目录。其次,它会要求你指定ANDROID_SDK_ROOT,这里你会指定你在安装过程中选择安装安卓软件开发工具包的目录路径。然后,它将要求您设置ANT_ROOT,,在这里您将指定您的 ant 安装的根目录。最后,关闭终端,并打开一个新的终端,以便更改生效。

创建你的第一个项目

现在,Cocos2d-x 已经设置好了,可以创建您的第一个项目了。您可以通过键入以下命令来实现:

 cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR

这个脚本已经为你的游戏创建了一个安卓模板代码,它将在所有包含安卓应用编程接口 9 或更高版本的安卓设备上运行,即安卓 2.3(姜饼)和更高版本。

考虑到包名应该正好包含两个点,如示例所示,如果它有更多或更少的点,那么项目创建脚本将不起作用。–l cpp参数表示新项目将使用 C++ 作为编程语言,这是本书唯一涉及的一个。

与 branch 2.x 相反,Cocos2d-x 3.x 允许您在框架目录结构之外创建项目。因此,您可以在任何位置创建您的项目,而不仅仅是在projects目录中,就像在以前的版本中一样。

这需要一段时间,因为它会将所有框架文件复制到新项目的路径中。完成后,将您的安卓设备插入您的计算机,然后您可以通过在新项目的路径中键入以下命令来轻松运行模板HelloWorld代码:

cocos run -p android

或者,无论终端上的当前路径如何,您都可以运行以下命令:

cocos run -p android /path/to/project

要为 Windows 构建和运行 Cocos2d-x 3.4,您将需要 Microsoft Visual Studio 2012 或 2013。

现在,您应该能够看到 Cocos2d-x 徽标和一个表示 Hello World 的文本,如下图所示:

Creating your first project

设置 Eclipse 集成开发环境

Cocos2d-x 分支 3 对安卓构建流程进行了显著改进。

回到分支 2,需要在 IDE 中手动配置许多环境变量,导入许多核心项目,并处理依赖关系。即使完成了所有步骤,Cygwin Windows UNIX 端口与 Eclipse 的集成也从未被打磨得完美无缺,因此需要进行一些小的黑客攻击。

在 Eclipse 中构建 Cocos2d-x 3.4 就像导入项目并点击运行按钮一样简单。为了实现这一点,在 ADT 中,导航到文件 | 导入 | 常规 | 现有项目到工作区,选择路径,其中 Cocos2d-x 已经从前面的部分创建了新项目。然后点击完成

类型

Cocos2d-x 安卓模板项目是使用 API Level 10 作为目标平台创建的。如果您的系统上没有安装此版本,您应该通过在包资源管理器中右键单击项目,单击属性,并从项目构建目标框中选择您首选的已安装安卓应用编程接口版本来进行更改。

现在,在包浏览器中右键单击项目名称,单击运行方式,最后,单击安卓应用程序。将显示以下弹出窗口,要求您指定您想要在其上启动 Cocos2d-x 游戏的安卓设备:

Setting up the Eclipse IDE

选择你的安卓设备后,你会看到 HelloWorld 游戏场景,就像我们在上一节运行 Run 命令时显示的那样。

模板代码演练

在这个部分,我们将解释项目创建脚本在前面几节中生成的 Cocos2d-x 模板代码的主要部分。

Java 类

我们现在的项目中有一个名为AppActivity的 Java 类没有成员,从核心库扩展了Cocos2dxActivity类。我们还可以看到项目中引用了核心库中的 22 个 Java 类。这段代码旨在使我们的 C++ 代码工作,我们根本不需要修改它。

安卓应用配置

生成的AndroidManifest.xml是安卓配置文件,需要权限android.permission.INTERNET,,允许你的安卓应用在你的设备上使用互联网连接;尽管如此,我们简单的游戏代码并不需要这样,因为没有互联网交互。所以,如果你愿意,你可以从AndroidManifest.xml文件中删除这一行。默认情况下,您的游戏将以横向显示,但是如果您希望创建一个以纵向模式运行的游戏,那么您应该将android:screenOrientation的值从landscape更改为portrait

为了更改安卓应用名称,您可以修改位于strings.xml文件上的app_name值;它将影响启动器图标的文本和安卓操作系统中的应用程序标识符。

当你创建你自己的游戏时,你将不得不创建你自己的类,这些类通常比脚本创建的两个类要多。每次你创建一个新的类,你需要把它的名字添加到位于你的新项目目录结构的jni文件夹中的Android.mk make 文件的LOCAL_SRC_FILES属性中。所以,当你的cpp代码由 C++ 构建工具构建时,它知道应该编译哪些文件。

C++ 类

已经创建了两个 C++ 类:AppDelegateHelloWorldScene。第一个负责启动 Cocos2d-x 框架,并将控制传递给开发人员。框架加载过程发生在这个类中。如果 Cocos2d-x 核心框架在目标设备上成功启动,它将运行applicationDidFinishLaunching方法,这是第一个运行的游戏特定功能。

代码非常简单,并且有文档记录,这样您就可以轻松掌握它的逻辑。我们对代码的第一个小改动是隐藏这个示例游戏默认显示的调试信息。您可以简单地猜测,为了实现这一点,您应该只将false作为参数发送给director单例实例中的setDisplayStats方法调用,如下面的代码清单所示:

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");
        director->setOpenGLView(glview);
    }
    // turn on display FPS
    director->setDisplayStats(false);
    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);
    // create a scene. it's an autorelease object
    auto scene = HelloWorld::createScene();
    // run
    director->runWithScene(scene);
    return true;
}

类型

下载示例代码

您可以从您在http://www.packtpub.com的账户中下载您购买的所有 Packt 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

场景

正如我们将在本书后面的章节中介绍的,Cocos2d-x 处理场景概念就像电影一样;电影由场景组成,Cocos2d-x 游戏也是如此。我们可以把不同的画面,比如加载、主菜单、世界选择、游戏玩法等级、结局积分等等,可视化为不同的场景。每个场景都有一个定义其行为的类。模板代码只有一个名为HelloWorld的场景,该场景是从AppDelegate类中初始化和启动的。场景流由游戏导演管理,正如我们在前面的代码中看到的那样。Director课程具有驱动游戏的所有基本特征,就像导演在电影中所做的那样。有一个在整个应用程序范围内使用的控制器类的共享实例。

HelloWorldScene包含的图层代表了我们运行 HelloWorld 应用程序时显示的所有可见区域,即 hello world 标签、Cocos2d-x 徽标和显示退出选项的菜单。

init方法中,我们对视觉元素进行实例化,然后使用从Node核心类继承的addChild方法将其添加到场景中。

总结

在本章中,我们已经介绍了 Cocos2d-x 3.4 游戏框架,并解释了如何下载和安装它。我们也解释了它的所有先决条件。我们已经配置了我们的工作环境,将我们的第一个安卓应用程序启动到实际设备中,并快速浏览了脚本生成的模板代码的主要方面的代码概述。

在下一章中,我们将介绍如何创建和操纵我们所有的游戏图形,例如主要角色、敌人、障碍物、背景等。