在Cocos2D-x引擎中,有几个非常重要的概念:导演(CCDirector).摄像机(CCCamera).场景(CCSecen).布景(CCLayer).精灵(CCSPrite)和动作(CCAction).当看到这些概念,很容易联想到拍电影.我想Cocos2D在架构设计时,灵感恐怕正是来源于拍电影.我认为游戏除了需要与玩家交互外,和动画.电影制作具有很多相似的元素. 以下分别描述这些概念: ·导演(CCDirector):导演是整个游戏的组织和控制核心.导演可以制定游戏的运行规则,从而让游戏内…
了解完Cocos2D-x的基本概念和概念类之后,是不是有一种蠢蠢欲动的冲动,想要探究Cocos2D-x是如何完成这一切的.接着我将通过对Cocos2D-x自代的HelloCpp项目进行分析,初步了解Cocos2D-x游戏的基本框架,揭开Cocos2D-x神秘的面纱.      作为一个Hello World程序,HelloCpp的功能非常简单.打开一个OpenGL窗口,在里面显示了一张Cocos2D-x的log图片,在图片的上面写着"Hello World".在右下角有一个按钮,用来退…
CCDirector类是游戏的组织和控制中心(总指挥),它控制着主屏幕的显示.场景的切换和显示,以及游戏的开始.结束和暂停.它的继承关系图如下:    CCDirector继承自基类CCObject,它还有一个子类CCDisplayLinkDirector,它是一个可以自动刷新的CCDirector.CCDirector包括的核心功能如下:    ·初始化OpenGL和设置OpenGL参数:    ·控制场景管理和切换:    ·设置Cocos2D的配置细节:    ·访问视图(OpenGL.U…
节点类CCNode在基本概念中并不存在,它是为了建立基本概念之间的关联关系而抽象出来的中间辅助类.这个类在Cocos2D-x中极为重要,它为概念类之间搭建了一座宏伟的桥梁.它的继承关系图如下:      从继承关系图知,CCNode是继承自基类CCObject,而场景CCScene.布景层CCLayer和精灵CCSprite都从它继承而来.它是一个抽象类,没有可视化的表示形式,但任何需要画在屏幕上的对象几乎都是从节点类CCNode继承而来.下面这张CCNode及子类继承图可说明这一点:     …
在Cocos2D-x中,每个CCNode都拥有一个摄像机类CCCamera.只有通过CCCamera,CCNode才会被渲染出来.当CCNode发生缩放.旋转和位置变化时,都需要覆盖CCCamera,让CCNode能够通过CCCamera重新渲染.CCCamera的类继承关系图如下:          查看一下CCCamera的内部结构和功能.      ·CCCamera属性:       float m_fEyeX:视角位置坐标x      float m_fEyeY:视角位置坐标y    …
上一节说布景层CCLayer是小容器,那么精灵类CCSprite就是容器添加的内容,它是构成游戏的主要元素.精灵这个名称应该是游戏专用,它表示游戏中玩家操作的主角.敌人.NPC(Non Player Character-非玩家控制角色的缩写).背景.道具和机关等.在Cocos2D-x中,CCSprite本质上就是一张二维的图片对象而已.CCSprite的继承关系图如下:    从上图可知,CCSPrite也是CCNode的子类,不过它还支持纹理和色彩.看一看CCSprite的内部结构和功能.  …
上面说场景CCScene相当于一个大容器,那么布景层类CCLayer就是大容器里的若干个小容器.每个游戏场景CCScene会有很多层CCLayer,每一层CCLayer负责各自的任务.看一下CCLayer的类继承关系图,如下:          可以看出,CCLayer是CCNode的子类,并且它还支持触屏.加速度传感器和键盘输入.除此之外,CCLayer还有很多子类,如下:       这些子类实现了很多UI(如菜单.列表视图.滚(滑)动视图.控件(按钮.开关.滑动条等)),这些子类的用法将在…
场景类CCScene是Cocos2D-x在屏幕显示的内容,相当于游戏关卡或界面.CCDirector任何时候只能显示一个场景CCScene,游戏中可能存在若干场景,CCDirector通过场景切换达到显示不同场景的目的. Scene继承于CCNode,它相当于一个大容器(CCNode树形结构),将其包含的布景层CCLayer以及CCSprite精灵等游戏元素输出到屏幕中显示,它是整个CCNode树的根节点.其实,CCScene的内部结构非常简单,虽然继承自CCNode,但没有在它的基础上增加任何…
我认为很多开发者面对层出不穷的新技术.新思想和新理念,最为之苦恼的是找不到行之有效的学习方法,对于知识的本质缺乏认识,虽阅读了大量教材,却无法将其融入自己的知识体系,并搭建自己的知识树.不可否认,教材的目录和编排有一定的结构和条理,但它未必符合人的思维结构.叔本华认为一切思想都是产生自我意识的素材,不加消化的接纳,只能成为别人思想的傀儡.我想说cocos2d-x研习录是我对学习cocos2d-x的认识.思考和总结,虽然可能比较肤浅或存在错误,当然也不具有要指导菜鸟.教训老鸟的重大使命,但这是我搭…
Cocos2D是一个2D开源游戏引擎,它最早是由Ricardo Quesada(阿根廷人,社区简称Riq)和他的朋友们用Python开发的,用于开发2D游戏和基于2D图形的任何应用.最早引擎的名字源自开发地阿根廷Cordoba市附近的Los Cocos,后来引擎在2008年2月29日发布第一个版本(版本号0.1.0),并改名为Cocos2D.那时该引擎鲜为人知,至到2008年6月移植到苹果iOS平台,并发布以Object-C为主语言的Cocos2D-iPhone版本才名声大噪. 我在网上搜索到一…
游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmunk两种第三方开源物理引擎.这两种物理引擎功能上没有本质的区别,只是Chipmunk是用C语言实现的,Box2D是用C++语言实现的.Box2D目前相对使用更为广泛,所以本节只了解Box2D物理引擎. 要学习Box2D物理引擎,我们先来了解一些Box2D中定义的重要概念,这些概念是构成Box2D世界…
我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾.星云.流水.落花等. 粒子系统(partical system)在粒子效果中对所有粒子进行统一控制和调度,它的常见功能如下: ·产生粒子:也被称作粒子发射器(emitter). ·控制粒子:随时间更新粒子的位置.速度以及其他状态. ·回收粒子:当粒子的生存周期结束后就会被系统回收. Cocos2D-…
    上一节了解Cocos2D家族史,本节关注Cocos2D家庭的一个重要分支Cocos2D-x.Cocos2D-x是Cocos2D的C++移植版本,它的最大特性是跨平台,使开发者编写一套C++代码就可以横跨Android和iOS两大平台,大大提高了开发效率.         值得庆幸和骄傲的是Cocos2D-x的主力开发团队是中国人,这就为学习Cocos2D-x带来了极大的便利,扫清了语言的障碍.我在网上也搜索到一张主力成员的照片,如下:                  Cocos2D-x…
在移动终端(智能手机)平台下开发游戏一般都会涉及到屏幕多分辨率适配问题,原因是手机款式多种多样,不同的款式存在有不同的尺寸,即使尺寸相同又可能存在不同的分辨率. 手机屏幕尺寸:指手机屏幕对角线长度. 手机分辨率:指屏幕上横.纵的总象素点数.分辨率越高,即总象素点数越多,屏幕显示效果越好.               上面我们介绍了手机尺寸和分辨率的概念,结论是手机屏幕显示效果是由尺寸和分辨率决定的.相同尺寸不同分辨率手机,分辨率越高显示效果越好:相同分辨率不同尺寸的手机,尺寸越大显示效果越差.…
在游戏中,音效是一个不可或缺的部分,它可以为我们的游戏增加效果.音效在游戏中一般分为长时间的背景音乐和短促的特效音乐.Cocos2D-x支持多种常见音乐格式(mp3.wav等). Cocos2D-x提供了一个非常简单的跨平台声音引擎,它被包含在CocosDenshion库(编译生成libCocosDenshion.lib)中,目录结构如下:   上图可以看出,Cocos2D-x的声音引擎支持多个平台,我们这里使用的是win32平台. 在include目录中有一个SimpleAudioEngine…
由于一张大的世界地图或背景图片往往可以由屈指可数的几种地形来表示,每种地形对应于一张小的图片,我们称这些小的地形图片为瓦片.把这些瓦片拼接在一起,组合成一个完整的地图,这就是瓦片地图集的基本原理. Cocos2D-x中支持两种瓦片地图集格式:一种是*.tag文件格式,一种是*.tmx文件格式. ·*.tag文件格式一般采用photoshop生成,在Cocos2D-x中为了兼容性仍保留,目前已经不推荐使用这种方式拼图.虽然如此,我们还是简单了解一下.Cocos2D-x通过类CCTileMapAtl…
在游戏中,经常会周期执行一些检测.操作或更新一些数据等,我们称之为调度.Cocos2D-x中将调度封装为类CCScheduler,方便在游戏开发中使用.我们一起来学习一下,CCScheduler具有哪些调度功能.    从上图可知,CCScheduler直接从基类CCObject继承而来.CCScheduler的调度模式分为两种:一种是update定时器调度,它是按照优先级来进行调度,在Cocos2D-x中优先级分为三类(大于零.小于零和等于零),值越小优先级越高.另一种是按照自定义定时器调度.…
在前面的Cocos2D-x的概念类中,我们了解到节点类CCNode.导演类CCDirector.场景类CCScene.布景层类CCLayer和精灵类CCSprite等,这些类都是构成游戏画面的基本元素.特别是精灵类CCSprite,它是游戏的主要元素.记得在讲CCSprite时说过,它本质上就是一张二维的图片对象.这些图片对象被加载到游戏中,显示到屏幕中形成各种静态画面.但游戏除了静态画面,更多需要有动态效果(如动作.特效和动画),它将游戏角色性格和情绪活灵活现的表现出来.可以说,动态效果的好坏…
Cocos2D-x引擎支持按键事件,它能检测设备的键盘输入并处理相应的事件.而基于不同操作系统的移动设备,可供用户操作的按键数量和功能都存在差异.   Cocos2D-x使用CCKeypadDelegate接口类处理相应的事件,这个类定义很简单,如下: class CC_DLL CCKeypadDelegate{public:    virtual void keyBackClicked() {} //返回按键事件    virtual void keyMenuClicked() {}; //M…
智能手机的游戏与应用中,也经常会用到加速传感器事件来丰富用户的体验,比如飞翔的企鹅(英文AirPenguin)游戏就是通过加速度传感器来控制角色的移动和跳跃方向.下面学习Cocos2D-x中如何使用加速度传感器事件. Cocos2D-x中使用加速度传感器代理类CCAccelerometerDelegate提供的接口方法来接受加速度传感器的数值变化,类继承关系如下图: 布景层类CCLayer和其子类继承自CCAccelerometerDelegate类,因此它们支持加速度传感器.   CCAcce…
游戏跟视频最大的区别就是互动,而手游(基于智能手机)主要靠触摸屏幕.重力传感和虚拟键盘等方式实现互动.这里主要记录Cocos2D-x对玩家触屏操作的处理. 在Cocos2D-x中触屏分为单点触屏和多点触屏,下面介绍一下与触屏相关的几个类.触屏事件和流程. ·CCTouch(触屏点类):这个类用于封闭触屏点,通过它的locationInView方法返回当前触屏点CCPoint.它还记录上一个触屏点. ·CCTouchDelegate(触屏代理协议类):它是触屏事件委托,系统捕捉到触屏事件后交由它或…
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS cocos2d 2游戏开发实战(第3版) >.由于时间的关系,没有仔细读完全部内容,翻看了几章,书的内容还是不错的,说真的.书的原作者是Steffen Itterheim 可以在http://www.learn-cocos2d.com/ 了解他. <iOS cocos2d 2游戏开发实战(第3版)…
http://blog.csdn.net/forever_2015/article/details/50285955 版权声明:未经博主允许不得转载,请尊重原创, 谢谢!   目 录 第1章 分级存储架构. 2 1.1基础认识... 2 1.1.1从数据通路描述. 2 1.1.2从数据交换单位描述. 2 1.1.3 Cache数据一致性拓扑结构. 3 1.2 系统层内存模型... 3 1.2.1内存属性. 3 1.2.2地址空间. 4 1.2.3字节编码支持. 4 第2章 虚拟内存系统架构(VM…
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你习惯快乐时.记忆里的不愉快就消失了. 游戏開始之前 经过之前的学习,我们已经能够开发一个最主要的 Cocos2d-x 游戏了,这个游戏包含一张背景图片和一个退出游戏的按 钮,可是这距离完毕一个完整.有用的游戏还非常遥远.在这一章节中,我们将首先抛开 Cocos2d,介绍游戏开发的基本概念.然后结合…
本文转自http://www.ibm.com/developerworks/cn/linux/kernel/l-thread/ 支持原创.尊重原创,分享知识! 自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性.效率.本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足,描述了 Linux 社区是如何看待和解决兼容性和效率这两个问题的. 一.基础知识:线程和进程 按照教科书上的定义,进…
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你习惯快乐时,记忆里的不愉快就消失了. 游戏開始之前 经过之前的学习,我们已经能够开发一个最主要的 Cocos2d-x 游戏了,这个游戏包含一张背景图片和一个退出游戏的按 钮,可是这距离完毕一个完整.有用的游戏还非常遥远. 在这一章节中,我们将首先抛开 Cocos2d,介绍游戏开发的基本概念,然后结合…
声明!非原创,本文出处 Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题. 本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了.为了降低难度,本文所说的所有的内容都是基于 xm…
版权声明:本文为原创文章,转载请注明出处. 概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人认为目的就是为了提供环境隔离的功能,选择启虚拟机的时候可以根据自己所处的位置就近选择. 既然提到region了,那不如就此总结下openstack中其他的至上而下的不同的区域概念. Region 每个region都有个完整的Openstack部署环境, 有…
首先定义:待优化参数:  ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch  : 计算目标函数关于当前参数的梯度:  根据历史梯度计算一阶动量和二阶动量:, 计算当前时刻的下降梯度:  根据下降梯度进行更新:  掌握了这个框架,你可以轻轻松松设计自己的优化算法. 一阶动量.二阶动量概念的引入,一个框架纳入所有优化算法,更清晰 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法 机器学习…
下载ffmpeg 点击 ffmpeg官网,选择windows,然后点击Windows builds from gyan.dev: 也可以直接点击 https://www.gyan.dev/ffmpeg/builds/ ,在点击ffmpeg-git-full.7z,即可下载: 下载到的文件格式为7z(一种压缩格式),用电脑安装的压缩工具解压即可.如果没有安装支持7z的压缩工具,可以点击https://www.7-zip.org/,下载: 下载完,双击打开,一路同意和下一步直到完成即可. 解压后剪切…