恩利游戏网

您现在的位置是: 首页 > 游戏教程

文章内容

cocos2d 塔防游戏源码_cocos creator塔防游戏

zmhk 2024-06-18
cocos2d 塔防游戏源码_cocos creator塔防游戏       对于cocos2d 塔防游戏源码的问题,我有一些经验和见解,同时也了解到一些专业知识。希望我的回答对您有所帮助。1.使用 Cocos2d-x引
cocos2d 塔防游戏源码_cocos creator塔防游戏

       对于cocos2d 塔防游戏源码的问题,我有一些经验和见解,同时也了解到一些专业知识。希望我的回答对您有所帮助。

1.使用 Cocos2d-x引擎开发的游戏有哪些?

2.如何自定义 Cocos2d-html5 Loading 界面

3.cocos2d是一个前端框架吗

4.介绍几款好的游戏制作软件

5.Cocos2D-X游戏开发技术精解的作品目录

6.如何使用Code IDE调试Cocos2d-JS开发的游戏

cocos2d 塔防游戏源码_cocos creator塔防游戏

使用 Cocos2d-x引擎开发的游戏有哪些?

       《捕鱼达人》、《三国塔防-蜀传》、《口袋站界:魔界勇士》、《胡莱三国》、《三国群殴传》等,包括人人网、空中网、4399、网龙、Haypi、Tinyco、完美世界等国内外领先的游戏开发公司,都在使用Cocos2d-x开发手机游戏。

如何自定义 Cocos2d-html5 Loading 界面

       刚巧我也是从AS3转到了cocos2d-x,说说我的经验吧。

       一、 cocos2d-x 部分

       1.1 技术选型

       从第三个手游开始,我实在被Adobe的ANE和国内的小平台折腾得没了脾气,决定转到cocos2d-x。在选择哪种语言绑定的时候纠结了很久,最后力排众议选了 lua:Cocos2d-x script language binding:Lua or Javascript? 。cocos2d-x 2.x 的lua绑定做得并不好,于是我选择了 quick-cocos2d-x 。

       1.2 学习 C++

       《C++ Primer》 是不错的入门书籍,建议看第五版,我写过一篇 C++Primer 第4版和第5版比较 。学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):

       1.3 学习DEMO和熟悉开发平台。

       编译 cocos2d-x 自带的 TestCPP 项目,全部跑一遍。熟悉 cocos2d-x API 的用法。记得生成文档,建议每个API的功能都浏览一遍。

       在学习DEMO的过程中,你还必须熟悉自己开发平台的IDE,例如Windows上必须熟悉 Visual Studio,而OS X上必须熟悉xcode,Linux平台上就熟悉Eclipse+CDT吧。

       注意,quick-cocos2d-x 是不支持Linux开发平台的。

       1.4 了解引擎的文件夹结构

       基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下 cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。

       下面是我的分析:

       1.5 重复上面的第3步:再次学习DEMO

       这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。我推荐一些我看过的不错的文档和博客:

       Cocos2d-x 多分辨率适配完全解析

       Cocos2d-x官方中文文档 v2.x

       子龙山人 – 博客园

       红孩儿的游戏编程之路

       Cocos2D | iOS Development Tips & Tricks by BiOM

       Ray Wenderlich

       Cocos2d-x | Cross Platform Open Source 2D Game Engine

       许多博客都是极好的。红孩儿 写了许多源码分析,每一句源码都加了详细注释。虽然我不太认同他这种吃力不讨好的方法,但这对于新手来说确实是有很大帮助的。

       另外在 Stack Overflow 你能找到绝大部分问题的答案。当然,许多问题是针对 cocos2d 而非 cocos2d-x 的,不过用法相同,照看不误。许多优秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天时间熟悉 OC 的语法,能看懂即可。

       暂时不要买中文书。我曾经花3天时间看完了 《Cocos2D-X游戏开发技术精解》 和 《cocos2d-x手机游戏开发–跨iOS、Android和沃Phone平台》 ,发现作者其实就是来赚稿费的。

       忘了广告了,我的博客(cocos2d-x | zrong’s Blog)也有一些cocos2d-x内容,欢迎来喷。

       1.6 熟悉工具集

       现在你应该对周边工具感兴趣了。例如帧动画使用什么制作?BMFont使用什么制作?骨骼动画呢?plist文件怎么编辑?碎图用什么工具拼合?有些项目上,你有许多选择,也可能没得选。去Google吧,如果遇到选择上的问题,欢迎找我讨论。

       二、 quick-cocos2d-x 部分

       2.1 现在就到lua时间了

       请认真读完 《Lua程序设计(第2版) 》 第一、二、三部分。第四部分可暂时不读。

       2.2 熟悉 quick-cocos2d-x 的文件夹结构

       相信有了上面 cocos2d-x 的基础,这个应该不难理解。

       2.3 跑完 quick-cocos2d-x 自带的所有sample

       在这期间,熟悉 framework 中的所有封装。可以参考 quick网站 和 quick wiki 。

       2.4 学习导出API给Lua使用

       导出 C/C++ API 给 Lua 使用

       三、学习 OpenGL ES

       熟悉Lua部分之后,作为一个有志于成为程序员的码农,依然要回到C++来,这里才是 cocos2d-x 的本质。

       cocos2d-x 使用 OpenGL ES 进行渲染的,如果要对 cocos2d-x 的渲染层进行任何形式的扩展,你完全避不开 OpenGL ES。

       既然逃不开,那就对她说,请张开双腿,我要上。

       3.1 阅读 OpenGL ES 2.0 Programming Guide

       下面是这本书的官网,目前已经出了 OpenGL ES 3.0 版本,cocos2d-x 使用的是2.0。

       /es2/index.html

       这本书写得浅显易懂,非常适合新手。有位网友花3个月时间翻译了中文版,但还是建议你不要看了。

       这里是 OpenGL ES 的 官方文档 和 API中文翻译 。

       当然,你也可以买那本著名的 OpenGL 红宝书 《OpenGL编程指南(原书第7版)》 来看,不过 OpenGL ES 相对与 OpenGL 来说还是有一些不同的,你要知道如何区分这些不同。

       3.2 尝试理解 cocos2d-x 的渲染部分架构

       相关的类我就不列出了,我正在酝酿一个这方面的系列文章准备发到博客上。如果写完了,我会在这里更新。

       3.3 自己写一些滤镜、绘图功能的扩展

       例如这个: cocos2d-x-filters

       四、回归项目

       到了这里,你可以开始你的项目了。虽然源码还没有读完,但相信整个架构都能理解了。在做项目的过程中,再去一点点读源码是比较快捷和我能够接受的方法,否则就太枯燥了。

       你可以还需要选择一下cocos2d-x相关的工具。你可能听说过 CCB(cocosBuilder)和CCS(cocoStudio),尝试了解她们,再决定是否使用她们。

       你已经有了AS3的基础,这样许多前端的概念和经验已经很丰富了。这些经验在cocos2d-x中同样适用。但是要注意的是,cocos2d-x不是AS3,不要试图用AS3的方法去使用cocos2d-x。

       有位码农在从C#转到AS3的时候向我抱怨:为什么Flash Builder没有Visual Studio的这个功能那个功能?

       然后这位码农在从AS3转到Sublime Text(用于Lua编辑)的时候向我抱怨,为什么Sublime Text没有Flash Builder的这个功能那个功能?

       上面是个笑话。

       同时,为了解决一些cocos2d-x没有提供的功能,你必须去学习相关的知识。例如这个:在 cocos2d-x 中使用 libcurl 实现上传文件功能(附quick-cocos2d-x封装) 。不过你现在已经有了基础,学习这些不是难事。

       在有时间的时候,可认真读一下上面提到的《Lua程序设计(第2版) 》第四部分,了解Lua和C语言通信的方式,顺便看看cocos2d-x里面是怎么实现的。

       另外,一些你需要的引擎中没有的功能,也可以顺手实现了开源出来(例如这个: 一个LuaSocket封装 ),说不定你需要的东西正好是别人也需要的。

       五、熟悉发布平台

       既然是做手游,Android和iOS平台是逃不掉了。

       你要熟悉Android和iOS平台的特点,熟悉JAVA语言在Android上的应用,熟悉Objective-C在iOS上的应用,熟悉Eclipse ADT和XCode(上面应该已经熟悉过了)。

       你还要熟悉Google Play和AppStore的发布流程以及方针、政策,内购的接入、SDK的嵌入。

       你要学习和各个接入平台的程序员、商务、前台小妹打交道(因为经常会找不到你要找的真正的负责该SDK的技术人员),你要能忍受国内小平台糟糕的文档、代码规范和逆天的编程方法。

       终、没有终点

       上面说的并不完整,应该遗漏了不少东西,但我只能说这么多了。因为我的经验也止于此。

       转载,仅供参考,祝你愉快,满意请采纳。

cocos2d是一个前端框架吗

       自定义 Cocos2d-html5 Loading 界面的方法:

       自定义一个 Loader.js 文件,实现 Loader 类,完成自定义Loading?界面的具体实现,可以参考LoaderScene 的实现,在其上修改扩充,它完成了修改 Logo ,并添加了一个简单的精度条,是加载过程更为一目了然,这里并没有多么炫的效果,只是自定义一个 Loading 界面源码如下:

       Loading = cc.Scene.extend(

        _logo: null,

        _logoTexture: null,

        _texture2d: null,

        _bgLayer: null,

        _label: null,

        _winSize:null,

        _processLayer: null, // 相比 LoaderScene ?的实现,添加了两个属性,标示进度条层和进度条长度

        _processLayerLength: null,

        // 构造函数

        ctor: function () {

        this._super();

        this._winSize = cc.Director.getInstance().getWinSize();

        },

        init:function(){

        cc.Scene.prototype.init.call(this);

        // logo 和 label 的添加 .. 这里省略,于 LoaderScene 同样

        // 设置进度条层,它就是一个红色颜色层,通过长度来标示加载的进度

        this._processLayerLength = 500;

        this._processLayer = cc.LayerColor.create(cc.c4b(255, 100, 100, 128), 1, 30);

        this._processLayer.setPosition(cc.pAdd(centerPos, cc.p(- this._processLayerLength / 2, -logoHeight / 2 - 50)));

        // 可以启用锚点,并设置以满足自己的需要

        // this._processLayer.ignoreAnchorPointForPosition(false);

        // this._processLayer.setAnchorPoint(cc.p(0, 0));

        this._bgLayer.addChild(this._processLayer);

        }

       实现LoaderScene方法:

       Loading.preload = function (resources, selector, target) {

        if (!this._instance) {

        // 创建一个 Loading

        this._instance = new Loading();

        this._instance.init();

        }

        // ...

        return this._instance;

       };

       运行效果:

介绍几款好的游戏制作软件

       说是前端框架不够确切。cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。

       cocos2d-js是cocos2d-x的JavaScript版本,真正跨全平台的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windows Phone8,Mac,Windows等平台。

       利用cocos2d-js开发HTML5游戏/动画,我们可以通过SDK也可以直接使用js类库。下载类库后新建HTML页面,引入相应类库,在onload之后,编写cocos2d-js代码,从cc.game.run()开始。入口代码其实跟SDK开发方式的main.js一样。这里更推荐使用SDK方式,因为可以通过阅读源代码获取API的使用说明。

Cocos2D-X游戏开发技术精解的作品目录

       一款游戏的核心就在于引擎,好的游戏引擎可以让游戏工作事半功倍,提升游戏质量,并且可以大大提升游戏玩家的体验度。那么,市面上有哪些好的游戏引擎呢?

       虚幻引擎(UNREAL ENGINE)

       尽管市面上有许多游戏引擎,但最好的游戏引擎之一是虚幻引擎Unreal Engine。一种专为各种规模的游戏开发者的多平台引擎,可以将创意转化为视觉内容。作为最流行和广泛使用的游戏引擎之一,它可以实时的降技术创意转化为引人入胜的视觉内容。

       虚幻引擎原始版本发布于 1998 年,19 年后它用于一些大型游戏。它的优势在于能够进行足够的修改,可以将游戏制作变成非常独特的体验。所以,适用于有丰富经验的游戏开发人员。

       2022 年ue 5 正式发布,它已然成为游戏开发的规则改变者。大多数下一代游戏机,包括 PlayStation 5 和 Xbox Series X 都在使用它,UE正在彻底改变游戏行业。

       优势:可扩展性、功能强大、丰富的定制能力、2D 和 3D。

       亚马逊伐木场(Lumberyard)

       从产品名称可以看出,Lumberyard 是亚马逊的综合产品。这是一个 3D 游戏引擎,旨在建立游戏和粉丝社区。它提供 VR 预览模式、可视化脚本工具以及 Twitch 集成。

       哭泣引擎(CryENGINE)

       CryENGINE 是一个免费使用平台,您可以在其中获得完整的引擎源代码和所有引擎功能,而无需支付任何许可费用。这也是购买游戏内资产的绝佳选择。

       CryEngine 还提供了大量免费的学习资源,尽管它们的有效性很短,但是对于游戏开发初学者而且的确很实用。

       优势:坚实的界面、令人惊叹的视觉能力、令人印象深刻的 VR 支持。

       统一引擎(UNITY)

       Unity 是一个多平台游戏引擎,可轻松创建交互式 3D 内容。因其出色的功能、高质量的内容以及可用于任何类型游戏的能力而成为当今许多游戏开发公司的选择。 它支持 2D 和 3D 内容。凭借其一体化编辑器,Unity 兼容 Windows、Mac、Linux、IOS、Android、Switch、Xbox、PS4、Tizen 和其他平台。友好的编辑界面使开发更容易,并减少了培训的需求。

       优势:免费版本,多平台支持,适合各种规模的团队,2D 和 3D

       游戏工作者-工作室(GameMakerP)

       GameMaker 已被广泛使用,因为它不需要编程知识就可以使用。相反,用户可以“点击”来创建游戏,这比使用本地语言编码要快得多。适用于一些刚入门的游戏开发者。

       GameMaker 和其他点击式引擎的问题在于,开发人员比其他引擎更受限制。

       戈多(GODOT)

       Godot 可以免费使用,并且通过 MIT 许可证开源。没有版税,没有订阅费,没有隐藏的字符串。Godot 引擎非常适合制作 2D 和 3D 游戏。该引擎提供了大量常用工具,因此您可以专注于制作游戏而无需重新发明轮子。

       Godot 拥有一个不断修复错误和开发新功能的社区。一个活跃的社区意味着对您最具体的 Godot 相关问题的回答。它还链接到其他Internet HUBS,包括 Reddit 论坛、Facebook 群组、Steam 社区、Godot 论坛等。

       Cocos2d

       Cocos2d 的所有版本都使用称为sprite的基本原语工作。精灵被认为是一个简单的 2D 图像,但也可以是其他精灵的容器。精灵排列在一起形成一个场景,如游戏关卡或菜单,然后根据事件、动作或动画对精灵进行代码操作。

       Cocos2d-x支持 iOS、Android、Tizen、Windows、Linux 和 MacOS,API 语言包括 C++、Lua 和 Javascript

       缺点是功能有限,仅限 2D,不是大型工作室的最佳选择。

如何使用Code IDE调试Cocos2d-JS开发的游戏

       目 录  第1章 Cocos2D-X引擎的介绍 1  1.1 何为游戏引擎 1  1.1.1 游戏的核心—引擎 1  1.1.2 引擎的特点 2  1.1.3 知名的引擎介绍 4  1.1.4 引擎的分类 5  1.2 Cocos2D-X引擎的来历 8  1.3 引擎的版本 9  1.4 下载与安装 10  1.5 引擎的组成 13  1.6 技术文档 15  1.7 成功的游戏 17  1.8 Cocos2D-X引擎的体系 18  1.9 Cocos2D-X引擎的版权声明 19  1.10 本章小结 20  第2章 Cocos2D-X引擎的 开发环境 21  2.1 跨平台的开发 21  2.2 建立开发环境 23  2.2.1 PC开发环境 23  2.2.2 Android开发环境 26  2.2.3 iOS开发环境 35  2.3 引擎中的混合编译 38  2.3.1 Java与C++的混合编译 38  2.3.2 Objective-C与C++的混合编译 41  2.4 引擎的启点 42  2.4.1 应用程序入口 43  2.4.2 引擎应用入口 44  2.5 丰富的示例程序 46  2.5.1 TestCpp示例项目 46  2.5.2 脚本示例项目 47  2.5.3 MoonWarriors示例项目 47  2.6 本章小结 48  第3章 引擎的核心——渲染框架 49  3.1 基本框架 50  3.1.1 引擎的位置 50  3.1.2 根源种子 51  3.1.3 子类结构 57  3.2 渲染框架 57  3.2.1 框架结构 58  3.2.2 摄像机类(CCCamera) 59  3.2.3 导演类(CCDirector) 59  3.2.4 场景类(CCScene) 62  3.2.5 图层类(CCLayer) 64  3.2.6 精灵类(CCSprite) 68  3.2.7 精灵集合类(CCSpriteBatchNode) 72  3.2.8 精灵帧缓冲(CCSpriteFrameCache) 74  3.2.9 Zwoptex纹理编辑器 76  3.3 文字与字体 80  3.3.1 TTF类型标签(CCLabelTTF) 81  3.3.2 BMFont标签类(CCLabelBMFont) 84  3.3.3 Atlas标签类(CCLabelAtlas) 87  3.4 菜单按钮 89  3.5 几何绘制DrawPrimitives 94  3.6 CocosBuilder编辑器 95  3.6.1 CocosBuilder使用指南 95  3.6.2 引擎中的应用 97  3.7 本章小结 98  第4章 动作功能 100  4.1 概述 100  4.2 动作基类 101  4.2.1 动作类的继承关系 102  4.2.2 动作基类CCAction的成员函数 102  4.2.3 类CCNode中与动作有关的函数 104  4.3 时间动作 105  4.3.1 及时动作 105  4.3.2 持续动作 109  4.4 组合动作类 116  4.4.1 序列动作类(CCSequence) 116  4.4.2 同步动作类(CCSpawn) 118  4.4.3 重复动作类(CCRepeat & CCRepeatForever) 119  4.5 可变速度类(CCEaseAction) 120  4.5.1 CCEaseIn、CCEaseOut和CCEaseInOut 122  4.5.2 EaseSineIn、EaseSineOut和EaseSineInOut 124  4.5.3 CCEaseBackIn、CCEaseBackOut和CCEaseBackInOut 124  4.5.4 EaseExponentialIn、EaseExponentialOut和EaseExponentialInOut 125  4.5.5 CCEaseBounceIn、CCBounceOut和CCBounceInOut 125  4.5.6 CCEaseElasticIn、CCEaseElasticOut和CCEaseElasticInOut 125  4.6 速度类(CCSpeed) 125  4.7 延迟动作类(CCDelay) 127  4.8 跟随动作类(CCFollow) 128  4.9 扩展动作类 129  4.9.1 概述 129  4.9.2 翻页动作(CCPageTurn3D) 130  4.9.3 波纹动作(CCWaves3D) 130  4.9.4 格子动作类(CCGridAction) 131  4.10 动画动作类 132  4.10.1 精灵帧 133  4.10.2 精灵帧缓冲 134  4.10.3 动画类 135  4.10.4 动画动作 136  4.11 动画编辑器 136  4.11.1 概述 136  4.11.2 CocosBuilder编辑器中的精灵动画 137  4.11.3 SpriteX草莓编辑器 138  4.11.4 MotionWelder动画编辑器 139  4.12 样例程序 141  4.13 本章小结 143  第5章 用户交互 147  5.1 概述 147  5.2 玩家交互信息 149  5.3 触摸操作的处理机制 149  5.4 接收操作 153  5.5 分发机制 154  5.6 处理响应 157  5.7 多点触碰 159  5.8 加速计的响应函数 161  5.9 本章小结 162  第6章 游戏背景 164  6.1 概述 164  6.2 2D游戏背景的类型 164  6.3 砖块地图编辑器 166  6.3.1 地图编辑器概述 167  6.3.2 Tile Map Editor(砖块地图编辑器) 168  6.3.3 制作一张游戏地图 170  6.3.4 编辑器中的属性功能 172  6.4 砖块地图Tile Map 173  6.5 地图数据的格式 175  6.5.1 编辑器导出的文件 175  6.5.2 地图文件分析 176  6.6 砖块地图的实现 178  6.6.1 砖块地图类CCTMXTiledMap 179  6.6.2 地图图层类CCTMXLayer 181  6.6.3 地图物体层CCTMXObjectGroup 183  6.7 示例项目 184  6.8 背景的滚动与角色移动 186  6.9 多层背景滚动效果 188  6.10 本章小结 190  第7章 物理模拟与碰撞检测 192  7.1 概述 192  7.2 游戏中的碰撞检测 193  7.3 碰撞检测的方法 194  7.3.1 平面几何在碰撞检测中的应用 194  7.3.2 物体的包围盒 197  7.3.3 AABB碰撞检测技术 198  7.4 基本物理知识 199  7.5 你好!Box2D! 201  7.5.1 概述 201  7.5.2 物理世界 202  7.5.3 游戏中的两个世界 202  7.6 Box2D的基础知识 203  7.6.1 概述 204  7.6.2 概念定义 204  7.6.3 物理引擎的模块 205  7.7 引 擎 内 核 205  7.7.1 基本配置 206  7.7.2 内存管理机制 207  7.7.3 工厂模式 208  7.7.4 数据单位 208  7.7.5 用户数据 209  7.8 物理世界World 210  7.8.1 创建和摧毁一个世界 210  7.8.2 让世界运转起来 211  7.8.3 探索世界 212  7.8.5 AABB查询 213  7.8.6 光线投射(Ray Casts) 214  7.9 形状Shapes 216  7.9.1 碰撞模块 216  7.9.2 形状Shape的作用 216  7.9.3 圆形(Circle Shapes) 216  7.9.4 多边形(b2PolygonShape) 217  7.10 框架Fixtures 218  7.10.1 动态模块(Dynamics Module) 219  7.10.2 框架(Fixtures) 219  7.10.3 密度(Density) 219  7.10.4 摩擦(Friction) 220  7.10.5 恢复(Restitution) 220  7.10.6 筛选(Filtering) 220  7.10.7 感应器(Sensors) 221  7.11 物体Bodies 222  7.11.1 物体定义 222  7.11.2 位置和角度(Position and Angle) 223  7.11.3 阻尼(Damping) 223  7.11.4 休眠参数(Sleep Parameters) 224  7.11.5 固定旋转(Fixed Rotation) 224  7.11.6 子弹(Bullets) 224  7.11.7 活动状态(Activation) 225  7.11.8 用户数据(User Data) 226  7.12 关节(Joints) 226  7.12.1 关节的定义(JointDef) 226  7.12.2 关节的属性 227  7.12.3 距离关节(Distance Joint) 228  7.12.4 旋转关节(Revolute Joint) 229  7.12.5 移动关节(Prismatic Joint) 230  7.12.6 滑轮关节(Pulley Joint) 231  7.12.7 齿轮关节(Gear Joint) 232  7.12.8 鼠标关节(Mouse Joint) 234  7.12.9 线性关节(Line Joint) 235  7.12.10 焊接关节(Weld Joint) 235  7.13 接触(Contants) 235  7.13.1 概述 236  7.13.2 接触类(Contact Class) 237  7.13.3 访问接触(Accessing Contacts) 237  7.13.4 接触监听器(Contact Listener) 238  7.13.5 接触筛选(Contact Filtering) 240  7.14 示例项目 241  7.14.1 Box2dTest示例项目 241  7.14.2 调试绘图DebugDraw 243  7.14.3 创建精灵刚体 244  7.15 本章小结 246  第8章 游戏中的声音 249  8.1 概述 249  8.2 音乐与音效 250  8.3 声音格式 250  8.4 CocosDenshion声音模块 252  8.5 背景音乐操作函数 253  8.6 声音音效操作函数 255  8.7 示例程序 256  8.8 本章小结 259  第9章 文件操作模块 261  9.1 概述 261  9.2 引擎文件操作模块 261  9.3 读取文件 263  9.4 写入文件 267  9.5 游戏中用户数据 269  9.5.1 游戏中的用户数据 269  9.5.2 用户数据的基本类型 270  9.5.3 读取与写入操作 271  9.6 示例程序 272  9.7 本章小结 274  第10章 内存管理机制 277  10.1 内存管理概述 277  10.2 引用计数 278  10.3 自动释放池 280  10.3.1 使用方法 280  10.3.2 实现原理 281  10.4 管 理 模 式 284  10.4.1 引擎当中的应用 284  10.4.2 缓冲区 285  10.5 日志调试方式 286  10.6 本章小结 288  第11章 粒子系统 290  11.1 概述 290  11.2 粒子效果 291  11.3 粒子系统的来历 292  11.4 引擎当中的粒子系统 293  11.5 粒子的生命周期 294  11.6 粒子的属性 295  11.7 粒子发射器属性 296  11.7.1 发射器共有的属性 296  11.7.2 重力发射器模式(Gravity) 304  11.7.3 半径发射器模式(Radius) 306  11.8 粒子效果编辑器 307  11.8.1 概述 308  11.8.2 Particle Designer的使用方法 308  11.8.3 引擎中应用 310  11.9 本章小结 312  第12章 Lua脚本语言 314  12.1 概述 314  12.2 Lua脚本语言简介 315  12.3 为什么需要它? 316  12.3.1 简易性 316  12.3.2 可扩展性 316  12.3.3 高效性 317  12.3.4 可移植性 317  12.4 Lua脚本语言的语法 318  12.4.1 类型与数值 318  12.4.2 表达式 320  12.4.3 语句 322  12.4.4 函数 326  12.5 Lua在引擎中的应用 328  12.5.1 Lua与C/C++ 328  12.5.2 引擎中的脚本引擎 329  12.6 样例程序 331  12.6.1 脚本引擎初始化 332  12.6.2 游戏内容的实现脚本 333  12.6.3 农场层的实现 334  12.6.4 菜单层的实现 337  12.7 本章小结 338  第13章 Cocos2D-HTML5引擎版本 340  13.1 概述 340  13.2 HTML的发展史 341  13.2.1 HTML版本 341  13.2.2 XHTML版本 342  13.2.3 HTML5是未来之星 342  13.3 HTML5新特性 342  13.3.1 跨平台的特性 343  13.3.2 Canvas API 343  13.3.3 WebGL 344  13.3.4 其他特性 345  13.4 JavaScript语言基础 346  13.4.1 概述 346  13.4.2 变量 347  13.4.3 数据类型 348  13.4.4 运算符 348  13.4.5 语句 351  13.4.6 对象 352  13.4.7 函数 353  13.4.8 事件 354  13.5 Cocos2d-HTML5引擎 356  13.5.1 HTML5版本介绍 356  13.5.2 安装引擎 357  13.5.3 示例程序 357  13.5.4 引擎的架构 360  13.6 JS Binding技术的实现 362  13.6.1 概述 362  13.6.2 SpiderMonkey 362  13.6.3 示例程序 363  13.7 本章小结 364  第14章 引擎之外的附加功能 366  14.1 概述 366  14.2 网络通讯支持 367  14.2.1 HTTP介绍 367  14.2.2 curl库(libcurl) 368  14.2.3 HTTP在引擎中的应用 368  14.2.4 HTTP示例项目 372  14.2.5 Socket的介绍 376  14.2.6 BSD Socket在引擎中的应用 378  14.3 收费模式 379  14.3.1 下载计费 379  14.3.2 内置计费 380  14.3.3 广告版本 380  14.4 社交网络在游戏中的应用 381  14.4.1 Game Center 382  14.4.2 OpenFeint 384  14.5 数据分析 385  14.5.1 Flurry介绍 386  14.5.2 友盟 390  第15章 Cocos2D-X引擎的未来 391  15.1 概述 391  15.2 Cocos2D引擎的走势 391  15.3 Cocos2D-X引擎的不足 392  15.3.1 丰富的UI 393  15.3.2 完善的工具 393  15.3.3 支持网络通迅 395  15.3.4 版本的统一 395  15.3.5 数据安全 396  15.4 Cocos2D-X引擎增强的功能 396  15.4.1 良好的中文支持 397  15.4.2 游戏基本框架 397  15.4.3 游戏逻辑支持 398  15.4.4 脚本化编程 399  15.4.5 可视化的操作界面 400  15.5 会不会有Cocos3D? 401  15.6 本章小结 403

游戏设计需要什么软件?

       运行、测试游戏

       1. 新建一个名为 CocosJSGame 的 Cocos JavaScript 工程

       2. 点击工具栏上的 debug 按钮

       3. 默认情况下脚本会运行在我们提供的 mac 版本预编译 runtime 上。为了简单起见,我们不对默认值进行任何改动。如果你想要在其他我们支持的目标平台上调试程序,可参考下文的“在其它目标平台上调试”

       如何调试

       断点支持

       可以在 javascript 脚本文件中增加断点

       当断点被触发时选择 “Yes” 打开 Debug Perspective 透视图,可以看到很多与调试相关的视图,调用栈、变量和断点等等。

       支持 Step over, Step into, Step out 等调试方式。

       代码热更新

       想更改右下角的 close 按钮的位置?closeItem.attr 方法是控制该按钮的显示位置的。

       closeItem.attr({

       x: size.width - 20,

       y: 20,

       anchorX: 0.5,

       anchorY: 0.5

       });

       修改“x”上面的值,把"size.width-20" 改成 ""size.width/2" 然后保持修改, 你会发现,在没有重启的情况下 close 按钮的位置已经改变了,在屏幕底部的中间!

       在其他目标平台上调试

       通过工具栏上的打开 Debug Configurations 打开 Debug Configurations 页面

       在页面的左侧,选择之前我们为你创建的名为CocosJSGame的configuration

       在 iOS Simulator 上调试

       选择iOS Simulator单选项

       选择正确的runtime app

       点击 Debug 按钮,预编译的 runtime 会被自动安装到模拟器中

       在iOS设备上调试

       首先,你需要一个 runtime IPA, 从 1.0.0-rc1 版本开始,你可以通过 Code IDE 自己编译一个,然后安装IPA到设备中

       在 iOS 设备上启动 runtime

       在 "Debug Configuration" 界面选择 Remote Debug 单选项

       platform 选择 "iOS"

       将设备的 ip 地址填写在 Device IP 上

       最后点击Debug按钮

       在 Android 设备上使用 ADB 模式调试

       在 "Debug Configuration" 界面选择 Android ADB Mode 单选项

       选择正确的 runtime apk

       点击Debug按钮

       IDE 会自动安装配置中的 runtime apk 到你的连接设备上并启动runtime开始调试

       在 Android 设备上使用网络模式调试

       手动安装 runtime 到你的设备上,它被存放在 CocosLuaGame/runtime/android 目录中

       手动启动 runtime,停留在 waiting 页面

       在 "Debug Configuration" 界面选择 Remote Debug 单选项

       platform 选择 "Android"

       将设备的 ip 地址填写在 Device IP 上

       点击Debug按钮

       如何调试C++

       从 1.0.0-rc1 版本开始,支持使用 XCode/Visual Studio 调试 C++ 代码的同时使用 Cocos Code IDE 调试 C++ 代码。

       以调试 Mac 为例:

       如果你还没有 C++ 代码,那么需要先添加(右击工程,Cocos Tools->Add Native Codes Support...)

       使用 Xcode 打开 frameworks/runtime-src/proj.ios_mac 工程,并启动调试

       回到 Cocos Code IDE,打开 "Debug Configuration" 页面,选择 Remote Debug 单选项

       platfrom 选择 “Mac”

       Target IP 填写 "127.0.0.1"

       点击Debug按钮..

如何在cocos2d里面实现mvc

       游戏设计需要的软件如下:

       1、Visual Studio:

       Microsoft Visual Studio是VS的全称。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。

       2、DirectX:

       Direct eXtension,简称DX。是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。

       3、Box2D:

       Box2D是一个用于模拟2D刚体物体的C++引擎。它是一个强大的开源物理游戏引擎,用来模拟2D刚体物体运动和碰撞,由Erin Catto早在2007年用C++语言开发。

       4、Cocos2d-x:

       Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。

       5、3D Studio Max:

       常简称为3d Max或3ds MAX,是Discreet公司开发的(后被Autodesk公司合并)基于PC系统的三维动画渲染和制作软件。其前身是基于DOS操作系统的3D Studio系列软件。

百度百科-vs

百度百科-DirectX

百度百科-Box2D

百度百科-cocos2d-x

百度百科-3ds max

       Cocos2d本身并不是基于mvc的理念来设计的,但是,这并不防碍在自己的游戏开发中使用mvc。实现方式肯定是多种多样的,在此是怎么在cocos2d里面实现mvc的,同时,在最后,会写一个简单的游戏demo,当然,里面使用的是cocos2d+mvc。

       现有问题

        cocos2d里面有这样一些类,CCSprite,CCLayer,CCScene,所有这些,都是CCNode的子类。基本上,大家在使用cocos2d开发游戏的时候,都会采用下面的步骤来实现游戏逻辑:

       通过应用程序代理类来初始化第一个CCScene(即AppDelegate里面的第一个CCScene),

       CCScene里面实例化一个或者多个CCLayer,并把它们当作孩子添加进去。

       CCLayer 里面实例化一个或者多个CCSprite,也调用addChild添加进去

       CCScene 处理用户输入(比如touch事件和加速计的改变),同时更新CCLayer和CCSpirte的属性,比如更改CCSprite的position,让sprite运行一个或多个actioin等。

       CCScene里在运行一个游戏循环(game loop,一般是1/60更新一次),然后CCLayer和CCSprite就在这个game loop里面做一些更新和游戏逻辑。

        这个过程看起来非常简单,而且也可以很快地做出游戏来。这也是为什么cocos2d这么流行的原因,它实在是太简单了。但是,当你的游戏逻辑越来越复杂的时候,你的代码会变得越来越难以维护。这里面最突出的问题就是,CCScene这个类负责的事情太多了---同时要处理用户交互,还有负责游戏逻辑(逻辑层)和画面显示(表示层)。(译者:根据SoC的原则,这显然是不合理的,我们应该把职责分离开来,这样代码才更容易维护。同时SRP(单一职责原则)也是这么要求的,一个类只负责一件事情)

       模型(Model)

        MVC它会把一个系统划分为以下几个组件:

       Model ,它负责与领域相关的逻辑处理代码,也可以说是逻辑层,或者领域层。

       View ,只负责界面显示。

       Controller ,它负责处理用户交互。

        让我们先从model开始。Model代表了游戏逻辑。因为我现在正在制作一个platform游戏,所以,我讲的一些东西也是与platform游戏相关联的。我的游戏里面的model包含下面一些类(当然,仅仅是一部分类)

       Player,

       包含一些属性,比如:player的位置、当前速度(x轴速度、y轴速度)等。

       包含一些与player有关的处理逻辑,比如:run,walk,jmup等。

       包含一个update方法,该方法会被游戏主循环每一帧刷新时所调用,它主要负责更新player model。

       Platform,

       包含一些属性,比如:platform位置、宽度、高度等。

       包含一些与platform有关的处理逻辑,比如:倾塌等

       包含一个update方法,该方法会被游戏主循环每一帧刷新时所调用,它主要负责更新patform的model。

       GameModel,

       包含一些游戏世界的属性,比如重力等。

       包含一些方法来执行游戏逻辑。

       包含一个update方法,该方法会在每一帧刷新的时候被game loop所调用,然后它就可以更新自己的状态,同时还会触发游戏世界里面的其它对象也相应地更新自己的状态。

        你可能会问:有些属性你完全没有必要重复定义,你可以直接从CCSprite里面得到,比如position、width、height等。我想说:有对有错。说对呢,是因为它们确实差不多,可以拿来就用。说不对呢,那是因为,model有可能使用一些不同的计量单位,比如米,而不是像素。(比如box2d这样的,就不是使用像素作为单位)。在我的model里面,我使用的是米,当然,你也可以使用英尺,或者其它单位。渲染引擎对于model来说是透明的,model完全不用关心。

       视图(View)

        根据mvc的原则,view应该只负责界面显示。它实际上也是在cocos2d里面实现mvc时,最简单的一个。如果你有一个model,你可以使用CCLayer,然后添加一些CCSprite或者其它coocs2d类来处理显示问题。把model和view分开的好处就是,你没必要把model的属性直接映射到view的属性上面去。比如,你的玩家在x轴方向上移动,但是,你想让它总是在距离屏幕左边10px的位置。这时候,你就可以移动CCLayer了,而不是真的在移动sprite。当把model对象显示出来的时候,你必须考虑单位,如果你使用的是米作为计量单位,你在渲染的时候必须转化为像素。(你可以像box2d里面一样,定义一个PTM_RATIO)那么你的model怎么和view打交道呢?你可以从controller里面得到view,或者你可以把game model制作成一个单例,然后使用静态方法来处理它。

       控制器(Controller)

        controlller负责把view和model联系起来。它的主要职责就是处理用户输入。由于我们需要实例化model和view,我发现在controller里面来做非常合适。我是把controller类继承到CCScene类,然后我们需要建立一个初始的controller类,它由appDelegate来实例化。然而,这里会有一个问题,touch事件是由CCLayer来处理的,而它在我的设计里面的角色是view。而我又不想让view来处理用户输入,所以,我需要传递一个view的引用给controller(不是直接传递,而是通过delegate),然后通过delegate来执行controller的touch事件处理代码,以此来处理view里面的touch事件。好了,现在我的controller类就能够处理来自view的用户事件了。然后,它可以根据用户的输入来操作model,要么通过修改model的属性,或者调用model的方法。再更新完model之后,我们的view也需要得到通知并更新。所有这些,我都在game loop里面完成,实际上它就是一个controller。controller的职责只是负责调用view的update方法,然后剩下的就交给view去完成即可。

       好了,今天关于“cocos2d 塔防游戏源码”的话题就到这里了。希望大家通过我的介绍对“cocos2d 塔防游戏源码”有更全面、深入的认识,并且能够在今后的学习中更好地运用所学知识。