PlayDrop logoPlayDrop Studio
BuatTukar mainHasilkanBelajarKonektorAsetKomunitasBantuan
PlayDrop logoPlayDrop Studio
BuatTukar mainHasilkanBelajarKonektorAsetKomunitasBantuan
Masuk
Pemuatan, jeda, dan audio
Dokumentasi

Mulai di sini

RingkasanGame pertamamuGame PlayDropFAQ

Buat dengan Cloud

Pembuatan CloudPaket & generasi

Hubungkan aplikasi AI Anda

Semua konektorClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Terbitkan dan bagikan

Terbitkan dari aplikasi AI AndaGame HTML sederhanaPengemasan dan .playTerbitkan dan imporBerkas gameVisibilitas dan jangkauanGambar dan video listinganGenre dan tagLokalisasiGame Instan

Pengalaman bermain

Pemuatan, jeda, dan audioLayar penuh dan area amanSimpanan cloudGrup lokal dan pengontrol

Bermain bersama

Berbagi, teman, dan undanganPapan peringkatPencapaianGrup online dan suaraServer game realtime

Penghasilan

MonetisasiKredit & hadiah

Aset

Aset gamePembuatan aset AIFormat kustom dan kreasi pemain

Referensi

SDK klienSDK servercatalogue.jsonKesalahan dan pemulihanPemecahan masalah
DokumentasiPemuatan, jeda, dan audio
Pengalaman bermain

Siklus hidup game di PlayDrop: pemuatan, siap, jeda, dan audio

Inisialisasi SDK PlayDrop, beri sinyal siap di frame pertama, jeda dan lanjutkan dengan rapi, ikuti kebijakan audio host, dan pramuat berkas untuk main offline.

PlayDrop menampilkan layar pemuatan, menu jeda, kontrol bisu, dan jendela lain miliknya sendiri di sekitar game Anda. API siklus hidup menjaga game tetap selaras dengan semua itu: game berhenti saat PlayDrop menjedanya dan hanya memutar suara saat kebijakan audio PlayDrop mengizinkan.

Inisialisasi, lalu beri sinyal siap

Muat SDK, baca status awal, berlangganan perubahan, siapkan layar pertama, dan baru setelah itu panggil ready(). PlayDrop terus menampilkan layar pemuatannya sampai saat itu.

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>

Panggil ready() setelah layar pertama yang dirancang terlihat dan input berfungsi, bukan sebelum aset dimuat. sdk.host.error(message) memberi tahu PlayDrop bahwa game tidak bisa dimulai. setLoadingState dan firstFrameReady adalah nama lama untuk langkah yang sama; gunakan ready().

Fase: pratinjau, bermain, dan editor

sdk.host.phase bernilai preview, play, atau editor, dan onPhaseChange melaporkan perpindahannya. Pratinjau dan rekaman menampilkan game tanpa sesi sungguhan: jangan pernah menulis simpanan, skor, pencapaian, atau pembelian di luar play. sdk.host.mode bernilai play dalam kondisi normal dan dev di frame Dev lokal.

Jeda dan lanjutkan

onPause(reason) dan onResume(reason) terpicu saat pemain membuka menu jeda, menyembunyikan tab, masuk, membeli sesuatu, atau saat iklan atau jendela PlayDrop menutupi game. reason adalah salah satu dari tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change, atau native_background; sdk.host.isPaused adalah status saat ini.

Selama dijeda, hentikan simulasi dan timer. Saat dilanjutkan, reset jam frame Anda agar game tidak melompat maju:

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);

Tombol Escape dan tombol Menu pada pengontrol adalah milik menu jeda PlayDrop; jangan memetakannya di game Anda. Di game berjaringan, pertahankan koneksi room selama dijeda: menjeda satu pemain tidak boleh menghentikan pemain lain.

Audio

Baca sdk.host.audioAllowed sekali setelah init(), lalu ikuti onAudioAllowedChange. Nilai ini menggabungkan status bisu pemain, fase, dan jeda, serta tetap bernilai true selama jeda karena tab disembunyikan agar musik bisa mempertahankan posisinya. onAudioPolicyChange melaporkan { enabled, reason, volume } jika Anda juga memerlukan alasannya atau volume host.

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

Audio dimulai dalam keadaan bisu sampai host mengizinkannya, dan browser tetap memerlukan gestur pemain sebelum suara diputar. Pertahankan pengaturan volume di dalam game sebagai batas tambahan; bisu dari host selalu menang. Tangkap promise play() dan resume() yang ditolak.

Pramuat dan main offline di aplikasi

Aplikasi native bisa mengunduh berkas game sebelum game dimulai dan menyimpannya untuk dimainkan secara offline. Deklarasikan berkas itu di catalogue.json:

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

Halaman masuk selalu disertakan. Berkas required diunduh sebelum bermain; berkas optional sesudahnya. offlineSupported: true memungkinkan aplikasi menawarkan game secara offline setelah berkas wajibnya tersimpan. Nilai yang tidak valid diabaikan dan tidak pernah memblokir unggahan. Situs web memuat game seperti biasa. Untuk game Instan, berkas wajib menjadi ukuran berkas awal.

Di host yang menyatakan dukungan data perangkat, simpanan, skor, dan pencapaian yang dibuat secara offline tetap berada di perangkat dan disinkronkan setelah online; papan peringkat offline hanya menampilkan skor terbaik pemain itu sendiri. Di browser tidak ada antrean offline, jadi tangani simpanan yang gagal. Apa pun yang dimuat game dari internet tetap memerlukan koneksi.

Haptik

Di aplikasi native, sdk.haptics.selection(), impact("light" | "medium" | "heavy"), dan notification("success" | "warning" | "error") memberikan umpan balik singkat; sdk.haptics.supported menunjukkan apakah host mendukungnya. Panggilan ini tidak berpengaruh apa pun di web dan tidak bergantung pada status bisu.

Panduan terkait

  • Layar penuh dan area amanBuat game PlayDrop memenuhi layar, jaga HUD di dalam area aman CSS dan jauh dari kontrol host dengan memakai reservedCorners yang diukur SDK.
  • Simpanan cloudSimpan dan muat progres dengan sdk.me.appData dan sdk.me.updateAppData untuk tamu dan pemain yang sudah masuk, plus aturan penulisan, pratinjau, dan offline.
  • Game InstanSyarat game Instan PlayDrop: potret, akses tamu, berkas awal maksimal 10 MiB, mulai dalam dua detik, dan bedanya dengan game reguler.
  • SDK klienReferensi SDK browser: init, siklus hidup host, identitas, simpanan, perangkat, sosial, multiplayer, toko, iklan, papan peringkat, pencapaian, aset, dan AI.
SebelumnyaGame Instan dan game reguler di PlayDropBerikutnyaLayar penuh, area aman, dan sudut HUD untuk game PlayDrop
Lihat Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Di halaman ini

Inisialisasi, lalu beri sinyal siapFase: pratinjau, bermain, dan editorJeda dan lanjutkanAudioPramuat dan main offline di aplikasiHaptik
Lihat Markdown