用户:
𝙲ℴ𝗌𝔦𝒹ₑ𝑟查看:25 回复:8 评论:25 创建时间:2023-08-12T21:01:37
云变量 和 云列表 的内容是有限制的
只能输入 字符串 布尔值 数字
没有列表
如果尝试对云列表输入列表,你会看到NaN
一个云变量(无论共/私)1024字符串
一个云列表 1000项*每项128字符串
云变量比云列表快(原因未知)
把云变量串联在一块当大变量可以提升利用率
此外搭配合理的结构化的字符串可以实现无限房间
把云变量当做宽带,传输各种数据
写上目的人id,接收,限时,销毁,往复利用
本地变量接收,修改
你就在云模组的巅峰了
在源文件中
其实云变量和变量没有差别
都是一个个属性
(感兴趣见 github.com/cinast/bcm-kitten.js)
-----
结构化字符串是多房间云的必要途径
但是会增加卡顿,把最好把处理字符串的时间控制在100ms(0.1s)
加上10ms的间隔,游戏不会太卡
在分隔字符串的时候往往避免不了误分割
然后得到的列表与预期不符
这里是结构化技巧
总是 - 关键
这样说,你可以总是确定一个东西在什么位置
然后你可以根据这个东西确认其他
比如说这个列表有7项
原本有4项
['a','b,','c','d,']
字符串内容:4,/a,/b,,/c,/d,,
结果:[4,a,b,空,c,d,空]
我们有两个确定
第一是前面的“4”,代表原来有4项
第二是“/”,原内容到字符串的过程,每项前面加了“,”又加了“/”
区分项与项
那么根据“,/”,把空项合并到前面有“开头/”的项,处理后检查有没有4项
但是不包含“总是”的项
那么就处理完成了
这是一个方法,如果示例内容有“,/”的话,
我们还可以加个第二个“总是”,说明什么项有“,/”
因此到计数xx的时候,碰到开头“/”,不是 把前面有“,/”的 合并到这项 而是 把此项合并到后面
当然处理方法不止这些
计数的奇偶,偶代表什么,奇代表什么
开头,末尾
层级分隔符 - 解析:
如果你只用一个分隔符,那么那个结构化进程会相当缓慢
而且错容也多
比如说字符串第一层是房间列表
每项都是房间,分隔符用“,”
第二层是单个房间
有房间信息,密码,编号,人数限制
用分隔符“;”
还有个玩家列表
第三层是某个房间里的人数或者游玩情况(“'”)
玩家信息在第四层(“"”)
治愈绾兮暂且把问题规模缩小一下,把无限房间改成无限人联机,然后假设目前只有2个人,他们的云变量、列表延迟均为0.2秒。
不过,由于0.2秒足够k4的一步执行执行完很多代码了,为了表述方便,下文统一假设云变量、列表延迟均为1秒。
由于最终要实现无限人联机,那么就可以假设我们创建了一个延迟1秒,长度不受限制的云变量,且所有人可访问、修改内容,下文统一称为云变量。
该云变量形如:“玩家1数据&玩家2数据&……&玩家n数据”
2个人的情况下,一方需要修改数据时,需要把云变量存入本地,然后修改自己部分的值之后再上传回云端,问题就在于:当云变量存入本地后,对方也修改云变量的值,此时我方再上传,那么就覆盖掉了对方修改的内容。
这种问题唯一的解决方法是,一个人控制云列表的一项,因此无限人喵战这种联机就无法实现,最多也就2010个人(1000*2+10)
换一种联机方式,改成无限人打牌呢,因为这样在某一秒就只存在1个用户修改云变量,这确实是可行的,不过n人的话,一轮游戏光处理时间就要n秒,而且还要算上玩家思考时间等,所以这种技术没有利用价值.
那么如果是一个房间2个人下棋呢,喵家的思考时间分配给别的房间用来传输数据,先不考虑技术难度,问题就在于,当玩家下出棋之后,系统如何知道你要修改云变量了?那势必要专门开一个云空间存储玩家下好棋了,并且这个数据是不能用本帖的方法传输的,所以这种方法也不行,综上所述可以得出最多开2010个房间。
以上不一定全面,可能还有别的方式联机,那你就说出来,我来反驳(bushi
点赞0
评论