雲端變數
雲端變數是其值在開啟同一專案的所有人之間即時共享的變數。當變數名以雲符號(☁)開頭時,它就是雲端變數。您可以像在 Scratch 中一樣,在"新建變數"對話方塊中勾選"雲端變數"來建立。
雲端變數是專案建置排行榜、訪客計數器、簡單多人遊戲和其他共享狀態的方式。
基礎知識
- 只能存數字。 雲端變數只能儲存數字。要共享文本,請將其編碼為數字並在另一端解碼。
- 連線期間共享。 只有在使用者停留在專案中時,值才存在於雲伺服器上。沒有長期歷史記錄,伺服器重啟或專案長時間為空時值可能會重置。請勿將雲端變數當作永久儲存。
- 所有觀看者都能看到變化。 當一個玩家更改雲端變數時,連線到同一專案的其他人會很快看到新值。
Bilup 預設連線到一個共享的雲伺服器(wss://clouddata.turbowarp.org),與 TurboWarp 使用的是同一個。專案可以建立的雲端變數數量沒有限制(Scratch 限制為 10 個)。
雲端變數無法連線的情況
雲端變數需要同時滿足以下所有條件:
- 專案中至少有一個雲端變數。
- 您正在播放器中檢視專案,而不是在編輯。當您編輯無法儲存的專案時,雲端變數會被停用,以避免編輯干擾即時資料。
- 專案沒有使用影片偵測擴充功能。出於隱私原因,只要影片偵測處於活動狀態,雲端變數就會被停用,這樣專案就無法悄悄透過網路傳輸攝影機資料。
選擇不同的伺服器
您可以透過 cloud_host URL 引數 將專案指向不同的雲伺服器:
https://com.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 關閉程式碼在協議參考中有文件說明;記錄它們可以讓問題變得可診斷。
不要使用雲端變數建置無稽核的聊天室,也不要濫用該服務。