猫史档案馆


【教程】 kitten秘籍 #云&结构化

用户:𝙲ℴ𝗌𝔦𝒹ₑ𝑟𝙲ℴ𝗌𝔦𝒹ₑ𝑟查看: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的时候,碰到开头“/”,不是  把前面有“,/”的 合并到这项   而是  把此项合并到后面

 

当然处理方法不止这些

 

计数的奇偶,偶代表什么,奇代表什么

开头,末尾

 

层级分隔符 - 解析:

如果你只用一个分隔符,那么那个结构化进程会相当缓慢

而且错容也多

 

比如说字符串第一层是房间列表

每项都是房间,分隔符用“,”

 

第二层是单个房间

有房间信息,密码,编号,人数限制

用分隔符“;”

还有个玩家列表

 

第三层是某个房间里的人数或者游玩情况(“'”)

玩家信息在第四层(“"”)


回复

上一页1 页 / 共 1下一页
𝙲ℴ𝗌𝔦𝒹ₑ𝑟𝙲ℴ𝗌𝔦𝒹ₑ𝑟

毕生所学(bushi)

点赞0


评论


PXstatePXstate

变量传输是好方法,但是接收方必须从一开始就接收,因为传输后是直接销毁的

点赞0


评论


e……e……

进收藏夹里吃灰emotion_doge

点赞0


评论


hzCKhzCK

辟谣无限房间

点赞1


评论


新手我新手我

收录

点赞0


评论


宽刃AS宽刃AS

如果要丢包率为0的话就要搞确认接受数据协议了,延迟将会翻倍,同时这样游戏基本是不可观战的

这么久没人做这种云游戏是有原因的(

点赞0


评论


治愈绾兮治愈绾兮

暂且把问题规模缩小一下,把无限房间改成无限人联机,然后假设目前只有2个人,他们的云变量、列表延迟均为0.2秒。

不过,由于0.2秒足够k4的一步执行执行完很多代码了,为了表述方便,下文统一假设云变量、列表延迟均为1秒。

由于最终要实现无限人联机,那么就可以假设我们创建了一个延迟1秒,长度不受限制的云变量,且所有人可访问、修改内容,下文统一称为云变量。

该云变量形如:“玩家1数据&玩家2数据&……&玩家n数据”

2个人的情况下,一方需要修改数据时,需要把云变量存入本地,然后修改自己部分的值之后再上传回云端,问题就在于:当云变量存入本地后,对方也修改云变量的值,此时我方再上传,那么就覆盖掉了对方修改的内容。

这种问题唯一的解决方法是,一个人控制云列表的一项,因此无限人喵战这种联机就无法实现,最多也就2010个人(1000*2+10)

换一种联机方式,改成无限人打牌呢,因为这样在某一秒就只存在1个用户修改云变量,这确实是可行的,不过n人的话,一轮游戏光处理时间就要n秒,而且还要算上玩家思考时间等,所以这种技术没有利用价值.

那么如果是一个房间2个人下棋呢,喵家的思考时间分配给别的房间用来传输数据,先不考虑技术难度,问题就在于,当玩家下出棋之后,系统如何知道你要修改云变量了?那势必要专门开一个云空间存储玩家下好棋了,并且这个数据是不能用本帖的方法传输的,所以这种方法也不行,综上所述可以得出最多开2010个房间。

以上不一定全面,可能还有别的方式联机,那你就说出来,我来反驳(bushi

点赞0


评论


橘生淮北则为枳橘生淮北则为枳

ddd

点赞1


评论