怎么样入门微信小游戏开发?

就是刚刚更新的跳一跳这些,得用什么语言写呀。 做一个简单的小游戏(比如俄罗斯方块啥的,或者更简单的…)需要怎么样入门… 已经入门的人做个简单的小游戏要…
关注者
366
被浏览
188,431

27 个回答

个人觉得用Cocos Creator做微信小游戏非常合适,上手很快,会点JS基本扫一般Cocos的用户手册就可以上手了,Cocos的论坛还是挺活跃的,做的过程中遇到问题去Cocos的论坛搜一遍基本都能找到解决方案,安利一下最近用cocos creator刚做的微信小游戏,【套个圈】魔性的音乐节奏类休闲套圈游戏,轻块耐玩,放松的同时还能弹出好玩的音乐,微信扫描二维码就能玩起来:

套个圈微信小游戏


顺便总结了快速上手Cocos Creator和微信小游戏的学习路径:

一、Cocos Creator篇总结

1、首先熟悉官方的手册和api文档,文档还是比较详细,游戏的方方面面都涉及到了

官方手册

官方api文档

2、快速上手,跟着官方的快速上手项目快速了解一下小游戏的制作基本流程
快速上手项目

3、遇到问题了怎么办?先去官方论坛搜一遍,论坛还是比较活跃的,常见的坑都被人踩过了,基本都能找到解决方案
cocos官方论坛

4、它山之玉,可以攻玉,看看别人的总结和教程

推荐cocos官方王哲总结的帖子已经相当全面了
关注cocos的官方微信号,了解最新动态和指导,例如这个 总结也不错

5、特效动画相关

5.1、骨骼动画,推荐免费的dragonbones:

dragonbones.com/cn/inde

dragonbones教程

5.2、shader动画:

推荐这个库: github.com/fylz1125/Sha

shadertoy.com/

5.3、粒子特效编辑器,推荐免费的:

effecthub.com/particle2

onebyonedesign.com/flas


6、物理碰撞系统

box2d物理系统案例推荐这个官方的案例开源项目,里面有很多案例: github.com/2youyou2/phy

7、开源项目篇

推荐这个游戏项目,做的质量很好,推荐学习: github.com/cocos-creato

二、微信小游戏篇总结

1、首先也是熟悉cocos发布微信流程,一键发布到微信开放者工具里

docs.cocos.com/creator/


2、微信官方文档和论坛,遇到问题就去扫一遍:
developers.weixin.qq.com


3、微信小游戏的常见关注的几个点:

3.1 、微信游戏圈

给小游戏增加小论坛的入口,让玩家可以分享讨论游戏,还是挺实用的: developers.weixin.qq.com

3.2、转发小游戏
转发有两个出发地方:1、点击右上角三个点转发小游戏,2、自己在游戏中触发 developers.weixin.qq.com

3.3、微信排行榜 关系链数据

排行榜这个比较麻烦一点,微信为了保护自己的关系链数据,引入了游戏的开发数据域的概念,游戏会存在主域和开放数据域两个上下文,在开放数据域里能拿到排行榜这样的关系链数据,然后此时我们将数据信息绘制到sharedCanvas上共享给主域来展示,主域是拿不到关系链数据的
cocos有个官方的解决版本,就是子域也引入cocos的框架来做可能会加大包的大小
这个版本的排行榜不错 github.com/864381832/wx

三、素材资源篇总结

1、图标矢量图等素材

阿里巴巴开源的这个素材库相当不错: iconfont.cn/search/inde

2、音频素材等
taira-komori.jpn.org/in

aigei.com/sound/class/p

3、粒子特效素材等

effecthub.com/item/demo

最后再安利一下最近用cocos creator刚做的微信小游戏,【套个圈】魔性的音乐节奏类休闲套圈游戏,轻块耐玩,放松的同时还能弹出好玩的音乐,微信扫描二维码就能玩起来:

套个圈微信小游戏


关于这个问题,可引用腾讯云技术社区的文章 《邹伟:如何开发一款小游戏》 进行回答。

原作者邹伟,腾讯高级工程师,现主要负责微信游戏业务后台系统的架构设计与研发管理。

以下主要选取文中关于 引擎选择、设备/环境适配、微信登录、缓存、开放数据域、分享、支付、性能、版本更新机制、运维 等10个部分为大家介绍小游戏开发的相关知识,更多详情欢迎 阅读原文

在开发的视角来看,小游戏是一个基于Canvas/WebGL + 微信社交开放能力的新平台。在框架上看分为三层,是一个典型的分层架构。微信中有一个小游戏的Runtime去运行小游戏,而OS本身可能会涉及到不同类的设备。

如果放大小游戏的Runtime可以看到很多的细节,第一就是游戏逻辑,也就是与平台无关的游戏逻辑的开发。第二部分是游戏引擎,大部分会用到一些引擎的工作流、一些各种系统封装好的高层的API。第三部分是weapp,小游戏的框架是参考了webview的框架,但其实它的底层不是webview,而是webview精简优化过的平台,小游戏有的只是与核心相关的一些渲染的API。这里的weapp-adaper是把小游戏的能力适配到与webview更接近的环境,让更上层的游戏或引擎本身能够更快速地集入到平台中。

接下来主要向大家介绍一下如何利用微信的能力来开发小游戏,可分为以下10个部分。

1、选择小游戏引擎

首先在开发游戏时要选择引擎,我们与引擎商也有着比较密切的合作,开发小游戏的引擎一定要是适配的。比如在底层,一开始引擎可能只支持原生的游戏,在微信小游戏上就要做一些适配,依赖浏览器特有的能力。Cocos Creator、Egret Engine、LayaAir Engine这三个引擎已经支持了小游戏的开发,网上也有相应的文章介绍如何发布到微信小游戏的平台。

2、设备/环境适配

有关设备管理的适配,小游戏会有API提供获取屏幕的宽高、设备像素比等能力。在小游戏开发完成后,在开发者工具也可以发起真机测试的请求,微信提供了不同设备的测试集群,帮助开发者提前去发现问题。基础库提供的wx API本身是一个不断迭代更新的过程,对于使用了新能力的小游戏,需要做低版本兼容。比如在检测到不支持新 API的低版本允许有损服务用户。同时,如果某个低版本的用户占比较少,可以考虑在管理后台直接配置小游戏要求的基础库最低版本,当然也意味着这一部分用户在接触到这个小游戏时,微信客户端会弹出一个要求用户更新到微信新版本才可使用该小游戏的提示,如果不更新可能就会失去这个用户。

3、微信登录

小游戏的登陆过程与小程序类似,需要用户自定义登录状态。appsecret/session_key代表的是小游戏开发者和微信平台之间的一种信任约定,比如支付、上报托管数据,平台方需要验证 access_token,和用户相关的还要验证session_key的签名,才能保证请求来自于小游戏开发者或用户。access_token是一种应用态的 access_token,与用户无关,需要保证全局维护一份,应该有一个中控的模块去保证 access_token有效,同时在有效期内直接使用本地 cache的 access_token,而不是每次使用都去生成新的 access_token,否则可能遇到调用频率限制的错误而影响服务。切记 appsecret/session_key不要放到前端代码中去,否则可能会被恶意利用从而损坏小游戏开发者或用户的权益。

4、缓存

缓存类型包括数据缓存和文件缓存两种。数据缓存即key-value存储,适合结构化类型的小数据存储,上限为 10MB。文件缓存提供了一个完整的文件系统 API,包括目录 /文件的增删改读,适合针对经常使用的网络资源做本地缓存,上限是50MB。

和浏览器不同的是,微信只提供了基本的存储管理能力,并不对存储什么以及存储满时删除什么做一些操作。开发者自行灵活定义缓存及淘汰策略,比如对经常访问的资源存储到文件系统以及在文件存储满时,清理一些最近不常访问的文件。

5、开放数据域

我们来说一下开发数据域,也就是在保护用户隐私的前提下把用户的数据开放给小游戏。这是一个封闭、独立的javascript作用域,开放数据域是一个独立的目录,其入口文件是index.js。目前的限制在于仅支持2d渲染模式,数据只进不出。比如说一个排行榜,它的目的肯定是用来给用户看的。

我们简单看一下它的实现方案,左边是主域。用户拿到这些数据后实现排行榜其实也是一个Canvas。它的区别在于Canvas不能把数据取出来,无法分析其中的数据是什么。主域里面有一个Canvas,在微信里上屏Canvas跟屏幕关联,后面都是离线的Canvas,离线的Canvas可以自己根据需求使用的。一旦开放数据以后,上屏Canvas不能把里面的数据取出来,下一个Canvas也不能取出来,保证了数据的安全性。

因为我们的数据在开发数据域中,用户没有办法进行开发。所以要求开发者在开发时将需要的数据托管到我们这里,与用户关联起来。这样就可以在开发数据域里面取到相关数据,其应用场景有好友排行、群排行榜、超越好友提示等。用户在输入的时候,重复用户的所有操作,在上屏的Canvas和离屏的Canvas上就得到了用户的所有输入,不会有开放数据渗透进去。

6、分享

如果用户在游戏中达到了很高的分数,可以与好友PK一下。在自定义转发的窗口,标题和图片都可以自定义。但是现在有很多小游戏非常骚扰用户,他们做了很多一定需要分享,才能允许玩游戏的设定。这是大家需要思考的部分,如何既不影响用户的体验,又能够促进小游戏的互动,在这里需要找到一个合适的平衡点。同时,在分享数据后将小游戏与这个群聊关联起来,我们就可以看到一个小游戏平台。

7、支付

小游戏是支持虚拟支付的,但目前仅适用于安卓系统中。且它的方式目前只有一种,即货币托管的方式。主要分为两个流程,一是用户花钱购买游戏币,这与游戏的服务端是没有关系的。发起支付时微信客户端会生成一个订单,让用户确认支付,这是异步的。平台负责把用户RMB兑换成对应的游戏币,存储到用户对应的游戏帐号上。二是使用游戏币购买道具,开发者可以扣除对应的游戏币,给用户发放游戏内道具,扣除游戏币的过程需要有一定的事务机制,保证在网络异常的情况下交易正常。扣除游戏币的接口支持根据订单ID去重,意味着在网络超时等情况下,开发者可用同样的订单ID去重试扣除,直至返回明确的响应。

8、性能

小游戏常见的性能问题,一般是内存造成的。如果内存占用太多会被微信客户端主动关闭,因此开发者在用户游戏过程中要及时释放不再使用的内存,特别是Canvas和Image类的大型对象,同时可以主动调用wx.triggerGC触发底层回收对应资源。对于和游戏逻辑相对独立的工作,可以考虑在worker中去实现,小游戏提供了独立的worker线程执行js逻辑的能力。

9、版本更新机制

小游戏有热启动和冷启动之分,冷启动是指内存中无该小游戏的运行实例的情况下,启动小游戏的过程;热启动是指小游戏的运行实例在内存中还存在,只是暂时切换到了后台,这时用户再次触发小游戏回到前台的过程。在如果用户点击启动之后,游戏运行时会加载出来这款游戏。在点击右上角的菜单时,按纽只是挂后台,在一定的时间内再启动时,它会立即恢复,这时内存将会释放。

小游戏会在冷启动时检查小游戏的版本,如有新版本,在下载回本地后,下一次冷启动即可使用最新版。当然,我们也提供了 API可以供开发者决策在有版本可用时,是否需要强制更新,应用最新的版本。

10、运维

管理端提供了发布、回滚、停服等能力,开发者可以充分利用平台的能力。比如在后台操作中,js可能会报错。脚本错误主要由运行过程中未捕获的异常触发,该类异常可能会导致用户小游戏前端的js逻辑暂停执行。同时,平台也提供了完善的数据分析服务,可以通过小游戏使用助手进行数据分析。

以上是 腾讯高级工程师邹伟 对于 微信小游戏开发 的技术总结,最后再向各位推荐几篇与小游戏相关的精品文章,希望能够为大家系统学习小游戏开发的相关知识提供帮助。

余国良:微信小游戏的架构设计与开发

李明:微信小游戏技术分享

鹅厂优文 | Cocos微信小游戏开发