云开发为小游戏场景开发带来的便捷与助力

2024-05-30
来源:网络整理

前言

之前只在朋友圈看到过云开发这个词,上个月腾讯云TLC猫眼上的一些分享也涉及到了云开发,今天的晨读文章由腾讯云@涵婷 授权分享,本文来自公众号:云加社区(ID:,腾讯云官方开发者社区)。

@杨航,腾讯云前端工程师,一直负责腾讯云控制台及云开发相关业务,在前端组装和工程搭建方面有广泛的涉猎和一定的经验,并持续关注前端技术的发展方向。

正文从这里开始~~

云开发带来了哪些便捷的能力,使用起来的体验是怎样的,云开发对于小游戏场景开发又有哪些银弹助力?主要从历史情况,为什么会有云开发?云开发是什么样的?以及我们的实施、规划、思考进行阐述。

小游戏发展现状

我第一次知道小游戏,是在 2017 年 12 月上线的 Jump Jump,大家在朋友圈、群里转发,产生了这样的营销效果。在小游戏出现之前,最火的游戏都是传统的 H5 游戏,当时像《围攻疯猫》这样的游戏,在短时间内就被广泛传播。

我们先来看一下 Jump Jump 这款小游戏的特点,在微信中就可以直接使用,加载速度比普通 H5 快很多,点开就可以用,底层封装屏蔽了不同平台的差异,暴露相同的接口,基本上一次连接之后,无论是 还是 IOS 都可以直接在微信运行环境中运行。

有经验的同学都知道,H5是基于浏览器的,根据不同的场合,不同的机型,甚至不同的应用内核,有很多地方需要兼容。小游戏不存在这样的问题。小游戏基于微信,天然具有可分享性,可以很方便的分享到图文平台,群聊等。小游戏底层是基于的,是在原生上做了一层封装,所以它的性能会好很多。另外基于微信,可以随意扫码,可以搜索,或者根据好友推荐轻松获取。

基于这个特点,不同场景的小游戏也有很多。最左边是进博会官方小游戏,配合展会推广。口袋工匠是故宫博物院做文物推广的小游戏。最右边是腾讯的“灯笼山行动”,一个很有影响力的公益小程序。这些小游戏大多是休闲游戏,可以随时随地玩。从轻量级的角度来说,等地铁、等车、等电梯的时候,利用碎片时间玩,非常方便。从文化的角度来说,小游戏也可以很好的传播,这些都有非常丰富的文化属性,有千万级的用户。

小游戏生态有数十万开发者,小游戏月活跃用户已达4亿,与传统手游用户规模相当。小游戏潜力巨大,超过58%的用户年龄在30岁以上,31%的用户年龄在40岁以上。未来父母将成为小游戏的主力军,我们过年回家,看到父母在玩各种小游戏,比如跳一跳,他们的水平比我们强多了。

上图左下角是单次留存、七天留存、一个月留存的数据,能达到这样的留存实属不易, 上内购流水过千万的小游戏有 10 款,小游戏变现能力丰富,商业潜力巨大。

生态的丰富来自于基础能力,从最开始的适配各类引擎,从标准图形库到引擎,门槛逐渐降低。还有一些硬件接口的暴露,比如前面提到的陀螺仪、重力传感器,拓展了游戏开发的边界。

基于微信独有的关系链、图文安全、动态消息、内购等能力,以及完善的数据运营和金融结算能力,整个生态进入了良性循环,开发者可以利用微信完善自己的小游戏,并从游戏中获取收益和推广。

为什么需要云开发?

除了小游戏基础能力之外,在开发层面还有云开发。云开发是基础设施层面更加轻量级、创新的服务端开发模式,可以降低开发门槛,让开发者专注于业务内容创作。

为什么需要云开发?在传统的开发模式下,我们觉得有很多痛点没有解决。首先如果要发布一个生产级的应用,除了保证业务逻辑没有问题之外,还有很多事情需要自己处理,比如高并发、弹性伸缩、负载等。每一项单独讲起来难度很大,作为业务开发人员很难全部活在里面。从现代软件工程的角度看,让更专业的人做更专业的事,可以让你的服务更稳定,这个逻辑才是高效的。

传统模式下,从物理机托管,有自己的IDC机房,到上云,使用云服务云主机,再到PaaS层面的服务,比如容器、监控,这些都在降低资金投入成本,降低人力投入成本。云上封装的层次越高,暴露的越少,需要关心这些东西的人就越少。就算到了PaaS阶段,还是需要专业运维人员跟进,我刚才说的。相比于人力和自动化能力的引入,错误的引入可能带来的风险更大。

现在的应用开发都是基于BS和CS架构,前后端分离已经提出很多年了,大家都在讲前后端分离,这是好事,大家各自为政,然后联调就行了。但是在实际的开发过程中,开发人员经常会遇到各种分工不明确,反复沟通的问题,时间成本很高,导致整个开发进度很慢。

我们想过,有没有一种开发模式,可以让开发者更加专注于业务逻辑,这样开发者就可以自己承担更多的业务,从而降低沟通成本。从小程序的技术栈来看,主要局限于 JS,JS 是前端开发的主要技术栈。大部分前端开发者也听说过 Node.js,它可以在一定程度上把后端的业务逻辑扛起来。如果我们只让前端开发者负责 JS 和 Node.js,就可以降低沟通成本,减少甚至消除与后端服务的交互,实现更彻底的前后端分离。

对于大多数人来说,搭建各种环境、连接网络、维护组件的工作非常复杂,耗费精力。而作为一名普通开发者,希望有一个稳定、高效、安全的环境,在逻辑正确的前提下,让服务稳定、安全、高效地运行,不受环境的影响。

基于这个想法,我们把整个开发流程中通用的基础能力总结了一下,做了一些封装,屏蔽了运维层面的所有工作,暴露一些功能接口来操作各种远程服务,比如DB,存储等,推出了一个的全栈应用开发中台。

什么是无服务器?

你听说过吗?它是近两年很火的一个概念,分为两个部分:BaaS,后端即服务;FaaS,即服务。

在开发过程中,开发者是感知不到服务器存在的。传统的开发需要开发者购买服务器,在服务器上搭建 DB,然后购买服务器作为专用的存储服务器,实例搭建好之后,需要编写服务作为调用,才能操作实例。在 理念下,这些工作被完全隐藏,通过提供 API 直接操作资源。后端实例如 COS、消息队列、存储等都以服务的形式,直接通过 API 调用。Faas 是核心,即 云函数。这样就可以做更多的事情,可以跑进去真正的业务逻辑,覆盖各种定制化的开发场景。

是未来发展的发展趋势,从物理机到Iaas层、主机、云上PaaS开放架构,一步步解放人力,让开发者更加专注于自身业务能力的开发。

什么是云开发? 1.云开发的特点

云开发是支持小程序、Web、等多终端的应用服务平台,融合微信公众平台和腾讯云的核心技术,提供云数据库、云存储、日志、监控等开发运维能力。通过“小程序·云开发”,开发者可以无缝、安全地开通小程序服务,提升开发效率,快速试错、落地产品。

小程序云开发用户_小程序云开发什么意思_小程序云端开发

云开发的一个重要优势就是简化了后端配置,开箱即用,存储、数据库、云函数都在搭建环境的时候设置好,提供域名和注册,省去了繁琐的流程,开发者只需要编写核心逻辑代码,无需担心后端配置和运维,专注于业务开发。

云开发集成到小程序IDE中,免认证登录。在IDE中即可使用云开发,无需安装云相关API。我们通过私有协议实现了更高效的认证方式。在微信客户端SDK中,可以直接调用云资源。在云函数中,也可以通过云调用来调用微信的开放接口。这是云开发独有的能力。

在运维方面,云开发稳定可靠,云开发的背后是腾讯云各类基础设施,稳定、安全、高效,并具备快速扩展的能力,满足不同的业务场景和需求。

2.云开发模式与传统模式的区别

在传统的开发模式下,如果在小程序端使用其他服务,你需要自己编写 SDK,或者引入额外的 SDK 来调用你的后端服务。后端服务需要自己搭建、编写框架、路由、接口,操作底层的 DB 资源、COS 资源。在开发环境中,需要打通网络,做加速等额外的工作。对于开发者来说,需要注意的地方比较多。如果使用云开发,可以直接使用小程序原生的接口 wx。这个命名空间下有一系列的接口,都可以通过这里的接口来操作云开发上的这些资源。

传统模式下,如果你想上传一张简单的图片,小程序和客户端都一样,+wx..,但是整个后端服务搭建需要选择合适的框架,设计路线。你收到文件上传到cos,运维负责性能和安全。如果使用云端开发模式,你只需要在小程序端写这段代码,wx..,传入File ID,整个流程就完成了。你想上传这个文件,会自动上传到cos。在链接上,我们会保证链接的一致性,鉴权等相关操作。以前需要1000多分钟,至少3个人才能做的事情,现在前端4分钟就能搞定。

插入数据也是一个非常高频和常见的操作,在小程序端需要wx.来请求后端接口,开启路由,写逻辑代理,收到数据之后进行存储,整个过程包括中间通讯的时间,需要1000分钟以上。如果使用云开发模式,前端工程师直接调用wx.通过这个add就可以直接插入一条数据,直接操作远程数据库服务,非常方便。这份代码可以跑在小程序端,也可以跑在云函数上,从头到尾都是一个前端开发人员写的,统一的技术栈,后期只需要一个技术栈的人来维护就可以了。

3.云开发有哪些功能?

云函数是云开发最核心也是非常重要的一个功能,对于云函数来说,你不需要服务器,不需要域名,调用方式是通过wx..开发者工具有一键上传入口,你可以一键上传你的代码到云函数的运行容器中,整个运行环境由腾讯云保障安全隔离。

云函数有一个非常方便的特点,你不需要自己写逻辑去获取小程序,我们通过私有协议把它放到云函数的范围内,在云函数里直接获取,不需要认证解密等额外动作,我们在前层有一层自己封装的认证服务,所有到达云函数的东西都是完全安全的,并且携带着微信的正常登录状态。

在运行管理方面,云函数可以实现秒级弹性伸缩,当请求数和并发量很大时,可以快速扩容,防止服务崩溃。另外,云函数不同于云主机,是按运行时间计费的,只有处理完请求才会产生一定的费用。

4.云函数具体运行原理

在传统的服务器模式下,你的代码是部署在远程的服务器上,如果想要做得更好,可能需要考虑服务的拆分,服务的分层,以及多个模块之间的通信,包括它们之间传输的私有协议链路上的鉴权,这些对于你从头搭建来说是一个相当大的负担。现在有了云函数的方式,你可以通过便捷的部署方式,将云函数部署到远程的容器中。运行时,各个容器都是隔离的,容器本身是无状态的。这种事件触发的机制比较适合定时器、单函数接口的请求。请求到达立即处理,资源立即回收,没有冗余。函数容器接收到请求后,完成生命周期创建,当请求返回时,生命周期结束,容器销毁。

云调用是云函数中一个非常好用的功能,如果经常开发小程序的话,需要用到服务端API,这些API的鉴权是通过做权限标记来实现的,云调用屏蔽了这一点。在云函数中,可以直接使用开放API来调用微信开放能力,这是一个发送消息的例子,你可以直接调用这个API,而不需要传入消息,整个调用链都可以直接调用。

虽然保证了安全性,但是使用过程中也存在很多问题。开发者需要维护过期时间和申请节奏,如果同时在多地使用多个服务,一般需要一个中转服务器来维护过期和申请。如果使用云调用,则完全不用关心这些,对开发者来说非常方便。在小游戏中,有7个非常实用的云调用接口,包括内容安全等级、动态消息等。在刚才的例子中,并不需要直接使用开放API来调用这个能力。

云召唤开放的能力比较常见的有微信运动、用户信息、分享信息等。如果采用微信官方HTTP API开发方式,需要签名进行认证。签名需要的一个重要参数就是。它的维护就好比微信的API,需要花费很大的精力去维护,一旦维护不好,就会影响到所有使用它的服务。

使用云函数中的云调用能力是这样的,这个是获取微信运动的信息,直接通过微信内置的接口就可以了,但是信息是加密的,只能获取一个,需要自己解密才能得到它的具体信息。调用云函数的时候,直接用wx..传出去就可以了。

云函数端接收的参数是这样的,刚才传入的参数会自动解析成这样的一个包,中间不需要自己去解析,整个调用对云函数来说是透明的。

实时语音也可以用到云调用。实时语音的 API 很多,但几个关键的 API 是需要签名的,签名就是 API 的房间 ID、一个随机字符串、一个时间戳、一个固定算法计算出来的签名。用云调用的话,直接调用接口,只传入业务相关的信息、一个时间戳、一个随机字符串,接口就能直接吐出签名。

使用云调用无需维护,签名算法全部由官方内置SDK维护,业务方无需感知签名方法具体内容,当签名算法有变更或者扩展时,内置SDK自动支持,减轻开发者负担。

云数据库是大家应该经常用到的东西。云开发提供的是文档型数据库,格式类似JSON,前端开发会比较熟悉,每个JSON对象其实就是数据库中的一条记录。我们提供简单的API来实现增删改查,在客户端直接通过API就可以构造查询或者插入,非常方便,不需要为DB构建专门的后端层传输服务。

在小程序端,我们提供四级权限控制,可以实现级别权限控制,基本覆盖公私读写组合。通过权限控制,我们可以将客户身份细分为子类别,在云函数端拥有最高管理员权限。未来我们还将提供更细致的文档级权限划分,并打造安全规则,满足更细粒度的C端访问云资源权限管控需求。

对于文件存储,小程序提供了云存储空间,在云函数和小程序中可以通过API将对象上传到存储,还有基于微信登录状态的安全控制和带权限管理的云下载,另外还提供公网域名,天然有CDN加速,可以通过HTTP从公网访问。

安全性方面,云函数可以弹性伸缩不同容器,秒级限制文件和资源操作权限、运行配置,具备大流量攻击负载防御能力,并对全链路进行一致性校验,保障链上服务的安全。

分享