虽然做了很久的游戏 但是接触的框架都比较偏 不知道有多少同学用的这套东西(gameswf + flash + lua/C/C++)
这套不是市面上主流的框架 开始准备用COCOS2DX来开发游戏 花了不少时间学习 半个来月吧 但是项目转用U3D开发 估计很长时间内都不会去用这段时间学得COCOS2D-X,
下次接触多半也搞忘了 但是2D游戏都大同小异 写这篇文章算是总结这段时间的学习 梳理一下思路 也做未来备份用
需要说明的是我完全没用COCOS2DX开发完整项目的经验 只是从0开始学习这个引擎的一些感悟和个人觉得需要准备得东西 还有就是我错别字会非常多.
COCOS2DX 是一个开源的2D游戏引擎 虽然它支持3D 但是目前市面上应该没多少游戏拿这块去做 目前我主要学习的是他的分支 Cocos2dx-lua,至于为什么选择lua 一是自己比较熟悉 二是网上那一堆原因(DLC自动更新,开发效率高etc...)
下面是自己的学习流程
1.在COCOS官网下载了基本的东西:
2.从头到尾好好看看官网的文档
3.将下载下来的cocos2dx 跑起来 (我直接用MAC跑的比较简单)
熟悉工程的目录结构和组织方式 包括他用到的库
4.学习tiled地图编辑器 附带学习了QT 因为tile是开源项目 用QT实现的
如果做的是dota传奇那种没有瓦片地图的游戏 这块可以跳过
5.学习cocos studio的使用
6.学习特效制作(ParticleDesigner / Particle 2dx / Particle editor)
7.学习骨骼动画(Spine /cocostudioanimationeditor )
(6.7可能不需要你自己动手取做 但是作为程序员需要知道 文件格式和基本使用)
主要介绍下COCOS2DX会用到的主要工具/编辑器,这些东西基本都可以极大的提升工作效率,避免重复造轮子:
1.Cocos Studio
这个东西其实我用到不多 如果用COCOS来开发 我估计我也仅仅会用他来做一些界面UI 它里面包含了一些基本控件 如 地图/特效/声音/骨骼动画,其实这些东西都是外部准备好的文件 个人觉得没必要再用它来包装一次(也可能是自己没项目经验 没理解到该怎么用)
做UI的话 使用cocos studio 还是比较方便的 虽然和flash比起来还差得比较远 但是基本的功能都是有得 包含了帧动画/帧时间/按钮(按钮事件/按钮动画)/基本容器 等等,让美术来做界面,程序加事件代码基本够用了,详细可以看引擎里面的示例代码(CocoStudioTest),说说自己觉得OK的屏幕适配解决方案:
2.地图编辑器Tiled
gitHub:
https://github.com/bjorn/tiled
使用起来极为简单 可以直接看引擎里面的事例代码(FastTiledMapTest/TiledMapTest)
需要注意的是:
1).
TileMapAtlas
cc.TileMapAtlas:create(s_TilesPng,s_LevelMapTga,16,16)
s_TilesPng : Tile坐标文件
后面16,16是tile的宽高
具体是用什么工具取实现map的有待查证,美术的ps一定可以,用tile也可以实现(用色块当瓦片 保存为图片)但是不知道推荐的使用什么实现的。
2)用fast tile map 加载TMX文件
ccexp.TMXTiledMap:create("TileMaps/orthogonal-test3.tmx")
layer:addChild(map,kTagTileMap)
但是亲测发现有bug:如果用
ccexp.
TMXTiledMap
加载tiled创建出来的 Isometric(Staggered) /Hexagonal(Staggered) 地图,一个会缩成一堆,一个会整体成菱形 但是用cc.
TMXTiledMap
加载就不会有问题
这个应该是引擎目前的bug
4).我没有细致看加载tiled map的Cocos2dx引擎代码 每个tile底层实现为sprite,看看项目后期能不能优化那些永远不会改变的layer 减少遍历或者循环的次数 / 出屏不计算(绘制)
3.特效编辑器
1.ParticleDesigner 破解版有1.3的 2.0的需要购买
2.网页版的Particle 2dx
3.cocosParticle editor 这个只有windows版本
几个软件看你怎么顺手怎么用 导出plist给引擎用就是了
需要注意的是所有你在软件里面设置的参数都是可以在程序内部配置的,如下
localparticleSystem=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来设置这些变量
4.其他的一些工具
1.骨骼动画编辑器 Spine这个基本都是给美术用,程序使用导出文件就是了
这个论坛不错 :http://www.cgjoy.com/forum.PHP?mod=forumdisplay&fid=331
2.texture packer 一个合图的工具
其他的一些杂谈:
Cocos2d-x纹理优化
Cocos2d-x socket长连接
如何实现强同步游戏:
目前已经实现CCEXP高性能版本的包含:
c.TIledMap
原文链接:https://www.f2er.com/cocos2dx/342345.html