cocos2dx及cocos creator编写农场偷菜小游戏的总结

2020/04/20 cocos 共 2918 字,约 9 分钟

源码及效果图见GitHub:cocos制作的农场游戏demo源码 一个cocos2dxC++版本 一个cocos creator版本

起因是要做游戏保护,需要了解游戏引擎并创建demo进行自测使用。于是先从比较简单的cocos了解,由于本人对Lua脚本比较熟悉,而且手头有一些从其他游戏里扒出来的资源和Lua脚本,想着可以复用,所以打算从cocos2dx-lua开始着手。

慢慢地发现Lua写起来也很费劲,倒不是对设计模式和脚本的不了解,而是cocos导出的接口什么的不熟悉,虽说可以查官方文档,但毕竟是非强类型的动态脚本语言,返回的类型什么的不确定,而且没有智能提示,写起来很是痛苦。

遂放弃Lua脚本,想着对 C++ 很熟悉,于是转用 cocos2dx 4.0的C++版本,代码写起来是顺手多了,而且设计模式和框架搭建也很轻松。但是,但是,在UI界面设计上却是非常麻烦,不能所见即所得,往往是界面设计远远跟不上代码的编写,很是痛苦。

于是C++版本的农场偷菜小游戏,也就写了个大概就果断终止了。

然后看cocos官网,了解到了cocos creator,下载体验一番后,发现在UI界面设计上的确是个神器,可以不写一行代码就可以快速出原型,而且是所见即所得,速度非常之快。

但是,也有一个问题,就是代码编写远跟不上UI界面的设计速度(至少是少了一个远),因为是使用的JavaScript语言,这个语言我一直不太满意,也比较抵触。但是没办法,JavaScript的江湖地位是有原因的,特别是随着web和移动互联网的发展一路崛起和火热,这是跟着时代的潮流走对了方向,本人是很恶心这门语言。

但是抛开个人感情色彩理性地去考虑,JavaScript和Lua脚本一样,都属于非强制类型的动态脚本语言,它们的优点也是它们的缺点,在快速开发和系统性设计及大型项目中,有 2 个天然不足:类型不明确不支持智能提示、没有面向对象思想,要知道这些缺点可是致命的。

所以,我也就快速搭建了下UI界面效果,没打算多写JavaScript代码。

于是思考:特么的,为什么就没有一个脚本语言能有强类型而且支持面向对象思想吗?

幸运地是,翻看网上博客的时候了解到了TypeScript,强类型而且支持面向对象,尼玛简直就是我所需要的,想想也是,我能感受到痛苦其他开发者也一样感受到痛苦,编程语言往往就是这样应运而生的。

翻看TypeScript百科,原来它诞生很多年了,是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScript代码。

从网上了解到这货前几年已经很火了,感叹自己为何现在才去了解?因为一直都秉持:技术的编程语言都差不多,掌握自己熟知的语言就足够,没必要学那么多让人眼花缭乱的编程语言,看来这个想法是错误的,编程语言可以不去学,但是一定要知道有这个东西,可以尝试去了解其设计思想,有何优点有何缺点,背后诞生的动机。

可以去类比的语言诸如csharp、Python、go、kotlin、php等等,想明白了就知道为什么kotlin不会火起来,为什么C/C++、Java可以长盛不衰。

回头再去看TypeScript,它正是解决了我上述遇到的痛点,解决了广大的开发者的痛点。

然而,解决了这些问题还并不是很完美,再回到cocos creator上来。UI设计太强劲了,而且可以跨多种平台,让开发者的效率成百倍的提升。但是代码开发上我觉得仍然不是很完美的,即使是采用TypeScript,我说说几点个人感受:

  • 代码编辑依赖外部专业的编辑器,IDEA的webstorm应该是最专业的了,但是貌似用起来又太重,VSCODE不算完美但是轻巧,所以官方也是推荐用VSCODE,但说实话VSCODE还是差的太多,连自家的VisualStudio都差一大截。
  • 代码编写还是蹩脚,写起来不顺,绑定关系看着有点晕,说是数据和功能分开,但是真搞不清,可能我对这个工具还是不熟
  • 程序启动逻辑不够系统化,都是分散的片段、片段……

虽然上面的各种不爽,但是估计是对前端开发人员来说可能已经足够好了。cocos creator利好的可能是美工人员以及H5小游戏的开发者。

鉴于以上的经历和认识,后面代码我是不打算写了,这次摸清了几件事:

  • 以后不碰JavaScript了,有TypeScript就选择TypeScript,没二话!
  • cocos creator 做原型设计,UI界面没话说,快就一个字!与之对应的白鹭引擎可能也是类似的,有机会也体验一下吧。
  • 有空可以看看cocos creator的官方示例和视频教程,了解优秀的设计思想。
  • 有空可以看看其他人写的cocos creator+TypeScript例子,看看是否真正解决了自己的痛点,还是说它本身就是这么回事。
  • 最后感叹:程序员似乎都是在为他人解决痛点,很少能为自己的同行解决,如此看来,csharp、Java还真是目前思想和设计上一流的语言。
  • 脚本编写也是基于cocos2dx引擎的,引擎本身才是核心,游戏脚本编写会了又怎样?也不过是搬砖,但话说话回来也可以去实现自己心中理想的游戏世界,有情怀的也可以去创造自己的作品。
  • 会写小游戏跟写一个好玩的游戏、能赚钱的游戏之间还差十万八千里,会写只是说入门了,可以开始搬砖了,但话说话回来也可以去实现自己心中理想的游戏世界,有情怀的也可以去创造自己的作品。
  • c++ 这块的语言优势没有利用起来,建议是让引擎、ui设计与游戏代码开发分开,cocos creator生成的界面也能为 c++ 版本使用,界面数据可以分离导出使用,这块可以参考protobuff的设计思想,有一个自动生成的工具。
  • 要想一下unity比cocos更火的一个原因,除了游戏ui设计(这块最终都会差不多),它还采用了一个绝佳的编程语言csharp
  • cocos乱象,什么cocos、cocos2dx、quick、 什么studio、什么creator 让人眼花缭乱,分不清都是什么跟什么,乌七八糟。
  • TypeScript(含js)会继续热下去,也会一直是小游戏的主流语言,没办法,趋势如此定位如此,跨平台及前端大军的市场份额已经很难再动摇其地位了。
  • 可以多了解下游戏的周边工具,真的蛮有意思,设计也很有创意,这次就从零接触了:cocos creator、Tiled Map Editor、Cocos Studio、TexturePacker、TextureUnPacker、DragonBones,推而广之,就是很多东西你可以不必深入学习掌握,但是了解下也能开开脑洞和思维。

最后,把效果图贴上来,这个效果如果简单了解cocos creator的用法(如果不了解也没关系,花5分钟就可以了解了,就是如此神器),几分钟就可以搭建出来了,主要是素材的积累。素材在真实项目中要靠美工,我这个全是网上搜索的,有一部分使用了Farm: SDL SDL_Engine开发的一个农场类游戏里的资源,有一部分是从老版本的率土之滨里扒出来的资源,以上资源均是学习研究使用,均没有做其他目的使用,如果侵权请告知,会在第一时间删除。

把项目也全部开源上传到GitHub,有兴趣的可以参考学习,也可以在上面迭代。

文档信息

Search

    Table of Contents