如何在多种平台上创建新的cocos2d-x项目,今天我们将开始学习如何把著名的Cocos2d SimpleGame从objective-C移植到c++,
通过使用cocos2d-x引擎,在win32/iPhone/android/沃Phone这些平台上运行它。
Cocos2d SimpleGame是由Ray Wenderlich编写。几乎所有的cocos2d-iphone初学者都曾读过他写的系列教程。
首先,你需要在http://download.cocos2d-x.org/ 下载最新稳定版的cocos2d-x。在我写这篇文章时,该版本还是cocos2d-0.99.5-x-0.8.2,之后更新游戏资源到0.9.1。其中0.99.5标记表示这一c++接口是基于它的母版本cocos2d-iphone 0.99.5的,而后缀0.8.2则表示为我们的cocos2d-x接口的版本号。
Cocos2dxSimpleGame的源码在这里下载:
http://www.cocos2d-x.org/attachments/535/Cocos2dxSimpleGame-0.9.1.rar
这个源码我已经在cocos2d-1.0.1-x-0.9.1上测试过了。
让我们开始吧。你可以从下面的目录直接跳到你所用的平台。
第一章 —— 如何在多种平台上创建新的cocos2d-x项目
1 从win32开始
1.2在VisualStudio上安装Wizard
1.3 创建一个新的cocos2d-win32 项目
1.4 编译并运行
1.5 运气差的人可以参考这里
2 从沃Phone开始
3 从iPhone开始
4 从Android开始
4.1 Windows下
4.1.1 创建项目
4.1.2 编译原生代码
4.1.3 把项目移入eclipse
4.1.4 编译java代码并运行
4.2 Linux下
1.从win32 开始
Cocos2d-win32 接口已在WinXp+VistualStudio2008/2010下测试正常。但在vista/win7下,我无法保证它运行良好。如果你根据教程,还是无法正常运行cocos2d-win32接口,这里有篇参考。
1.2在VisualStudio上安装Wizard
在你下载并解压完源码包之后,找到cocos2d-x 文件夹,点击“build-win32.bat”来编译整个项目,之后点击“install-templates-msvc.bat”来安装wizard。bat脚本会自动对应vs2008或者2010。更多细节,请参考这篇文档Coscos2d-x Application Wizard for Visual Studio 用户指导
1.3 创建一个新的cocos2d-win32 项目
现在你可以通过VS2008打开cocos2d-x/cocos2d-win32.vs2008.sln,我们可以从这看到库文件。
右键点击“Solution ’cocos2d-win32.vc2008’”,之后选择“Add->New Project”,
选择“cocos2d-x -> cocos2d-win32 Application”,在Name一栏写上“Cocos2dxSimpleGame”,并使用默认的路径设置。
备注:在win32&沃Phone接口,游戏的路径必须放下cocos2d-x的根目录下。
点击“OK->Next”,不勾选 Box2D,因为Cocos2dSimpleGame不使用物理系统。请确保“SimpleAudioEngine in CocosDenshion”是勾选的,之后点“Finished”。
1.4 编译并运行
现在我们可以看到“Cocos2dSimpleGame.win32”已经创建好了,我们的游戏现在依赖于libcocos2d & libCocosDenshion这两个库。
好,编译并运行,通常情况下,如果你不是运气那么差的话,你会看到下面这张图。
1.5 运气差的人可以参考这里
或许有些人不能成功地在win32上运行这个HelloWorld模板,这是因为cocos2d-win32接口基于PowerVR OpenGL ES 1.1 SDK for PC Emulation(Windows vista/XP 版)
http://www.imgtec.com/PowerVR/insider/sdkdownloads/index.asp#GLES1b
我们把PowerVR的库集成到了路径
cocos2d-x-root/cocos2dx/platform/win32/third_party/libraries里
因此:
对于win7用户:PowerVR还没有发布Windows 7的接口。但你依然可以试一试。许多论坛里的win7 用户成功运行过这个例子。
对于winxp/vista 用户:如果HelloWorld因为任何glXXX或者eglXXX函数而崩溃,请更新你的显卡驱动,去NVIDIA/ATI/INTEL的网站找到最新的驱动。
对于运气差的用户:你可以动手在Xcode里创建cocos2d-x 项目,或者去教堂/庙里拜拜找点运气:P
2.从沃Phone开始
如果你是一位沃Phone开发者,以上的win32步骤同样适用于你。仅有3处不同:
1. 你必须把cocos2d-x-root设置到D:/Work7目录里,沃Phone有严格的app 路径要求。
2. 请用VS2008打开D:/Work7/cocos2d-x/cocos2d-wophone.sln,而不是cocos2d-win32
3. 请在“Add New Project”对话框里选择“cocos2d-wophone application”,如下所示
而cocos2d-wophone的 HelloWorld编译运行后的结果如下
3.从iPhone开始
我们从0.8.2版开始就有了对应Xcode的模板。你可以像创建cocos2d-iphone项目那样简单地来创建cocos2d-x项目。首先,找到cocos2d-x的根目录,之后在mac的shell下运行install-templates.sh
/install-templates-xcode.sh -u -f |
你可以在这里选择你的Xcode版本,xcode3或是xcode4。
安装完成之后,你就可以打开Xcode,之后点击“Creat a new Xcode project”。你会看到这个对话框
选择“cocos2d-x application”,之后点“choose”,输入项目的名称。Xcode将会帮你创建好cocos2d-x的项目。
请注意,iOS的cocos2d-x项目可以在任何你想要的地方被创建。Xcode里的wizard会复制所有cocos2dx、CocosDenshion等库到项目的文件夹里。这和VisualStudio上win32&沃Phone的wizard不同。
好了,之后编译运行,你会看到如下的HelloWorld效果图
4.从Android开始
Ndk中Android的项目有两部分,一个对应的是java,另一个对应c++。我们将会运行creat-android-project.bat(或者在linux下运行create-android-project.sh)来创建Android ndk项目。
4.1 Windows下
4.1.1创建项目
“create-android-project.bat”在cocos2d-x的根目录里。你应该根据你的环境做一些改动。
为了适应我的配置环境,我在create-android-project.bat里改动一些设置。
set_CYGBIN=C:\cygwin\bin
Cygwin bin的路径
set_ANDROIDTOOLS=D:\android\android-sdk-windows\tools
android sdk tools的路径
set_NDKROOT=D:\android\android-ndk-r5b
ndk的根目录
现在你就可以运行“create-android-project.bat”来创建一个android项目:
进入cocos2d-x的根目录,双击create-android-project.bat,输入项目的名称以及target id,如下所示
在版本0.8.2之后,你可能会被要求键入package的路径,路径的格式为:org.cocos2dx.Cocos2dxSimpleGame。
target id 根据不同的环境有不同的区别,你应当确保输入有效的target id。目前cocos2dx支持2.1-update1和Android2.2,其他版本还未测试过。
4.1.2编译原生代码
现在你可以在cocos2d-x的根目录下看到一个命名为“Cocos2dxSimpleGame”的文件夹,运行你的cygwin,之后进去“Cocos2dxSimpleGame/android”,之后运行“build_native.sh”。
4.1.3把项目移入到eclipse
运行你的eclipse,点击 File->New->Project->Android Project,之后像下面这样移入项目
4.1.4编译java代码并运行
右击项目并选“Build Project”,之后右击项目并选“Run As”->“Android Application”。之后你就会看到如下结果:
4.2 Linux下
你应该运行“creat-android-project.sh”来创建Android项目,其他步骤同windows下一样。
你应该在你的环境下定义一些环境变量来运行“create-android-project.sh”。
初始化一些环境变量。
NDK_ROOT
ndk的根目录
ANDROID_SDK_ROOT
android sdk的根目录