跳到主要内容

云变量

云变量是其值在打开同一项目的所有人之间实时共享的变量。当变量名以云符号()开头时,它就是云变量。您可以像在 Scratch 中一样,在"新建变量"对话框中勾选"云变量"来创建。

云变量是项目构建排行榜、访客计数器、简单多人游戏和其他共享状态的方式。

基础知识

  • 只能存数字。 云变量只能保存数字。要共享文本,请将其编码为数字并在另一端解码。
  • 连接期间共享。 只有在用户停留在项目中时,值才存在于云服务器上。没有长期历史记录,服务器重启或项目长时间为空时值可能会重置。请勿将云变量当作永久存储。
  • 所有观看者都能看到变化。 当一个玩家更改云变量时,连接到同一项目的其他人会很快看到新值。

Bilup 默认连接到一个共享的云服务器(wss://clouddata.turbowarp.org),与 TurboWarp 使用的是同一个。项目可以创建的云变量数量没有限制(Scratch 限制为 10 个)。

云变量无法连接的情况

云变量需要同时满足以下所有条件:

  • 项目中至少有一个云变量。
  • 您正在播放器中查看项目,而不是在编辑。当您编辑无法保存的项目时,云变量会被禁用,以避免编辑干扰实时数据。
  • 项目没有使用视频侦测扩展。出于隐私原因,只要视频侦测处于活动状态,云变量就会被禁用,这样项目就无法悄悄通过网络传输摄像头数据。

选择不同的服务器

您可以通过 cloud_host URL 参数 将项目指向不同的云服务器:

https://editor.bilup.org/12785898?cloud_host=wss://clouddata.turbowarp.org

请使用 wss://(安全)URL。不安全的 ws:// 服务器通常会失败,因为 Bilup 通过 HTTPS 提供服务。您无法通过这种方式连接 Scratch 自己的云服务器,因为这需要 Bilup 没有的 Scratch 账户凭据。

处理数字以外的数据

由于只允许数字,需要列表、文本或结构化数据的项目通常会将所有内容编码为一个长数字或带分隔符的数字字符串,并在读取时解码。这是常见的 Scratch 技巧,在 Bilup 中同样有效。请保持更新频率较低(见下文)并让值的大小保持合理。

面向机器人和库开发者

云协议与 Scratch 的协议相同,因此您可以编写自己的客户端或机器人。这是一项由志愿者运营的免费服务,以下几条规则可以确保大家都能正常使用:

  • 发送 User-Agent,包含联系方式(个人资料链接、邮箱或问题跟踪器),如果适用,还包括您的库名称和版本。浏览器客户端无法设置此项,这没问题,因为浏览器会改为发送 Origin 头。不要伪装成浏览器。
  • 使用字符串项目 ID。 ID 不限于数字。对于不托管在公共站点上的项目,请使用可识别的 ID,例如 example.com/my-project
  • 打开一个连接并保持它。 使用事件驱动的 WebSocket,在事件发生时接收更新。不要循环打开和关闭连接来轮询值。
  • 不要刷屏更新。 服务器会缓冲更新,可能重新排序,也可能丢弃一部分。每秒发送超过约 10 次更新没有意义。
  • 响应 ping。 服务器会发送 WebSocket ping 帧;您的客户端必须回复 pong,否则连接会被断开。
  • 记录关闭代码和原始服务器消息。 4xxx 关闭代码在协议参考中有文档说明;记录它们可以让问题变得可诊断。

不要使用云变量构建无审核的聊天室,也不要滥用该服务。

另请参阅