PlayDrop logoPlayDrop Studio
TạoTrao đổi lượt chơiKiếmHọcConnectorTài nguyênCộng đồngHỗ trợ
PlayDrop logoPlayDrop Studio
TạoTrao đổi lượt chơiKiếmHọcConnectorTài nguyênCộng đồngHỗ trợ
Đăng nhập
Tải, tạm dừng và âm thanh
Tài liệu

Bắt đầu tại đây

Tổng quanGame đầu tiên của bạnGame PlayDropFAQ

Tạo với Cloud

Tạo với CloudGói & lượt tạo

Kết nối ứng dụng AI của bạn

Tất cả connectorClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Xuất bản và chia sẻ

Xuất bản từ ứng dụng AIGame HTML đơn giảnĐóng gói và .playXuất bản và nhậpTệp gameChế độ hiển thị và tiếp cậnHình ảnh và video giới thiệuThể loại và thẻBản địa hóaGame Instant

Trải nghiệm chơi game

Tải, tạm dừng và âm thanhToàn màn hình và vùng an toànLưu đám mâyNhóm chơi cục bộ và tay cầm

Chơi cùng nhau

Chia sẻ, bạn bè và lời mờiBảng xếp hạngThành tíchNhóm chơi trực tuyến và thoạiMáy chủ game thời gian thực

Kiếm tiền

Kiếm tiềnCredit & phần thưởng

Tài nguyên

Tài nguyên gameTạo tài nguyên bằng AIĐịnh dạng tùy chỉnh và sáng tạo của người chơi

Tài liệu tham khảo

SDK clientSDK servercatalogue.jsonLỗi và cách khôi phụcKhắc phục sự cố
Tài liệuTải, tạm dừng và âm thanh
Trải nghiệm chơi game

Vòng đời game trên PlayDrop: tải, sẵn sàng, tạm dừng và âm thanh

Khởi tạo SDK PlayDrop, báo sẵn sàng ở khung hình chơi được đầu tiên, tạm dừng và tiếp tục gọn gàng, theo chính sách âm thanh và tải trước tệp để chơi ngoại tuyến.

PlayDrop hiển thị màn hình tải, menu tạm dừng, nút tắt tiếng và các cửa sổ khác của riêng nó quanh game của bạn. API vòng đời giữ game đồng bộ với chúng: game dừng lại khi PlayDrop tạm dừng nó và chỉ phát âm thanh khi chính sách âm thanh của PlayDrop cho phép.

Khởi tạo, rồi báo sẵn sàng

Tải SDK, đọc trạng thái ban đầu, đăng ký theo dõi thay đổi, chuẩn bị màn hình đầu tiên và chỉ khi đó mới gọi ready(). PlayDrop giữ màn hình tải cho đến lúc đó.

html
<script src="https://assets.playdrop.ai/sdk/playdrop.js"></script>
<script type="module">
  const sdk = await playdrop.init();
  let paused = sdk.host.isPaused;
  setAudio(sdk.host.audioAllowed);
  sdk.host.onAudioAllowedChange(setAudio);
  sdk.host.onPause(() => { paused = true; });
  sdk.host.onResume(() => { paused = false; last = performance.now(); });

  try {
    await loadFirstLevel();
  } catch (error) {
    sdk.host.error("Could not load the first level");
    throw error;
  }
  drawFirstFrame();
  sdk.host.ready();
</script>

Hãy gọi ready() khi màn hình đầu tiên đúng như thiết kế đã hiện ra và đầu vào đã hoạt động, không gọi trước khi tài nguyên tải xong. sdk.host.error(message) báo cho PlayDrop rằng game không thể khởi động. setLoadingState và firstFrameReady là tên cũ của cùng bước này; hãy dùng ready().

Các giai đoạn: xem trước, chơi và trình chỉnh sửa

sdk.host.phase là preview, play hoặc editor, và onPhaseChange báo khi giai đoạn chuyển đổi. Bản xem trước và bản ghi hình hiển thị game mà không có phiên chơi thật: không bao giờ ghi dữ liệu lưu, điểm, thành tích hay giao dịch mua ngoài giai đoạn play. sdk.host.mode bình thường là play và là dev trong khung Dev cục bộ.

Tạm dừng và tiếp tục

onPause(reason) và onResume(reason) được kích hoạt khi người chơi mở menu tạm dừng, ẩn tab, đăng nhập, mua thứ gì đó, hoặc khi một quảng cáo hay một cửa sổ PlayDrop che game. reason là một trong các giá trị tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change hoặc native_background; sdk.host.isPaused là trạng thái hiện tại.

Trong lúc tạm dừng, hãy dừng mô phỏng và bộ đếm giờ. Khi tiếp tục, hãy đặt lại đồng hồ khung hình để game không nhảy cóc về phía trước:

js
let last = performance.now();
function frame(now) {
  const dt = paused ? 0 : Math.min((now - last) / 1000, 0.05);
  last = now;
  if (!paused) update(dt);
  render();
  requestAnimationFrame(frame);
}
requestAnimationFrame(frame);

Phím Escape và nút Menu của tay cầm thuộc về menu tạm dừng của PlayDrop; đừng gán chúng trong game của bạn. Trong game có kết nối mạng, hãy giữ kết nối phòng trong lúc tạm dừng: việc một người chơi tạm dừng không được làm dừng những người khác.

Âm thanh

Đọc sdk.host.audioAllowed một lần sau init(), rồi theo dõi onAudioAllowedChange. Giá trị này kết hợp trạng thái tắt tiếng của người chơi, giai đoạn và trạng thái tạm dừng, và vẫn là true khi tạm dừng do ẩn tab để nhạc giữ được vị trí đang phát. onAudioPolicyChange báo { enabled, reason, volume } khi bạn cần thêm lý do hoặc âm lượng của host.

js
const audio = new AudioContext();
function setAudio(allowed) {
  (allowed ? audio.resume() : audio.suspend()).catch(() => {});
}

Âm thanh bắt đầu ở trạng thái tắt cho đến khi host cho phép, và trình duyệt vẫn cần một thao tác của người chơi trước khi phát âm thanh. Hãy giữ mọi cài đặt âm lượng trong game như một giới hạn bổ sung; nút tắt tiếng của host luôn được ưu tiên. Hãy bắt lỗi khi các promise play() và resume() bị từ chối.

Tải trước và chơi ngoại tuyến trong ứng dụng

Các ứng dụng gốc có thể tải tệp của game về trước khi game bắt đầu và giữ lại để chơi ngoại tuyến. Hãy khai báo chúng trong catalogue.json:

json
{
  "prefetch": { "required": ["game.js", "assets/level-1.png"], "optional": ["assets/music.mp3"] },
  "offlineSupported": true
}

Trang vào luôn được bao gồm. Các tệp required được tải về trước khi chơi; các tệp optional được tải sau. offlineSupported: true cho phép ứng dụng cung cấp game ngoại tuyến khi các tệp bắt buộc của nó đã được lưu. Giá trị không hợp lệ sẽ bị bỏ qua và không bao giờ chặn việc tải lên. Trang web vẫn tải game như bình thường. Với game Instant, các tệp bắt buộc chính là kích thước khởi động.

Trên các host có hỗ trợ dữ liệu trên thiết bị, dữ liệu lưu, điểm và thành tích tạo ra khi ngoại tuyến được giữ trên thiết bị và đồng bộ khi có mạng; bảng xếp hạng ngoại tuyến chỉ hiển thị kỷ lục của chính người chơi. Trong trình duyệt không có hàng đợi ngoại tuyến, vì vậy hãy xử lý trường hợp lưu thất bại. Mọi thứ game tải từ internet vẫn cần kết nối mạng.

Phản hồi rung

Trong các ứng dụng gốc, sdk.haptics.selection(), impact("light" | "medium" | "heavy") và notification("success" | "warning" | "error") tạo phản hồi rung ngắn; sdk.haptics.supported cho biết host có hỗ trợ hay không. Chúng không có tác dụng trên web và không phụ thuộc vào trạng thái tắt tiếng.

Hướng dẫn liên quan

  • Toàn màn hình và vùng an toànCho game PlayDrop lấp đầy màn hình, giữ HUD trong vùng an toàn CSS và tránh nút điều khiển của host bằng reservedCorners do SDK đo.
  • Lưu đám mâyLưu và tải tiến trình người chơi bằng sdk.me.appData và updateAppData, cho khách và người chơi đã đăng nhập, kèm quy tắc ghi, xem trước và chơi ngoại tuyến.
  • Game InstantĐiều gì làm nên một game PlayDrop Instant: chơi dọc, cho khách chơi, tệp khởi động tối đa 10 MiB và vào game trong hai giây, cùng khác biệt với game thường.
  • SDK clientTài liệu tham khảo SDK trình duyệt PlayDrop: vòng đời host, danh tính và lưu game, tay cầm, xã hội, nhiều người chơi, cửa hàng, quảng cáo, bảng xếp hạng, tài nguyên, AI.
TrướcGame Instant và game thường trên PlayDropTiếpToàn màn hình, vùng an toàn và góc HUD cho game PlayDrop
Xem Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Trong trang này

Khởi tạo, rồi báo sẵn sàngCác giai đoạn: xem trước, chơi và trình chỉnh sửaTạm dừng và tiếp tụcÂm thanhTải trước và chơi ngoại tuyến trong ứng dụngPhản hồi rung
Xem Markdown