用户:
星际畅想之梦查看:448 回复:18 评论:71 创建时间:2022-06-13T19:34:03
在kitten编辑器中有2个很常用的扩展库,它们就是云变量和云列表。那么,在你使用云数据库的时候有没有遇到过以下问题:
我发现,在社区的论坛中,很少有这些问题的解决方案,即使有,大部分的教程也十分复杂,会让萌新望而生畏。
所以,本期教程,它来了!!!
观前提示:本期教程主要针对第二个问题进行解决,以提升创作过程中的编辑体验,作者文学也不好,在此教程贴中难免会出现一些错误,大家可以在评论区中指正,不喜勿喷。
众所周知,云列表的传输速度属实是一言难尽,一般云列表会有0.5-1s的传输延迟,也就是说,你修改云列表数值的积木运行完毕0.5-1s后,云列表才会更新数据,这会导致大量的bug出现(作者也是受害匪浅),那要如何解决这个问题呢?
答案是需要一个公有云变量,对,只需要一个公有云变量!
原理其实很简单,只需要利用公有云变量传输速度很快的特性,在更新公有云列表的时候向公有云变量写入此次更新所改变的内容,并将这次更新提前存储到普通列表(传输速度快)中,即可实现效果,以下是具体的流程图

以下是代码编写完毕后的具体效果(左边为正常云列表传输,右方为优化后传输)

Ok,理论说完了,我们来实践,具体的积木内容很简单,这里演示部分云积木的速度提升过程,下面是步骤:



当你把所有模块的代码都编写完毕,这个程序就可以正常使用了,不过要注意的是在使用的时候需要使用函数模块,在调用的时候需要调用普通列表,并且尽量不要使用重复执行更改云列表,如果需要使用请加入等待,如
什么?你懒得编?没关系!作者为你们准备了快捷函数模板,可以快捷使用,该作品50赞开源!!
这样子云列表只能发挥一个云存储的作用,本质上不是加快传输速度
点赞2
评论
会存在时序问题
对于游玩人数>10的MMORPG来说,就失去作用了
可以试试改成时分,但是整体帧率会下降2^n次
不是的,你可以进我的作品试一试
我的教程只是一部分,主要代码太长了
不失去作用啊
https://shequ.codemao.cn/work/150657742
亲测过
不是,我的意思是
对于游玩人数>10的mmorpg,需要随时记录玩家坐标
为了维持帧率,需要每帧记录一次,这就需要每个玩家对应一个公云变量才行
可是这种东西你用云列表也实现不了啊
逐帧云列表记录用什么优化手段也做不到,除非官方改云列表传输速度,但如果改了云列表传输速度的话猫厂的云数据库会受不了的
应该是网络延迟吧
一个公有云变量能存1024个字符串
有没有可能利用时序,交叉插入坐标,实现100玩家的逐帧记录
成了
https://shequ.cod喵/work/150753988
100玩家????就算能做出来会有这么多人匹配吗
而且如果要做moba或者吃鸡之类的联机,地图肯定是很大的,所以说坐标会经常是3位数,加上分隔符逗号是四位数,如果用两个公有云变量来传递,一个记录x,一个记录y的话,100个人,一个人占4位数,就是400位数,这就很麻烦了
况且bcm网页程序有个问题就是切屏不会执行程序,如果游玩过程中一个玩家切屏那么程序就有可能导致崩溃(别问我怎么知道的)
对于切屏,我有一个已经成熟的下线检测
对于切屏生效
精确到帧
能发个作品吗?
𝙲ℴ𝗌𝔦𝒹ₑ𝑟翻译+最简:
同时在变量和列表(云端的)中传递信息
点赞0
评论
对的,后续还可以根据情况进行匹配判断,减少出错率
首先上传云变量然后上传云列表(获取单个数据渠道设为云变量),保持等待到云列表出现传输内容,发出删除请求(由所有人执行),等到删除完毕(渠道设为云列表)
为防止数据残留:要不停对比列表,删除云变量中重复的
我现时开源一下,你可以看看我的思路
a不好意思来晚了()
我好奇:为什么不用一个功能字符控制加入/删除
用那么多分开列表,为什么不弄个暂存列表?)
通过云变量上传对储存在各个玩家的本地列表(同步更新)更改请求
听雨a实际上就是一个云列表和一个云变量,更新速度快的那个使用云变量分解开的,数据一旦多了就会崩溃。
点赞0
评论
加一个信息前缀
无论什么操作云变量的字符都限制在1024个
准确是:1024*(1/网络延迟) 字符/秒
一个是空间,另一个是时间,是不能一起算的
可以,
来我的主页第5作品
只需要一个 编号
你这个不准确,如果向变量内写入数字类型的数据,长度会被限制,你可以试试
比如向变量写入123456789012345678,你会发现写入的数据成了123456789012345680,说实话感觉这像是一个官方的bug,而且k3k4都有
hh
那么我自己做一个十进制不行吗()
𝙲ℴ𝗌𝔦𝒹ₑ𝑟说实话(这种技术只用4块搞定
直接开源()要50赞干嘛()
点赞0
评论
你确定??你可以试试
作品早就开源了,自己去看看代码吧
4块是吹的()10块得有
你是不了解kitten积木块的特性啊,积木块和积木行数不是一个概念,积木块指实现代码需要的积木(包括执行积木和参数积木),而行数是实现代码需要的行列数,这两个不是一个概念
)别在意那个
4(1)年老玩家怎么能不知道呢()
临时编的
细节没注意太多
𝙲ℴ𝗌𝔦𝒹ₑ𝑟虽然本质一样,但是精简
点赞0
评论
下面有几项填错了))别在意
虽然你这个代码写入更简洁,但如果需要调用函数的话比我那种要麻烦,比如需要添加到列表的最后一项时,就得先获取列表的长度,然后将长度+1项设置为操作项
实质是一样的,只不过你的是方便编写初始程序而不方便调用,我的是方便调用而不方便编写初始程序
如果调用的次数特别多,用你这种方法可能会感到有些麻烦
而且还有删除的时候只能删除一项,不能删除全部
况且你这个基础代码。。。也没加更新判断啊。。。
我的代码都有更新判断(指云变量更改时会自动更新)和初始获取(指第一次进入游戏后获取在进入游戏之前的内容)
外出去了,2小时后见
无敌小jo真好用imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"
点赞0
评论