Berbagi, teman, dan undangan di game PlayDrop
Bagikan game dengan gambar atau klip, baca payload peluncuran, pilih teman, kirim kartu undangan dan tantangan di PlayDrop Chat, serta rekomendasikan game lain.
PlayDrop menangani lembar berbagi, daftar teman, dan chat; game Anda memintanya pada saat yang tepat. Pemain mengajak teman mereka, dan teman-teman itu langsung masuk ke game Anda.
Bagikan game
Panggil sdk.host.share() dari ketukan atau klik. Panggilan ini membagikan halaman publik game dengan teks opsional, gambar atau video pendek, serta payload peluncuran opsional.
shareButton.addEventListener("click", async () => {
try {
await sdk.host.share({ text: `I reached level ${level} in Moon Jump`, image: scoreCardBlob, payload: "level-7" });
} catch (error) {
console.warn("Share failed", error);
}
});image: Blob GIF, JPEG, PNG, atau WebP berukuran hingga 8 MiB. Host yang tidak bisa melampirkan gambar hanya membagikan tautannya.video: Blob MP4 berdurasi maksimal 15 detik dan berukuran maksimal 20.000.000 byte, sebagai pengganti gambar. H.264/AAC pada 1080p dengan rasio 16:9, 9:16, atau 1:1 memberikan hasil terbaik. Host yang tidak mendukung video menolak denganhost_share_video_unsupportedalih-alih membagikan tautan biasa.- Siapkan Blob sebelum ketukan; membuatnya setelah ketukan bisa membuat browser mencabut izin untuk berbagi.
- Anda tidak bisa membagikan URL kustom atau berkas lain. Tautannya selalu halaman game.
Kesalahan gambar adalah invalid_host_share_image, host_share_image_type, dan host_share_image_too_large.
Baca payload peluncuran
payload berisi hingga 256 karakter base64url. Pemain yang membuka tautan yang dibagikan memulai game dengan sdk.host.launchPayload berisi nilai itu, atau null. Perlakukan sebagai input yang tidak tepercaya: validasi, dan periksa di server Anda bahwa pemain boleh bergabung ke room yang disebutkannya. Jangan pernah memasukkan kredensial ke dalamnya.
Pilih teman dan kirim kartu game
sdk.social.selectFriends({ max }) membuka pemilih teman PlayDrop (1 sampai 10, default 1) dan hanya mengembalikan teman yang dipilih pemain, atau [] jika mereka membatalkan. Lalu kirim kartu yang muncul di PlayDrop Chat:
const [friend] = await sdk.social.selectFriends({ max: 1 });
if (friend) {
await sdk.social.sendMessage({
recipientUserId: friend.id,
type: "challenge",
title: "Beat my time: 42.3 s",
subtitle: "Moon Jump, level 7",
payload: "level-7",
clientMessageId: `challenge-${runId}-${friend.id}`,
});
}typebernilaiinvite,request,gift,challenge, atauturn.titleberisi hingga 80 karakter dansubtitlehingga 160.expiresInSecondsberkisar dari 60 detik hingga 30 hari (default).clientMessageIdmembuat percobaan ulang aman: memakainya lagi akan mengembalikan pesan aslinya.- Anda bisa mengirim pesan kepada teman yang dipilih pemain, teman yang memainkan game ini, dan pemain yang sudah bertukar pesan game dengannya. Orang asing yang ditemui lewat matchmaking tidak bisa dikirimi pesan.
Baca kartu yang masuk dengan getMessages({ limit }), mulai dari yang terlama, lalu tandai masing-masing sebagai sudah ditangani dengan consumeMessage(message.id). Pengirimnya adalah message.from.id.
const page = await sdk.social.getMessages({ limit: 20 });
for (const message of page.messages) {
await applyCard(message.type, message.from.id, message.payload);
await sdk.social.consumeMessage(message.id);
}Lanjutkan dengan cursor: page.nextCursor sampai nilainya null.
Teman yang memainkan game ini
sdk.social.listGameFriends() mengembalikan teman yang baru-baru ini punya sesi di game ini: daftar yang cocok untuk tombol "main bersama". Panggilan ini tidak menampilkan daftar teman lengkap atau status kehadiran. openProfile(userId) membuka profil pemain dan openChat({ recipientUserId, draftMessage }) membuka Chat dengan draf yang bisa diedit dan dikirim sendiri oleh pemain.
Pemain baru yang datang dari seorang teman mungkin memiliki sdk.host.launchFriend. Tawarkan untuk bermain bersama teman itu dan konfirmasikan dengan selectFriends({ max: 1 }); jangan pernah memulai apa pun secara otomatis.
Rekomendasikan game lain
Pada jeda alami, seperti saat game over, sdk.host.showGames({ games: ["@creator/name"] }) menampilkan kartu PlayDrop untuk satu sampai tiga game publik lain dan menjeda game Anda. Panggilan ini selesai dengan played (PlayDrop lalu berpindah game) atau dismissed. sdk.host.preloadGame(ref) memberi petunjuk tentang game yang mungkin dibuka pemain berikutnya.
Persyaratan
Panggilan berbagi dan sosial memerlukan paket yang memakai SDK. Fitur teman memerlukan pemain yang sudah masuk. Jendela milik host menjeda game; tangani jeda dan lanjut.