PlayDrop logoPlayDrop Studio
创作互玩赚取学习连接器素材社区支持
PlayDrop logoPlayDrop Studio
创作互玩赚取学习连接器素材社区支持
登录
云存档
文档

从这里开始

概览你的第一款游戏PlayDrop 游戏常见问题

用 Cloud 创作

Cloud 创作方案与生成次数

连接你的 AI 应用

所有连接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

发布与分享

从你的 AI 应用发布简单 HTML 游戏打包和 .play发布与导入游戏文件可见性与曝光商店页面图片和视频类型和标签本地化即玩游戏

游戏体验

加载、暂停和音频全屏和安全区域云存档本地队伍和控制器

一起玩

分享、好友和邀请排行榜成就在线队伍和语音实时游戏服务器

赚取收益

变现点数与奖励

素材

游戏素材AI 素材生成自定义格式和玩家作品

参考

客户端 SDK服务器 SDKcatalogue.json错误与恢复问题排查
文档云存档
游戏体验

PlayDrop 游戏的云存档

用 sdk.me.appData 和 sdk.me.updateAppData 保存和读取玩家进度,适用于访客和已登录玩家,并了解写入、预览和离线游玩的规则。

云存档会在 PlayDrop 上保存每位玩家在你游戏中的进度,让进度从网站跟随玩家到应用中。每位玩家在每款游戏中保存一个 JSON 对象;不需要服务器,也不需要多人房间。

读取和写入

在 init() 之后,sdk.me.appData 就是已保存的快照:{ data, seq, ts_event, ts_arrival },首次保存前为 null。从 data 读取你的对象。用 updateAppData 写入整个对象,它会返回已保存的快照并更新 sdk.me.appData。

js
const sdk = await playdrop.init();
let progress = { level: 1, coins: 0, ...(sdk.me.appData?.data ?? {}) };
let queue = Promise.resolve();

// Resolves with the saved snapshot; rejects when the save failed.
function save(changes) {
  progress = { ...progress, ...changes };
  const snapshot = { ...progress };
  const attempt = queue.then(() => sdk.me.updateAppData(snapshot));
  queue = attempt.catch(() => {}); // a failed save must not block the next one
  return attempt;
}

try {
  await save({ level: 2 });
  showSaved();
} catch (error) {
  showSaveError(); // progress stays in memory; the next save sends it again
}
  • 每次写入都会替换整个已保存对象:保留你仍需要的所有字段。
  • 像上面那样按顺序执行写入,避免旧存档在新存档之后才写入,并在失败后让队列继续运行。
  • 只在 promise 成功完成后才显示“已保存”。只在内存中修改 appData.data 不会保存任何内容。
  • appData 没有 get、set 或 save 方法。

何时保存

在检查点、关卡结束和购买时保存,而不是每一帧都保存。绝不能在预览或录制时保存:只在 sdk.host.phase 为 play 时写入。让存档保持小巧,并用你自己的字段标注版本,例如 saveVersion: 2,以便之后的游戏版本可以迁移它。

访客和已登录玩家

保存前不需要检查 sdk.me.isLoggedIn:PlayDrop 访客同样会保留存档。完全没有会话的玩家,其存档只在本次访问期间保留在内存中,因此写入成功完成并不能证明存档已到达云端。只在需要真实账号的功能中使用 isLoggedIn,例如购买和托管多人游戏。

离线

在浏览器中,存档需要网络连接,而且没有离线队列:失败时继续游戏,并在下一个检查点重试。声明支持设备数据的宿主,例如支持离线的 PlayDrop 应用,会把存档保存在设备上,并在联网时同步。

存档不能做什么

存档仅属于一位玩家和一款游戏。它与排行榜和成就相互独立,后两者有自己的 API,并会显示在 PlayDrop 上。玩家之间共享的状态,例如一场对局或一个世界,应放在游戏服务器上你游戏的 MongoDB 集合中。

测试

存档属于已上传的游戏。请至少上传一次私密版本,然后通过回执中的 url 测试,或使用从你的 AI 应用发布中介绍的本地 Dev 框架测试。

相关指南

  • 排行榜在 catalogue.json 中声明排行榜,用 sdk.leaderboards 提交分数,并显示前几名和玩家附近的排名。包括分数类型、限制和更新规则。
  • 成就在 catalogue.json 中声明带图标的普通成就和累进成就,并用 sdk.achievements 解锁成就、上报进度。
  • 实时游戏服务器为你的游戏运行托管的 Colyseus 0.17 服务器和 MongoDB 数据库,用 SDK 从浏览器连接,用两位玩家测试,并了解各项限制。
上一页PlayDrop 游戏的全屏、安全区域和 HUD 角落下一页PlayDrop 游戏中的本地队伍、手柄和手机控制器
查看 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本页内容

读取和写入何时保存访客和已登录玩家离线存档不能做什么测试
查看 Markdown