目录
许可证
给cocos2d做贡献
开发人员
疑难解答
许可证
我能在闭源的iPhone应用程序中使用cocos2d吗?
是的,可以。
cocos2d-iPhone使用MIT许可。
如果你有任何疑问,请仔细阅读该协议。
如果有人购买了我的游戏,我需要给他源代码吗?
你不必要把游戏代码开源,即使有人在App Store里购买了你的游戏。
你的游戏是否开源的决定权在你。
谁在使用cocos2d?
很多公司,从巨型企业例如Zynga和Atari,到小型的游戏工作室都有。
给cocos2d做贡献
我发现一个bug / 我有一个改进的建议。我应该怎么做呢?
请在http://code.google.com/p/cocos2d-iphone/issues/list 新建一个问题跟踪投票。
你也可以在论坛http://www.cocos2d-iphone.org/forum/forum/2 里提出出这个bug/改进,但请不要忘记新建一个问题跟踪投票。
如何提交补丁包?
如果你想要贡献代码,请按照下列步骤:
(如果你是Git和/或GitHub新手,你应该先阅读Pro Git,尤其是“Contributing toa project:Small/Large Public Project”一节)
- 从GitHub下载最新的cocos2d iPhone开发分支:
$ git clonegit://github.com/cocos2d/cocos2d-iphone.git
$ cd cocos2d-iphone
$ git checkout develop
1. 在最新下载的版本库做修改
2. 在您自己的版本库里提交您的更改
3. 创建一个新的分支
4. 提交新的分支到公共版本库
5. 向用户“cocos2d”发送一个“pullrequest”
6. 在http://code.google.com/p/cocos2d-iphone/issues/list新建一个问题跟踪投票,并把该补丁或者您提交的URL粘贴在上面。
7. 不要忘了描述你的修补程序的用途。
添加新的特性
新的特征需要:
1. 测试程序(或者几个子测试程序),用来测试新功能
2. 新的类/方法必须要有doxygen注释(用来生成文档)
3. .m文件应该遵循Objective- C的命名约定
4. 使用Xcode默认缩进。使用制表符代替空格。
5. 使用静态分析器运行你的代码,修复潜在的bug。如果llvm 误报了错误(例如内存泄漏,实际上又没有泄漏),那么把它记录在代码中。
哪些特性/补丁会被采纳?
如果你请求合并一个特性或者补丁,而它们正好符合下列要求,那么就会被合并:
- l 易于使用
- l 易于扩展
- l 高效(快速/低内存需求)
- l 通用
- l 重构关键组件的补丁可能需要启动新的发布版本才能合并
另:
- l 如果你的补丁在下一个发布版本没有被合并,请耐心等待。
开发人员
我能在cocos2d里面使用3D对象吗?
能,你可以在cocos2d嵌入一个类似cocos3d一样的3D引擎。
我能为SDK 3.x, 4.x开发游戏吗?
能,cocos2d和SDK 2.x, 3.x以及4.x兼容。
我能在iPhone/iPad/Mac上使用cocos2d吗?
能,cocos2d能运行在所有的Apple设备上,包括:
- l iPhone / iPod Touch 1代
- l iPhone 3G 和 iPod Touch 2代
- l iPhone 3GS 和 iPod Touch 3代
- l iPhone4 和 iPod Touch 4代 普通和高分辨率模式
- l iPad
- l iPad 2
- l Mac OS X 10.5 and 10.6
可以使用什么尺寸的纹理?
要考虑两种情况,非压缩和PVRTC压缩纹理。
对于非压缩纹理,纹理尺寸必须是2的幂次方,3代以及更新的设备支持的纹理尺寸不大于2048,而较老的设备只能使用不大于1024的纹理尺寸。
所以16×256可以,512×512也可以,但是240×320则不行。
你仍然可以使用不符合以上规则的图片,但是当心系统是以2的幂次方大小来存储它的。所以,加载240×320大小的图片,实际上会创建256×512大小的纹理。
在新的设备上(例如iPhone 3GS)支持2048最大纹理尺寸。注意iPhone 3G以及更老的设备支持的最大纹理尺寸只有1024×1024。
对于PVRTC压缩纹理,其尺寸必须是2的幂次方,并且宽和高必须相同,即是方形的,例如4×4,32×32,256×256,1024×1024。加载到纹理的图片是一种特殊的格式,和GPU里的存储格式非常相近——因此,图片也必须是方形的且边长是2的幂次方。如果你使用了PVRTC压缩纹理,而你的纹理显示的是单一的白色,那么极有可能是你加载的图片不是方形的。
spritesheet是什么以及为什么要使用它?
spritesheet是组合在一个较大的sprite里的一组sprite。这样做有两个好处:首先,绘制表里所有的sprite都只需要一个drawcall,这将非常高效。其次,是你可以使用不是2的幂次方的纹理而不浪费内存。把很多sprite打包到一个spritesheet已经是被证明是一种最佳做法,请查看sprite一节获取很多知识。
我可以使用渲染到纹理技术吗?
可以。cocos2d已经有一个专门做这件事情的类 CCRenderTexture。
我可以使用动态alpha效果,例如lights,steam等等吗?
可以,结合frame buffer对象和channel masking,只在alpha通道绘制以及适当的blendingmode,就可以实现动态alpha效果。它对创建iSteam效果(在图像上面绘制可编辑的steam层),lighting效果(在图像上绘制中间有个实现光照的孔的黑暗层),刮彩票的效果以及形变游戏领域很有帮助。请参考CCRenderTexture 类(从cocos2d v0.81版本开始)以及下列的帖子:
我如何在项目中加入声音?
cocos2d带了cocosDenshion(cocos2d使用的音频引擎)的项目模板。
疑难解答
当我在模拟器上运行时,图片的颜色乱作一团。
你是在使用基于PPC的平台吗?如果是的话,这是一个已知的问题。另外,请注意PPC平台不支持iPhone开发。
如何运行这些测试程序?
1. 打开cocos2d Xcode项目
2. 点击:Xcode→View→Customizetoolbar
3. 然后,将Active Target 和 Active Executable拖动到您的顶级项目工具栏。
4. 在这两个下拉菜单中选择你想要运行的测试程序,然后点击Build and Go。
我的PNG图片在Cocos2d和在Photoshop中显示的不一样,为什么?
如果你的PNG图片不像在Photoshop显示的一样好,那么:
确保你使用的是32-bit像素格式
[[CCDirector sharedDirector]setPixelFormat:kRGBA8]; // Default is RGB565
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; // Default is RGBA8888
如果仍然还有问题,如下:
那么你应该知道:
- l 在设备上,图像预先乘了appha通道(而模拟器上则没有)
- l 为了正确渲染预先乘了alpha的图像,cocos2d使用了下面的blending函数:
glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
所以,如果你想要使用其他的blending函数,你应该:
// cocos2d v0.7.x usesGL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA as the blending function for all sprites,
// which is not correct, but if you want toemulate v0.7.x behavior, then:
[sprite setBlendFunc: (ccBlendFunc) { GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA }];
关于blending函数和预先乘alpha的图像的更多信息,请阅读:
如果你的图片是白的…
如果你的图像是经过预乘alpha的,当你修改它的透明组建时它将修改RGB组件。但是如果你想要改变该行为,那么:
[sprite setOpacityModifyRGB:NO];