一段用Cocos开发微信小游戏的经历

写在前面

本篇blog是我的第一篇csdn的blog,并没有很多的干货,主要记录的是一个游戏小白最近从零开发一个小游戏的艰难过程中的一点心得体会,所以读到这篇文章的你请不要对里边的的技术质量抱有任何过高的期待,如果你们对我在文中提到的小白方法有任何改进的建议,跪请大佬们在评论区多多指教!!

写游戏的缘由

我是软院的大一生,抱着对计算机的浓厚兴趣和学习新技术热情,我便应同学邀请组队参加全国微信小程序开发大赛(大概就是这个名字把,错了别打我【doge】),于是,便开启了长达3个月的四处碰壁之路。

开发过程

4月~5月的学习阶段

今年还是特别奇幻的一年,上了梦想中的网课,但现实很骨感,作业还是一样的多,甚至是更多,最重要的是老师讲课的进度一直是按计划持续“飞奔”,因此课后去复习的时间也要消耗很多,所以基本上一个礼拜就大概就周末左右有时间去学习游戏,再加上队伍里边都是小白,没有接触过任何游戏的知识,(那时候我们也不知道有没有指导老师,所以只能自己摸着石头过河去搜索做一个游戏需要什么知识),所以在前期光是找游戏大概要怎么实现,要学习什么,怎么学就耗费了很多时间,中间也是挺焦虑的,因为之前没有都没有试过完全是靠自己去摸索道路。下面是我,一个纯小白,瞎摸索出来的学习思路,大佬们看着乐一下就可以了=.=!(说实话,我的确没资格分享什么思路,毕竟我是第一次开始写游戏,都是很生疏的,因为我是用cocos作开发引擎的的,所以下面介绍思路也是以cocos为主)

  • 首先整体说一下开发工具把(潘旭老师的教学视频会有教怎么安装cocos和vscode,以及将vscode绑定到cocos)
  • cocos creator,用于开发游戏,下载链接: cocos
  • vscode,用于编写js代码
  • 微信开发者工具,用于将cocos开发的游戏转接到微信,并且结合微信的API进行开发
  • 首先需要学习一点js的基础语法:整型,字符串,对象等数据类型,回调函数,匿名函数什么的,不用学太深,基本上学完回调函数觉得基本可以写游戏了吧。可能有朋友会觉得没必要去花时间学js,直接套模板就好了,但是我觉得模板没有理解,是很难内化为自己的知识然后融合其他技术的,并且js也可以用于网页开发,技多不压身,何乐而不为呢?我当时学习js的话是在B站上学的,看的课程是某个up主搬运珠峰培训班的视频,现在好像没了。但是估计还有很多好的课程。我当时也只是学到匿名函数。(正则都没学-.-!后期继续学习!)
  • 去B站搜索Cocos Creator零基础教程视频跟着熟悉一下Cocos的基操是看潘旭老师的教程的,B站也有其他老师的不错的入门视频)
  • 接下来就是找几个游戏的模板,可以直接加一些qq群,或者论坛上去获取一些游戏的源码,群文件啊什么的,然后去模仿,如果觉得看源码难的话可以直接去B站搜一些游戏的教学视频,加深cocos和js的理解。我的建议就是一定要跟着视频多打代码,跟着视频做demo然后把demo消化好,为后面自己的游戏做准备。

转折-5月24日开始实战

其实中间学习过程我们队伍是很焦虑的,因为没有开发经验,所以对一个完整游戏的开发没有明确的时间观念,而且队伍思想也挺散漫的,大家都各自忙自己的事情,于是在5月24日这一天,直接摊牌了,队员直接决定要不要做下去,事实也证明了,坚持是有多么重要,当时投票决定了继续的时候,我们都下定决心要做了,然后我们花了半天讨论了,否定了2个月来的游戏玩法,确定了新游戏的新玩法和主题,然后又开始了长达一个月的痛苦碰壁边学边开发过程。我负责的是游戏的整体规划,游戏数据的准备以及后端配置。所以下面分享我几个写的过程中遇到的问题以及解决方法把。

  • 图片资源和音效资源因为考虑到版权问题,图片几乎都是我们美术原创(队伍里边一定要有专门的美术人员负责,否则开发效率就会降低很多)这里分享一个素材的网站爱给网里边的资源有部分是可以商用的,如果想拿去参赛什么的,可以在里边cc协议库里边查找。
  • 如何高效地书写重复的js代码,这里的“重复”当然是指不能通过单纯循环解决的,有些朋友可能会说用js的key/value文件系统,但是微信没有浏览器功能,不支持文件系统(我们当时用这个方法做到后面转移到微信才发现没办法使用,踩了个大地雷。。)我的做法是通过其他编程语言(我是用C)利用他们的文件系统来书写js代码,然后直接在cocos独创一个全局脚本把这些代码复制过去即可。
  • 玩家数据存储问题,如何获取玩家上次玩的数据,以及怎么悄悄保存玩家数据?因为我没有学习数据库的知识,所以我们直接利用了微信的云开发功能中的云数据库,至于怎么利用云数据库可以参考B站上云开发的教学视频 轻松入门微信小游戏云开发.这里边有很详细的教学视频。
  • 游戏包体过大问题,小游戏上传到微信如果想要上传为体验版,或者进行手机预览,单包不得超过4m,这对于一些图片比较多,或者音频比较多的游戏就不是很友好了,官方有两种解决方法,一是分包,二是利用远程服务器用loadres下载资源,我尝试过分包,但是尝试了很久,论坛逛了很多好像发现不能对图片进行分包,一直报错。。然后我们没有租服务器,运维知识也不是很多,所以最后我选择了还是利用云开发中的云存储,具体就是先将图片或者音频上传到云存储,然后获取他们的url,接着在cocos的一个全局脚本通过cocos的cc.loader.load来通过url来加载图片,把图片或者音频加载成sprite对象暂存起来,最后在你要利用到这些sprite的时候在onload赋值给对应的sprite就可以了,具体怎么存储上面那个视频也有讲。
  • 使用云存储加载图片还有一个坑,就是通过cc.loader.load渲染的图的大小不会跟你预设的sprite的大小一致的,这就需要自己进行微调了。
  • 排行榜功能,这个上面那个视频里也有教学,下面的代码是实现动态增加排行榜条目的时候动态增加scrollView的content的height,从而实现滚动查看。
for(var i=0;i<res.data.length;i++){// 循环的总个数当然就是排好序的包括你在内的玩家的总数
    this.createUserItem(res.data[i],i+1);// 这里是调用自己设立的创建条目的函数
    if(i>=4) this.content.height+=118;// 这的判断条件4是指初始的content只能容纳4个条目,如果加载的数量超过4个,content的height就要增加一个条目的长度,我游戏的单个条目的高度为118
}

队友情况

首先,作为一个团队项目,队友真的非常重要*3!我们队伍一开始有4个人,后期就只剩3个人,前期队伍真的很散漫,三分钟热度就是最好的概括词。大家都不知道该花多少时间在这上面,然后平时的课程难度还不小,这时候,一个人的内心是否坚定就很重要了,虽然这是个小游戏,但是我觉得,这又何尝不是未来工作中的投影呢?下面是我自己的对于以后找队友的建议。

  • 首先队友最好是自己找,尽量要找自己比较熟悉他性格的队友
  • 好的队友最重要的是责任心一定要强,交给你的任务当你接受他的时候,就一定要想办法在规定期间内完成,不要在接受了之后还犹豫不决,如果不能接受就应该立即向队伍表示拒绝,及时止损,犹豫不决只会脱了队伍的后腿,坦诚相见才是出路。
  • 队长要硬气一点,分配任务的时候就应该设立好ddl,如果队员过了ddl还没完成任务,就应该适当的去追究责任,让队友意识到拖团队的后腿的严重。不要一味的去纵容,因此,队友的情商也不要太低把(当然,能力超群的除外hh)
  • 然后队伍分配的话,我的队伍是3个人,两个人负责代码开发,一个负责美术绘制,基本配置就这样差不多了,1个人前端逻辑,1个人后端部署,1个人美术绘制。(全栈大佬请出门右转)

一点心得体会

感谢当时熬过了很多个痛苦的日子的那个不放弃,一直坚持的自己和脏脏。下面是无关游戏的一点心得体会。

  • 划水最后害的只是自己,想着在队伍里边划划水,然后靠其他队友带飞,混个奖项,然后在自己的简历什么的写上这份荣耀,看起来完美得很,实际上,世上根本就没有免费的鸡蛋,你拿着跟你本领不对称的荣誉,心虚不说,万一你面试的时候面试官刚好就问起你在这个项目中负责的部分,或者万一有一天,你工作或学习的时候用到的就是这方面的知识,到时面临的损失就是你为这份不对等的荣誉所付出的代价了。所以我认为,尤其是我们大学生,更应该老老实实的完成项目组交给的任务,认真的学习技术,淡化结果,在过程中成长才是我们参加实践的最大意义。并不是那些证书薄纸。
  • 准确评估自己的能力,鱼与熊掌是永远不可兼得的,当有多个目标放在你面前的时候,要学会准确评估你的能力,能够让你完成几个目标。你想在一个目标上拿到一定的成绩,就不要好高骛远,专心去做就是了,就算最后并未达成,但是奋斗的过程是绝对不会被结果所掩盖的,不要老想着我失去的那些目标会怎样,因为我们中的大多数人,自己的才能明明只够我们专心的去追求一个目标,却经常盲目追求勤奋能弥补一切,做着天真的梦想,殊不知患得患失只会让我们中的大多数,竹篮打水一场空。

写在后面

ball ball 大佬轻踩,甩我几个good advice再踩把!

上一篇:cocos试用,文档体验挺差的


下一篇:cocos lua 背景音乐知识