`
wangliang0209
  • 浏览: 23997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android游戏开发之入门

 
阅读更多

首先工具列表

        cocos2d-x(引擎)

        vs 2010 (C++开发)

        cygwin(linux环境 由于网络版本太大,用的是本地安装版本)

        android SDK NDK

步骤:(注意我的操作系统为win7)

1.下载cocos2d-x 官方地址为:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download

2.下载下来解压存放于一个目录中(注意此目录不能有空格,否则后面创建目录工程时,会创建失败的)

3.在win32下编译 cocos2d-x 

   为了生成windows下需要的lib、dll文件,我们需要编译一次,cocos2d-x下有vs2010的解决方案,直接打开然后对整个项目重新生成,如果顺利的话,在Debug.win32目录会有生成一推文件,有些是demo。

4.可以看到此目录下已经编译成功的coco2d-x项目,可以运行一些exe文件,如果打开没有资源,只需要复制资源到Debug.win32下就好

5.下来我们为自己真正创建属于自己的cocos2d-x的win 32项目

// Additional Inlcude Directories
            var strAddIncludeDir = '.;..\\Classes';
            strAddIncludeDir  = ';..\\..\\cocos2dx';
            strAddIncludeDir  = ';..\\..\\cocos2dx\\actions';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\base_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\cocoa';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\effects';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\include';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\kazmath\\include';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\keypad_dispatcher';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\label_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\layers_scenes_transitions_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\menu_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\misc_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\particle_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\script_support';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\shaders';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\sprite_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\support';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\text_input_node';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\textures';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\tileMap_parallax_nodes';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\touch_dispatcher';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\platform';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\platform\\win32';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\platform\\third_party\\win32';
                        strAddIncludeDir  = ';..\\..\\cocos2dx\\platform\\third_party\\win32\\OGLES';
            
            if (wizard.FindSymbol('CC_USE_BOX2D')) {
                strAddIncludeDir  = ';..\\..\\';
            }
            if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
                strAddIncludeDir  = ';..\\..\\chipmunk\\include\\chipmunk';
            }
            if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
                strAddIncludeDir  = ';..\\..\\CocosDenshion\\Include';
            }
            if (wizard.FindSymbol('CC_USE_LUA')) {
                strAddIncludeDir  = ';..\\..\\lua\\cocos2dx_support';
                strAddIncludeDir  = ';..\\..\\lua\\tolua';
                strAddIncludeDir  = ';..\\..\\lua\\lua';

 

function GetTargetName(strName, strProjectName) {
    try {
        var strTarget = strName;

        var nIndex = strName.indexOf("root");

        if (nIndex >= 0) {
            strTarget = strName.substring(0, nIndex)   strProjectName   strName.substring(nIndex   4, strName.length);
        }

        var strTemp = "http://www.cnblogs.com/http://www.cnblogs.com/../lua";//这个也要修改下路径
        nIndex = strTarget.indexOf(strTemp);
        if (nIndex >= 0) {
            strTarget = "Classes"   strTarget.substring(nIndex   strTemp.length, strTarget.length);
        }

        return strTarget;
    }
    catch (e) {
        throw e;
    }
}

 即如果用默认模板安装的话,必须使用自带的解决方案,在此基础上添加工程的方法创建新的项目,但如果我们要经常做很多不关的cocos2d-x项目,这样后面岂不是要在一个解决方案管理或者复制粘贴多次原来的解决方案,这明显是不合理的,所以可以见此脚本中的相对路径的地方都改为我们cocos2d-x源码存放的绝对路径。主要有以下几处:

// Additional Inlcude Directories
            var strAddIncludeDir = '.;..\\Classes';
            strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx';
            strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\actions';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\base_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\cocoa';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\effects';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\include';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\kazmath\\include';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\keypad_dispatcher';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\label_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\layers_scenes_transitions_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\menu_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\misc_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\particle_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\script_support';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\shaders';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\sprite_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\support';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\text_input_node';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\textures';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\tileMap_parallax_nodes';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\touch_dispatcher';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\platform';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\platform\\win32';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\platform\\third_party\\win32';
                        strAddIncludeDir  = ';G:\\Cocos2d-x\\cocos2dx\\platform\\third_party\\win32\\OGLES';
            
            if (wizard.FindSymbol('CC_USE_BOX2D')) {
                strAddIncludeDir  = ';G:\\Cocos2d-x\\';
            }
            if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
                strAddIncludeDir  = ';G:\\Cocos2d-x\\chipmunk\\include\\chipmunk';
            }
            if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
                strAddIncludeDir  = ';G:\\Cocos2d-x\\CocosDenshion\\Include';
            }
            if (wizard.FindSymbol('CC_USE_LUA')) {
                strAddIncludeDir  = ';G:\\Cocos2d-x\\lua\\cocos2dx_support';
                strAddIncludeDir  = ';G:\\Cocos2d-x\\lua\\tolua';
                strAddIncludeDir  = ';G:\\Cocos2d-x\\lua\\lua';
            }

 

function GetTargetName(strName, strProjectName) {
    try {
        var strTarget = strName;

        var nIndex = strName.indexOf("root");

        if (nIndex >= 0) {
            strTarget = strName.substring(0, nIndex)   strProjectName   strName.substring(nIndex   4, strName.length);
        }

        var strTemp = "G:/Cocos2d-x/lua/lua";
        nIndex = strTarget.indexOf(strTemp);
        if (nIndex >= 0) {
            strTarget = "Classes"   strTarget.substring(nIndex   strTemp.length, strTarget.length);
        }

        return strTarget;
    }
    catch (e) {
        throw e;
    }
}

 修改完毕,给vs 2010安装工程模板,双击G:\cocos2d-x目录下的install-templates-msvc.bat文件,会执行一些bat处理命令,windows 7环境中途会出现一写权限控制的对话框,选择Y即可,这样以后每次cocos2d-x版本升级,我们直接替换G:\cocos2d-x目录下的文件,并重新编译即可。

6、打开vs 2010,新建项目如果可以出现以下选项,说明工程以安装到vs2010了

7.(注意很重要)创建cocos2d-x项目之后我们f5运行发现报错:错误 3 error LNK1104: 无法打开文件“libcocos2d.lib” G:\MyWork\Cocos2d-x application\HelloCocos2d\HelloCocos2d\proj.win32\LINK HelloCocos2d.win32

即我们没将之前编译cocos2d-x项目生产的Lib包没放到HelloCocos2d项目下,将

G:\cocos2d-x\Debug.win32 下所有.lib和dll文件复制到HelloCocos2d\Debug.win32目录下即可(Tips:为了后续再次创建cocos2d-x win32项目都复制这些dll文件到项目路径下,可以将其全部复制到系统的system32目录下)。

 

8.用cocos2d-x目录下的create-android-project.bat创建项目, 包名及项目名自己定义 然后选择你机器中存在的2.0以上的sdk,这样项目应该就会生成了,在cocos2d-x下以项目名为目录。打开之后里边应该有三个目录,其中的Classes为C++代码,Resources中为游戏需要的资源,proj.android目录就是我们的项目。

================================================

下面说下如何交叉编译android项目

1.create-android-project.bat下的 _CYGBIN  _ANDROIDTOOLS 及_NDKROOT分别对应于cygwin\bin android-sdk\tools 和ndk目录 修改完成保存。包名及项目名自己定义 然后选择你机器中存在的2.0以上的sdk,这样项目应该就会生成了,在cocos2d-x下以项目名为目录。如何你编辑好游戏了,用你自己的classes文件盒resouces文件替换掉他们。

进入jni文件中的Android.mk中添加你自己项目的.cpp文件

2.然后用Cygwin进入到项目目录,注意这里的build_native.sh文件,运行它 如果提示NDK目录没指定,编辑这个文件,设置NDK变量为本机NDK目录 这样再运行就可以跑了,但是如果是win7的话还要注意权限的问题,最好cygwin运行的时候以管理员身份运行。如果编译成功的话会注册一个libgame.so文件,这样就可以运行项目到android手机上了。

注意 cocos2dx交叉编译android时出现make: *** [obj/local/armeabi bgame.so] Error 1 可能更新下NDK就好了

到此算是能够搭建起android游戏了,以后注意力会放在cocos2d-x游戏的开发,多数都是C++的东西

 

 

 

 

 

 

分享到:
评论

相关推荐

    android游戏开发入门

    总之,Android游戏开发入门涉及众多方面,从环境配置到游戏设计,再到性能优化和网络通信,每一步都需要扎实的学习和实践。通过不断学习和项目实践,你将能够掌握开发出吸引人的Android游戏所需的知识和技能。在jb51...

    Android 游戏开发入门随书光盘的代码

    总的来说,"Android 游戏开发入门随书光盘的代码"是一个宝贵的教育资源,它将帮助新手深入理解Android游戏开发的各个环节,从基础的编程语言到复杂的系统交互,从单一的游戏元素到整个游戏世界的构建。通过实际操作...

    Android游戏开发从入门到精通

    "Android游戏开发从入门到精通"的主题旨在为开发者提供一套全面的学习路径,从基础概念到高级技术,帮助他们掌握创建引人入胜的移动游戏所需的知识。 首先,Android游戏开发的基础是Java或Kotlin编程语言,这两种...

    Android高级应用源码-Android 游戏开发入门随书光盘的代码.zip

    《Android游戏开发入门》这本书是Android开发者们学习游戏开发的重要参考资料。随书附带的光盘代码库,包含了丰富的Android游戏开发源码,是深入理解Android游戏编程的关键。本压缩包"Android高级应用源码-Android ...

    android游戏开发入门级经典实例

    "android游戏开发入门级经典实例"这个主题旨在为初学者提供简单易懂的游戏开发实践,帮助他们快速进入Android游戏开发的世界。虽然这个实例集要求学习者具备一定的J2SE(Java 2 Platform, Standard Edition)基础,...

    android游戏开发基础视频

    http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33844107?Android游戏及应用开发之2? http://video.sina.com.cn/playlist/4003320-1320045357-1.html#33845175?Android游戏及应用开发之3? ...

    Android 游戏开发入门

    《Android 游戏开发入门》是一本由Mario Zechner编写的书籍,主要针对初学者,旨在引导读者踏入Android游戏开发的世界。这本书涵盖了从基础知识到实际应用的各种关键知识点,为有志于在移动平台开发游戏的程序员提供...

    android游戏开发从入门到应用实例

    4-16-1(游戏保存之SharedPreference) 4-16-2(游戏保存之Stream) 4-3(View游戏框架) 4-4(SurfaceView游戏框架) 4-7-1(贝塞尔曲线) 4-7-2(Canvas画布) 4-8(Paint画笔) 4-9(Bitmap位图渲染与操作) 5-1(飞行射击游戏实战...

    Android.游戏开发入门

    《Android游戏开发入门》是由(美)Mario Zechner撰写的一本专为初学者准备的指南,它旨在帮助读者理解并掌握如何在Android平台上构建游戏。这本书深入浅出地介绍了Android游戏开发的基础知识,涵盖了从游戏设计概念...

    android 3D游戏开发入门电子书

    总的来说,"3D游戏程序设计入门"电子书会全面覆盖Android 3D游戏开发的基本概念、关键技术、实战技巧,是初学者的绝佳参考资料。通过学习,你可以掌握从3D模型的加载、场景构建到游戏逻辑实现的全过程,逐步成长为一...

Global site tag (gtag.js) - Google Analytics