PlayDrop
PlayDrop 無法載入

頁面的必要部分下載失敗。請重新載入。

STYLESHEET_ERROR
PlayDrop logoPlayDrop Studio
PlayDrop logoPlayDrop Studio
創作PlayTrade賺取學習連接器社群支援
用戶端 SDK
文件

從這裡開始

概覽你的第一款遊戲

使用 Cloud 創作

Cloud 創作發布與匯入方案與生成次數點數與獎勵

連接你的代理

所有連接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

技術參考

遊戲檔案catalogue.json用戶端 SDK伺服器 SDK疑難排解常見問題
文件用戶端 SDK
技術參考

適用於瀏覽器遊戲的 PlayDrop 用戶端 SDK

適用於任何 PlayDrop 遊戲的選用瀏覽器 SDK:只需一個 script 標籤,即可使用主機端生命週期、登入、存檔、排行榜、購買、廣告、好友、控制器、多人連線與共用程式庫。

PlayDrop SDK 是選用的:沒有使用 SDK 的遊戲同樣能在 PlayDrop 上遊玩。若需要平台功能,例如玩家登入、存檔、成就與排行榜、以點數購買、廣告、PlayDrop Chat 中的好友與遊戲卡片、分享連結、由主機端管理的暫停與音訊、控制器輸入、託管多人連線以及 AI 生成,就加入 SDK。PlayDrop Cloud 會為你完成整合;使用 PlayDrop Connector 時,你的代理只需加入一個 script 標籤。

加入 SDK 並遵循主機端生命週期

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>

從 PlayDrop 的 CDN 載入 SDK,不需要安裝任何套件。在呼叫 sdk.host.ready() 之前,先渲染第一個可遊玩的畫面並準備好輸入。主機端暫停時請暫停模擬,恢復時不要產生重複的迴圈,並遵循主機端的音訊政策。

身分、存檔與語言

sdk.me 提供玩家身分,sdk.me.appData 儲存私人存檔;sdk.achievements 與 sdk.leaderboards 負責成就與分數。存檔、成就與排行榜無需事先檢查登入狀態即可運作。對於需要真實帳號的功能(例如購買或多人連線),請使用 sdk.me.isLoggedIn。預覽與擷取模式不得寫入玩家進度。sdk.host.language 提供玩家的語言:請提供英文版本,若你的語言不是英文,也一併提供。翻譯上架資訊並不會翻譯遊戲內容。在獲勝等自然停頓時,sdk.host.requestReview() 會讓 PlayDrop 請玩家評價(每款遊戲最多一次);遊戲永遠不會知道答案,所以絕不要為評價提供獎勵。

程式庫、素材與多人連線

sdk.libs 可載入支援的 Three.js、Phaser、Rapier、nipplejs 與 Colyseus 版本。sdk.assets 提供目錄、素材包與素材參照;sdk.social 提供好友、遊戲卡片與分享操作。在託管多人連線中,sdk.multiplayer.getConnection() 會回傳伺服器位址與已登入玩家的權杖;請使用 Colyseus 用戶端加入。伺服器 SDK 頁面說明託管伺服器;你自行架設的伺服器完全不需要 SDK。舊版中繼房間 API 已停用。

發布前使用 SDK 測試

照常啟動你的開發伺服器,並在 Chrome 中開啟 https://www.playdrop.ai/creators/<username>/apps/game/<slug>/dev?url=http://localhost:5173/,即可在真正的 PlayDrop 框架中搭配 SDK 主機端遊玩。任何 localhost 連接埠或 https 網址都適用。需要帳號的功能(例如存檔與購買)在遊戲上傳過一次後即可運作;私人上傳就足夠了。瀏覽器端的媒體生成以非同步任務執行,並需經主機端確認點數費用。上架中繼資料請參閱 catalogue.json。

一起玩

在遊戲階段使用 await sdk.multiplayer.join("game"),可獨立加入房間或使用宿主的隊伍預留。隊伍加入失敗時會拒絕請求,不會悄悄把玩家分到其他房間。現有遊戲仍可透過 getConnection() 立即取得連線資訊。各回合之間應保留同一房間;宿主介面暫停遊戲輸入時也應保持網路連線。

由玩家操作觸發 sdk.social.openParty(),可開啟宿主的隊伍彈出視窗。使用 await sdk.social.getParty() 或 sdk.social.onPartyChange(callback) 讀取成員。遊戲不能修改平台隊伍或控制麥克風。隊伍和房間語音由網頁或原生宿主管理,並遵循玩家同意、靜音、封鎖和功能開放條件。

要實現流暢的空間語音,請使用有限的 { x, y, z } 向量呼叫 sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] })。這些提示只影響音量和聲像,不影響授權。伺服器負責實施隊伍和距離條件。

使用 sdk.device.localPlayers 和 sdk.device.onLocalPlayersChange(callback) 取得選定的本機控制器插槽 { playerIndex, gamepadKey }。已連接控制器清單是獨立的;中斷連線的插槽仍保留其識別資訊。本機模式不能加入線上房間。可複製的 playdrop-metagame/recipes/play-together 範例展示兩種模式、兩個目的地和房間政策。

控制器

在所有平台上都透過 sdk.device 以相同方式讀取實體控制器和 PlayDrop 手機控制器。在 init() 之後呼叫一次 enableControllerInput(),在遊戲迴圈中讀取 gamepad(playerIndex)(0 代表 P1),並用 onButton 處理按下與放開。搖桿軸與按鍵遵循瀏覽器的標準手把順序;按鍵依位置命名,例如 south 和 east,pad.label("south") 會傳回該控制器上的按鍵名稱,例如 "A" 或 "Cross"。選單鍵由 PlayDrop 使用,按下會暫停遊戲。

js
await sdk.device.enableControllerInput();
const stop = sdk.device.onButton(({ playerIndex, button, pressed }) => {
  if (button === "south" && pressed) jump(playerIndex);
});
function update() {
  const pad = sdk.device.gamepad(0);
  if (pad?.connected) move(pad.axes[0], pad.axes[1]);
  requestAnimationFrame(update);
}
update();

不要呼叫 navigator.getGamepads():手機控制器只能透過 SDK 傳給遊戲,遊戲直接讀取瀏覽器 API 時 PlayDrop 會記錄警告。如果主機端無法提供控制器輸入,enableControllerInput() 會以 controller_input_unavailable 或 controller_input_timeout 拒絕,遊戲會繼續執行。pad.has("dpad") 可判斷某個操控是否存在;請在 catalogue.json 中宣告遊戲所需的操控。

上一頁catalogue.json:PlayDrop 遊戲中繼資料與在地化下一頁PlayDrop 遊戲伺服器:Colyseus、MongoDB 與伺服器 SDK
檢視 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本頁內容

加入 SDK 並遵循主機端生命週期身分、存檔與語言程式庫、素材與多人連線發布前使用 SDK 測試一起玩控制器
檢視 Markdown