# 适用于浏览器游戏的 PlayDrop 客户端 SDK

适用于任何 PlayDrop 游戏的可选浏览器 SDK：只需一个 script 标签，即可使用宿主生命周期、登录、存档、排行榜、购买、广告、好友、多人游戏和共享库。

Source: https://www.playdrop.ai/zh-hans/docs/sdk

PlayDrop SDK 是可选的：不使用 SDK 的游戏同样可以在 PlayDrop 上游玩。如需平台功能，例如玩家登录、存档、成就和排行榜、积分购买、广告、PlayDrop Chat 中的好友和游戏卡片、分享链接、由宿主管理的暂停和音频、托管多人游戏以及 AI 生成，请添加 SDK。[PlayDrop Cloud](https://www.playdrop.ai/zh-hans/create) 会为你完成集成；使用 [PlayDrop Connector](https://www.playdrop.ai/zh-hans/docs/connectors) 时，你的 Agent 只需添加一个 script 标签。

## 添加 SDK 并遵循宿主生命周期

从 PlayDrop 的 CDN 加载 SDK，无需安装任何包。先渲染第一个可玩帧并准备好输入，然后再调用 `sdk.host.ready()`。宿主暂停时暂停模拟，恢复时不要产生重复循环，并遵循宿主的音频策略。

```html
<script src="https://assets.playdrop.ai/sdk/playdrop.js"></script>
<script type="module">
  const sdk = await playdrop.init();
  // Render the game and prepare input, then:
  sdk.host.ready();
  sdk.host.onPause(() => pauseGame());
  sdk.host.onResume(() => resumeGame());
  sdk.host.onAudioPolicyChange(({ enabled }) => setAudioEnabled(enabled));
</script>
```

## 身份、存档和语言

`sdk.me` 提供玩家身份，`sdk.me.appData` 存储私人存档；`sdk.achievements` 和 `sdk.leaderboards` 处理成就和分数。存档、成就和排行榜无需预先检查登录状态即可使用。对于需要真实账户的功能（例如购买或多人游戏），请使用 `sdk.me.isLoggedIn`。预览和截取模式不得写入玩家进度。`sdk.host.locale` 提供玩家语言：请提供英语版本，如果你的语言不是英语，也一并提供。翻译商店页面并不会翻译游戏内容。

## 库、资源和多人游戏

`sdk.libs` 可加载受支持版本的 Three.js、Phaser、Rapier、nipplejs 和 Colyseus。`sdk.assets` 提供目录、资源包和资源引用；`sdk.social` 提供好友、游戏卡片和分享操作。对于托管多人游戏，`sdk.multiplayer.getConnection()` 会返回服务器地址和已登录玩家的令牌；请使用 Colyseus 客户端加入。[服务器 SDK](https://www.playdrop.ai/zh-hans/docs/server-sdk) 页面介绍托管服务器；你自己运行的服务器完全不需要 SDK。旧的中继房间 API 已停用。

## 发布前用 SDK 测试

照常运行你的开发服务器，然后在 Chrome 中打开 `https://www.playdrop.ai/creators/<username>/apps/game/<slug>/dev?url=http://localhost:5173/`，即可在真实的 PlayDrop 框架中配合 SDK 宿主游玩。任何 localhost 端口或 https URL 都适用。需要账户的功能（例如存档和购买）在游戏上传过一次后即可使用；私人上传就足够了。浏览器端媒体生成以异步任务运行，并附带经宿主确认的积分费用。商店页面元数据请参阅 [catalogue.json](https://www.playdrop.ai/zh-hans/docs/catalogue-json)。
