什么是云开发以及使用云开发时的一些“坑”

本文涉及的产品
.cn 域名,1个 12个月
简介: 可能很多人不明白“云开发”到底是个什么东西,举个例子,在以前如果你要做一款可以多人联网同时在线玩的小游戏,是一件非常非常难的事,因为你需要客户端(根据不同的平台这里的客户端可能指的是手机,电脑或是其他的平台),还需要服务器,这是两个完全不同的领域。

可能很多人不明白“云开发”到底是个什么东西,举个例子,在以前如果你要做一款可以多人联网同时在线玩的小游戏,是一件非常非常难的事,因为你需要客户端(根据不同的平台这里的客户端可能指的是手机,电脑或是其他的平台),还需要服务器,这是两个完全不同的领域。


对于大部分人来讲对于客户端比较熟悉,例如我们去制作一款单机的小游戏,其实只需要把游戏的客户端完成就可以了。因为这个游戏是独立的,你只需要自顾自的在自己的设备上玩,不需要与其他的玩家产生联系。



但是如果你想要做一款需要联网的游戏,只有客户端就不够了,还需要增加一个将所有的客户端连接起来的东西,也就是服务器。




每个客户端都需要把自己的信息传输给服务器,然后再由服务器把信息传输给其它所有的客户端,这个服务器就像是一个所有信息的控制和传输系统,如果需要数据存储的话,那么它还需要与一个叫“数据库”的东西打交道,负责存储和查找数据。



如果退回到以前,如果你想要有一个自己的服务器,那么至少需要有一台服务器的硬件设备,可以是一台电脑或者是一台专门运行服务器的设备。除此之外,你还需要自己去搭建环境,实现服务器端的所有逻辑,如果你需要数据存储的话,那么还需要在这台服务器设备上安装配置数据库软件。除此之外,你可能还需要处理带宽问题,还需要处理有很多人同时访问时的并发问题......可以看出,对于个人来讲,想要去实现上方的这所有的事情其实是非常难的。


我不过是想要做一个联网的小游戏而已,就没有必要去把整个服务器都倒腾一遍了吧!


如今,有了“云开发”,它将我们上述提到的服务器的所有的东西都做成了一个一个的功能模块,你只需根据需要使用对应的功能,然后根据用量支付一定的费用即可,它将服务器开发的门槛降的很低很低,让个人开发制作联网的游戏或应用成为了可能。


现在,你大概能够明白“云开发”到底是个什么东西了吧!它其实跟我们使用的微信小游戏制作工具有点儿像,小游戏制作工具让很多完全不会做游戏的人有了做出游戏的可能,“云开发”让很多完全不懂服务器的人有了制作联网的小程序,小游戏的可能。


那么,是不是所有的微信小游戏都需要去接入“云开发”呢?不是的。如果你只是做了一个很简单的小游戏,而且也不需要频繁的进行更新,是没有必要接入“云开发”的,只需要使用“本地缓存”功能将需要长期存储的数据缓存在玩家的设备本地就可以了。


但是,如果你的小游戏是需要持续迭代更新的,那么此时接入“云开发”就变得非常重要了。因为微信小游戏的“本地缓存”内容会在每次更新游戏时被抹除,也就是说玩家通过“本地缓存”保存的游戏数据会在每次游戏更新时消失。想象一下如果你正在玩一个关卡游戏,好不容易玩到 50 关了,游戏一更新,又要从第1 关开始玩,是不是很沮丧。


大部分不需要联网对战的小游戏对于“云开发”的需求,其实主要是用于存储用户的数据,例如用户的最高分,玩到第几关等等。


之前写过三篇与“云开发”有关的教程,一篇关于[云函数的使用],算是一篇云开发的初级入门文章,一篇[如何使用云数据库实现用户数据的永久存储]算是一篇进阶文章。另外还有一篇[对于云数据库的补充]]算是对第二篇文章中的一些遗漏的补充。


因为我自己要在新游戏圆点守护者中接入“云开发”功能,所以重新过了一遍之前写过的教程,顺便也验证一下之前写过的教程是否依然有效。通常很多的教程都会有“过期时间”。因为技术和软件都在不停的迭代,一年前写的教程,一年后再拿过来很可能会完全对不上号。


不过还好,这三篇教程都没有“过期”,依然有效。想了解或者想在自己的游戏中接入“云开发”功能的朋友,依然可以按照教程去学习,去实现自己想要的“云开发”的功能。


另外,在接入的过程中,我又发现了几个原本遗漏掉的“坑”,这里就再做一次补充,这篇文章就算作是补充篇的补充篇吧!


1.对于云开发的所有功能的测试都需要发布到体验版之后才能进行。


你需要在微信小游戏制作工具中先上传你要测试的小游戏。



然后小程序的后台找到上传的开发版本,点击下方的“体验版”,扫描体验版的二维码,然后在手机上进行测试。

 

2.配置完域名之后需要等待一段时间才能生效。


在测试云开发之前,需要先到“小程序后台->开发管理->开发设置”中配置云开发的服务的域名,只有配置这个合法域名后,你的小游戏才能够正常的访问云服务。



如果你在这里配置完域名之后,就立即对小游戏进行测试。会发现无法正常调用你的云函数。此时,不要慌张。并不是因为你做错了,是因为服务器域名配置之后,需要一段时间后才会生效。你需要做的只是等上个十几分钟,然后再进行测试。


   

3.获取返回值的积木块必须要在第一层级调用。


这是一个非常大的坑,我掉进去折腾了好久。希望你注意一下,不要再入坑了。


上图为网络组件的官方文档中的一部分,一定要注意用红框框出的“注意”。(我认为这个注意应该要用红色的超大粗体显示),获取请求返回值的积木块必须要在请求分支的第一层级调用,才能正常获得返回值。


你可能会遇到这种情况,我请求的返回值是一个对象,这个对象中包含了是否请求成功的标志,也包含了一大堆的数据。例如我们当前要实现用户数据的查找功能,在调用云函数获得查找返回值之后,肯定需要做这样的处理:首先要判断一下是否找到该用户的数据,如果找到的话,就将这些数据配置到游戏中。所以,在进行数据设置之前,我们肯定是要先进行一次判断的。但是,把数据的设置放到判断积木块中,就会出现上方需要“特别注意”的情况,你的数据设置积木块不在第一层,而是在第二层,所以你无法通过“当前请求的返回值”这个积木块获取到数据。


这时,我们该怎么办呢?我们可以借助一个对象,在进行判断之前,先将所有的数据放在里面。然后在判断积木块中,再使用这个对象中的数据为游戏进行配置。



如图,是中查找用户数据的实现方式。

   

4.注意对象中的对象的访问。



有时,你请求到的对象是这样的。注意,这个返回结果整体是一个对象,但是,我们最终设置的其实是 data 中的数据,这个 data 也是一个对象,所以我们在小游戏端设置数据时就需要访问对象中的对象。



 

5.应该在何时调用查找和上传数据的云函数。


使用云服务是需要一定的费用的,但是其实非常的便宜,一般的个人小游戏其实只需要使用“云函数”和“云数据库”服务即可。如果用户数量不是很多的话,基本上每个月免费赠送的配额已经足够了。


另外,除了“云服务”本身的配额,我们也要注意自己游戏中的逻辑,比如说在什么时候,我们该去调用云函数查找和存储玩家的数据。


我自己的实践经验是,在玩家进入到游戏时,进行一次查找的调用,在玩家退出游戏时,进行一次存储的调用。这样,一个玩家从进入游戏到离开游戏的整个过程中,其实只需要调用 2 次云函数,操作 2 次数据库即可。


查找的逻辑可以放到打开游戏后的第一个页面中处理一次,然后存储的逻辑可以放在“当小游戏隐藏”这个积木块中处理。



碰到过有人提过这个问题,自己做了个小游戏也没几个人,使用了云服务,每个月的免费配额根本不够。经过了解才发现,他在游戏的整个过程中,频繁的去调用“云函数”(每次玩家的分数发生变化,都去调用一次),这样一个玩家在玩一次的游戏过程中,可能就会调用几十或者上百次云函数。免费的配额,当然就不够用了。


另外,云服务默认是“包月包量”计费的,建议使用“按量计费”,使用量不超过免费用量时,不收费。超过了的话,用多少收多少。这种方式对于个人的用量不多的小游戏是比较合适的。


6.云开发使用的是腾讯云服务中的服务。


腾讯云中有各种各样的云服务,记住我们需要用到的其实是,这里面包含了云函数,云存储和云数据库。


好了,对于微信小游戏制作工具如何使用云开发的内容,我觉得基本上已经写全了。如果,以后再有新的情况和新的问题,我会再给大家继续补充。希望我摸索出来的路可以帮助到你,对于我踩过的这些坑,我都尽可能做了标注,希望你就不要再步入前人之“坑”了。


想学习做游戏的话,关注我就对啦!

相关文章
《阿里云产品手册2022-2023 版》——云基础产品与基础设施
《阿里云产品手册2022-2023 版》——云基础产品与基础设施
147 0
|
JavaScript Java 关系型数据库
云开发云平 | 学习笔记
简介:快速学习云开发云平
181 0
云开发云平 | 学习笔记
|
持续交付
云服务Linuk初体验
第一次体验到了云服务器的远程操作
云服务Linuk初体验
|
弹性计算 网络安全
云服务初体验
云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。
|
消息中间件 NoSQL Linux
阿里云开发心得
分享一些关于阿里云服务器的使用心得以及使用过程中遇到的一些问题
阿里云开发心得
|
监控 开发者
基于阿里云开发心得
我相信在未来阿里云服务器一定会发展的越来越好,因为不论是像我们这种科研设计项目过程中需要用到的服务器阿里云可以提供,而大中小企业级的服务器集群部署阿里云也都可以提供完善的方案!
|
存储 缓存 小程序
什么是云开发以及使用云开发时的一些“坑”
可能很多人不明白“云开发”到底是个什么东西,举个例子,在以前如果你要做一款可以多人联网同时在线玩的小游戏,是一件非常非常难的事,因为你需要客户端(根据不同的平台这里的客户端可能指的是手机,电脑或是其他的平台),还需要服务器,这是两个完全不同的领域。
502 0
什么是云开发以及使用云开发时的一些“坑”
|
前端开发 开发工具 开发者
阿里云云开发平台使用体验
(1)云开发平台是一个很好的云开发环境,它可以让我在任何时间任何地点进行代码编写、运行和调试。打开浏览器就可以开发、调试、上线。 (2)统一的团队业务环境,提供统-灵活的团队环境, 让新手轻松上手,每个团队成员随时随地都可以投入开发工作。使得协同编程具有可行性,大大加快了项目完成的效率。 (3)易于上手,开发环境集成了较多熟悉的知识,且具有与本地编辑器相似的开发环境,开发者可以直接上手新手也可以按照开发文档快速上手。
阿里云平台
搭建了个TS语言平台的服务器
|
缓存 运维 监控
开发系列课程 | 云开发平台,轻量化运维监控
云开发系列课程主要介绍了从入门到精通快速上手Serverless和云开发技术。学习内容涵盖云开发协同、云函数、云数据库、多媒体托管、前后端一体化框架等Serverless Web开发必备知识。希望通过云开发系列课程的学习与实际操作,让大家深入了解Serverless和云开发技术,并加深对阿里云云开发平台和阿里云Serverless产品的理解与认识。
开发系列课程 | 云开发平台,轻量化运维监控