自学cocos2d js游戏开发应该按什么步骤进行

JavaScript018

自学cocos2d js游戏开发应该按什么步骤进行,第1张

跟你简要说一下我的自学路,以免你走弯路

背景:

有工作,而且很忙;在不影响工作基础上用业余时间鼓捣(经常会因为工作耽搁学习进度);基本没技术背景(初中qbasic、高中pascal半吊子),大学文科,工作也不是搞代码。因此我感觉我的自学路跟你还是挺契合的。

1

两年前的一天,决定要做独立游戏制作人。选定引擎cocos2d,开始学习objective-c语言;(如果你打算只在iOS平台开发可以学obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;当然unity什么的也不错但是我还没尝试过,一直很向往)

2

我跳过了iOS程序开发(似懂非懂看完了斯坦福那一系列的教学视频),结合当时情况直接选择了cocos2d引擎,这时开始接触 @吴一刀 推荐的博客;我主要看的是子龙山人<子龙山人 - 博客园>、Ray Wenderlich<Ray Wenderlich>、Himi<黑米GameDev街区>这些博客里最基本的例子,知易那个以我当时的水平还看不懂。

3

尝试开始设计自己的简单游戏,我做打地鼠!当然比教学例子里的打地鼠复杂多了

4

这个过程中发现自己懂的实在是不够,所以又开啃这本书:Learn cocos2d 2 by Steffen Itterheim &Andreas Low

5

慢慢的发现需要一些趁手的工具和编辑器,并发展出一套自己构建于cocos2d之上的游戏设计架构。我目前的情况是这样:

关卡编辑我使用plist文件配合自己写的类;

sprite sheet使用TexturePacker<TexturePacker>;

动画/UI编辑最初自己手写太累,后来选择了cocosbuilder,请注意现在这个软件已经停止维护,转而引导用户使用SpriteBuilder<SpriteBuilder>(域名都做了自动跳转;SpriteBuilder我木有研究过,建议你研究一下)。

粒子编辑我自己还没实际用到,如果真正需要我感觉cocosbuilder的够我用的。//更新:后来用到了ParticleDesigner和cocosbuilder两个软件的粒子编辑混搭

我当时遇到的一个大麻烦是如何让cocosbuilder、cocos2d版本互相兼容且cocosbuilder无问题。大概情况是这样:cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不协调怎么办?;What version of Cocosbuilder and Cocos2d-iphone should I choose?

目前我使用的cocosbuilder 2.1版本(渐变层有bug、并且很可惜动画播放完没有触发消息的机制,我只好把每个动画时长都手动记录一下自己处理)

======3月12日更新======

在 @GarfieldKwong 指点下发现这个版本动画播放完是可以触发消息机制的,更高级版本3.x支持的效果应该是在动画中就加入callback的关键帧

新技能get√

具体代码可见下面学习案例的第一个例子里Explosion部分

=====================

cocosbuider的学习可以看两个例子Creating a Game with CocosBuilder;Introduction to CocosBuilder;然后就是多用多尝试。

6

整个学习过程要学会查资料、学会寻求帮助,我主要用的stackoverflow(话说刚刚发现stackoverflow的reputation喜过15,终于可以投票了:)

在学习过程中得到了子龙山人(我认为本尊是这位 @屈光辉 )、LearnCocos2d作者Steffen、 @kubisoft 以及众多网上朋友的帮助,再次表示感谢。

7

硬件及开发者资格:看完c++开始看obj-c,这个过程一直是使用的vmware虚拟机安装的mac系统写程序;然后入手一个最便宜的mac pro、以及iPhone,尝试玩各种游戏;从看c++开始大约过了1年半(已经有非常简陋的游戏demo)才真正购入iOS开发者资格并开始真机测试。

8

尝试过的一些其他工具、各种弯路和坑、以及发散内容:

可以拖拽方式写代码的stencyl <Stencyl: Make iPhone, iPad, Android &Flash Games without code>;

最初学的不是ojc-c而是谭浩强老师的c++程序设计(虽然有人不喜谭老师,但那书是中文的让我对面对对象程序设计有一些初步的概念,再看英文的obj-c不至于太摸不着头脑,反正手头正好有这么一本买了6年没看的c++。。。);

尝试过<Tiled Map Editor>但自己目前的坑没有用到;

尝试过一点物理引擎和粒子,但自己目前的坑没有用到;现在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU占用优化,内存方面我最低支持4S没遇到大问题

学习音乐制作,这个我小时候学琴一直也喜欢音乐所以有一点点底子,如果没有基础可能上手有门槛;开始用的软件LMMS,但是音源插件在64位系统的问题我一直没解决掉时间精力也不多,所以是暂时停滞了;最近发现Garage Band可能也可以写歌;另外还试过一个很有历史的微软的音乐自动编辑器,很好玩,用来做背景音乐也不错。

入手手绘板学画画(这中间纠结了好久才决定用位图不用矢量图),如果你能找到热爱游戏的美术同学一起搞那最好不过。但是我一直对画画心痒难搔。。。所以入了这个深坑,晒一晒:

转载

z

自动释放资源: 切换场景后,上一个场景中的资源,从内存中释放。

延迟加载资源: 意味着不用等待所有资源加载完毕,才显示场景。(快速切换场景,资源陆续在画面显示)

普通图,子层为一张spriteFrame。

创建方式:拖拽场景节点,到资源管理器。

精灵图,子层为多张spriteFrame。(精灵图合成软件:TexturePacker、Zwoptex)

打包时,将所在目录中的所有碎图,合成为图集。

数字为内容的图集。

动态字体:.ttf

位图字体:.fnt + .png(存在于同一目录)

小型动画

模式: web audio、dom audio

操作流程:

(1)导出:文件 =>资源导出,选择 .fire场景文件,输出assets目录的 .zip压缩包。

(2)导入:文件 =>资源导入,选择压缩包源路径、解压路径,输出assets目录内容。

基于size mode,尽量去除spriteFrame无像素的部分,减小图片尺寸。

作用: 用于变换、子节点定位基准。

对摄像机、渲染组件的了解。

对widget、layout等UI组件的了解。

(1)创建动画的基本流程

(2)时间曲线(双击动画线,进入编辑窗口)

(3)事件管理(双击游标、加减按钮控制参数个数)

(4)脚本控制

碰撞组件(普通碰撞)

(1)editing——是否为编辑模式

(2)regenerate points——计算图形边界,自定生成控制点,数值为控制点的生成密度 / 准确度

(3)ctrl + 点击——删除控制点

(4)组件类型:矩形、圆形、多边形

(5)设置碰撞组(项目 =>项目设置 =>分组设置):

制定分组 =>匹配分组 =>碰撞组件所在节点上,设置所属分组

(6)脚本控制

Box2D物理引擎(高级碰撞)

(1)audioSource组件

(2)脚本控制

(1)定义 CCClass

(2)实例化

(3)判断类型

(4)构造函数(ctor)

(5)实例方法

(6)继承(extends)

(7)父构造函数

(8)完整声明属性

properties常用参数

(1)获得组件所在的节点

(2)获得其它组件

(3)获得其它节点及其组件

(4)访问已有变量里的值(通过模块访问)

(1)节点状态和层级操作

(2)更改节点的变换(位置、旋转、缩放、尺寸)

(3)颜色和不透明度

(4)常用组件接口

cc.Component 是所有组件的基类,任何组件都包括如下的常见接口:

(1)创建新节点

(2)克隆已有节点

(3)创建预制节点

(4)销毁节点

(1)加载和切换

(2)通过常驻节点,进行场景资源管理和参数传递

(3)场景加载回调

(4)预加载场景

(1)资源属性的声明

(2)静态加载(在属性检查器里设置资源)

(3)动态加载

(4)加载远程资源和设备资源

(5)资源的依赖和释放

(1)监听事件

(2)关闭监听

(3)发射事件

(4)派送事件

(5)事件对象(回调参数的event对象)

(1)鼠标事件类型和事件对象

(2)触摸事件类型和事件对象

(3)其它事件

(1)动作控制

(2)容器动作

(3)即时动作

(4)时间间隔动作

(5)动作回调

(6)缓动动作

(1)XMLHttpRequest——短连接

(2)WebSocket——长连接

对象池的概念

在同一场景中,需要多次进行节点的生成、消失时,假如直接进行创建、销毁的操作,就会很浪费性能。因此,使用对象池,存储需要消失的节点,释放需要生成的节点,达到节点回收利用的目的。

工作流程

(1)初始化对象池

(2)从对象池请求对象

(3)将对象返回对象池

清除对象池

不用学习cocos2d-js,直接学习creator的开发模式就可以了,因为现在官方主推也是creator,但是前提是需要会js。

js基础会了以后,然后看官方文档知道ide如何使用、编写脚本,后面就是看官方demo熟悉api,自己根据想做的游戏尝试做一些demo了。