COCOS2D-X 学习

来源:互联网 发布:知乎 无色方糖 编辑:程序博客网 时间:2024/06/03 17:03

虽然做了很久的游戏 但是接触的框架都比较偏 不知道有多少同学用的这套东西(gameswf + flash + lua/C/C++)

这套不是市面上主流的框架 开始准备用COCOS2DX来开发游戏 花了不少时间学习 半个来月吧 但是项目转用U3D开发 估计很长时间内都不会去用这段时间学得COCOS2D-X,

下次接触多半也搞忘了 但是2D游戏都大同小异 写这篇文章算是总结这段时间的学习 梳理一下思路 也做未来备份用

需要说明的是我完全没用COCOS2DX开发完整项目的经验 只是从0开始学习这个引擎的一些感悟和个人觉得需要准备得东西 还有就是我错别字会非常多.


COCOS2DX 是一个开源的2D游戏引擎 虽然它支持3D 但是目前市面上应该没多少游戏拿这块去做 目前我主要学习的是他的分支 Cocos2dx-lua,至于为什么选择lua 一是自己比较熟悉 二是网上那一堆原因(DLC自动更新,开发效率高etc...)
下面是自己的学习流程
1.在COCOS官网下载了基本的东西:
我主要下载了 cocos studio /Cocos2d-x (它里面已经包含了lua代码)
http://www.cocos.com/download/
2.从头到尾好好看看官网的文档
虽然写的非常简洁 但是大概说明了cocos得用法 和功能点
http://www.cocos.com/doc/
3.将下载下来的cocos2dx 跑起来 (我直接用MAC跑的比较简单)
熟悉工程的目录结构和组织方式 包括他用到的库 
然后再模拟器或者真机上看demo效果 需要研究对应模块之前 好好读读源代码
读里面的demo代码用处是非常大的 建议每个文件都看一遍
4.学习tiled地图编辑器 附带学习了QT 因为tile是开源项目 用QT实现的
如果做的是dota传奇那种没有瓦片地图的游戏 这块可以跳过
5.学习cocos studio的使用
6.学习特效制作(ParticleDesigner / Particle 2dx / Particle editor)
7.学习骨骼动画(Spine / cocostudio animation editor )
(6.7可能不需要你自己动手取做 但是作为程序员需要知道 文件格式和基本使用)




主要介绍下COCOS2DX会用到的主要工具/编辑器,这些东西基本都可以极大的提升工作效率,避免重复造轮子:

1.Cocos Studio
这个东西其实我用到不多 如果用COCOS来开发 我估计我也仅仅会用他来做一些界面UI 它里面包含了一些基本控件 如 地图/特效/声音/骨骼动画,其实这些东西都是外部准备好的文件 个人觉得没必要再用它来包装一次(也可能是自己没项目经验 没理解到该怎么用)
做UI的话 使用cocos studio 还是比较方便的 虽然和flash比起来还差得比较远 但是基本的功能都是有得 包含了帧动画/帧时间/按钮(按钮事件/按钮动画)/基本容器 等等,让美术来做界面,程序加事件代码基本够用了,详细可以看引擎里面的示例代码(CocoStudioTest),说说自己觉得OK的屏幕适配解决方案:
1.首先在代码里面设置显示模式为SHOW_ALL
2.每个界面做3份 分别是16x9 4x3 3x2 然后高更具对应的屏幕宽高(如果不是这个比例就去取靠近最相似的比例)比例调用对应的文件 

2.地图编辑器Tiled
这是一个开源的瓦片地图编辑器 cocos目前对他的支持已经比较好了 关键是他是开源的 我们可以根据项目的需要修改它
官网:http://www.mapeditor.org
gitHub:https://github.com/bjorn/tiled
格式介绍:http://doc.mapeditor.org/reference/tmx-map-format/
地形编辑:http://www.flashj.cn/wp/tiled-mapeditor-terrain-tool.html
使用起来极为简单 可以直接看引擎里面的事例代码(FastTiledMapTest/TiledMapTest)
需要注意的是:
1). TileMapAtlas 
cc.TileMapAtlas:create(s_TilesPng,  s_LevelMapTga, 16, 16)
s_LevelMapTga :map地图是由一张TGA标示的 比如一个 160X60的地图 就需要一张160X60的TGA图片  取这张图片的R色值 来获得tile的坐标
s_TilesPng : Tile坐标文件 
后面16,16是tile的宽高
具体是用什么工具取实现map的有待查证,美术的ps一定可以,用tile也可以实现(用色块当瓦片 保存为图片)但是不知道推荐的使用什么实现的。

2)用fast tile map 加载TMX文件
3.2版本的TiledMap会自动裁剪掉屏幕外的地图格子,减少渲染对象的数量,大大提升游戏的效率。以CCEXP打头 
ccexp.TMXTiledMap:create("TileMaps/orthogonal-test3.tmx")
layer:addChild(map, 0, kTagTileMap)
但是亲测发现有bug:如果用ccexp.TMXTiledMap加载tiled创建出来的 Isometric(Staggered) /Hexagonal(Staggered) 地图,一个会缩成一堆,一个会整体成菱形 但是用cc.TMXTiledMap加载就不会有问题
这个应该是引擎目前的bug

3).如果你要修改Tiled 就需要先了解一下QT,下面这个文章非常不错 简介明了 
http://devbean.blog.51cto.com/448512/193918

4).我没有细致看加载tiled map的Cocos2dx引擎代码 每个tile底层实现为sprite,看看项目后期能不能优化那些永远不会改变的layer 减少遍历或者循环的次数 / 出屏不计算(绘制)

3.特效编辑器
1.ParticleDesigner 破解版有1.3的 2.0的需要购买
2.网页版的 Particle 2dx
http://www.effecthub.com/particle2dx
3.cocos Particle editor 这个只有windows版本
几个软件看你怎么顺手怎么用 导出plist给引擎用就是了
需要注意的是所有你在软件里面设置的参数都是可以在程序内部配置的,如下
local particleSystem = cc.ParticleSystemQuad:create("Particles/particle_texture.plist")
particleSystem:setPosition(cc.p(100,100));
particleSystem:setStartSize(10.0);
particleSystem:setPosVar(cc.p(10, 100))
ParticleReorder_layer:addChild(particleSystem);
用setXXXX来设置这些变量
还有个问题 就是plist对应的是一张单独的图片 目前看起来是不支持切图的 如果需要将特效图片合图 可能需要修改引擎

4.其他的一些工具
1.骨骼动画编辑器 Spine 这个基本都是给美术用,程序使用导出文件就是了 
这个论坛不错 :http://www.cgjoy.com/forum.php?mod=forumdisplay&fid=331
2.texture packer 一个合图的工具


其他的一些杂谈:

Cocos2d-x纹理优化
http://blog.csdn.net/john_cdy/article/details/46356349

Cocos2d-x socket长连接 
http://www.himigame.com/iphone-cocos2dx/844.html
http://blog.csdn.net/zzhboy/article/details/9878941

如何实现强同步游戏:
http://www.skywind.me/blog/archives/1343
http://www.skywind.me/blog/archives/1145
http://www.skywind.me/blog/archives/112
http://www.skywind.me/blog/archives/60
http://www.gamedev.net/page/resources/_/technical/multiplayer-and-network-programming/defeating-lag-with-cubic-splines-r914
http://www.skywind.me/blog/archives/1048
http://www.skywind.me/blog/archives/131  
http://www.gameres.com/336666.html

目前已经实现CCEXP高性能版本的包含:
a.AudioEngine
b.SpritePolygon
c.VideoPlayer
d.WebView
c.TIledMap
0 0
原创粉丝点击