Delen, vrienden en uitnodigingen in PlayDrop-games
Deel een game met een afbeelding of clip, lees startpayloads, kies vrienden, stuur uitnodigings- en uitdagingskaarten in PlayDrop Chat en raad andere games aan.
PlayDrop regelt het deelvenster, de vriendenlijst en de chat; je game vraagt er op het juiste moment om. Spelers brengen hun vrienden mee, en die vrienden komen in je game terecht.
De game delen
Roep sdk.host.share() aan vanuit een tik of klik. Het deelt de openbare pagina van de game met optionele tekst, een afbeelding of een korte video, en een optionele startpayload.
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: een GIF-, JPEG-, PNG- of WebP-Blob tot 8 MiB. Hosts die geen afbeeldingen kunnen bijvoegen, delen alleen de link.video: een MP4-Blob van maximaal 15 seconden en 20.000.000 bytes, in plaats van een afbeelding. H.264/AAC in 1080p in 16:9, 9:16 of 1:1 werkt het best. Hosts zonder ondersteuning voor video weigeren methost_share_video_unsupportedin plaats van een gewone link te delen.- Maak de Blob klaar vóór de tik; als je hem na de tik genereert, kan de browser de toestemming om te delen intrekken.
- Je kunt geen eigen URL of andere bestanden delen. De link is altijd de pagina van de game.
Fouten bij afbeeldingen zijn invalid_host_share_image, host_share_image_type en host_share_image_too_large.
De startpayload lezen
payload is maximaal 256 base64url-tekens. Een speler die de gedeelde link opent, start de game met sdk.host.launchPayload ingesteld op die waarde, of op null. Behandel het als onbetrouwbare invoer: valideer het en controleer op je server of de speler mag meedoen in een kamer die erin wordt genoemd. Zet er nooit inloggegevens in.
Vrienden kiezen en gamekaarten sturen
sdk.social.selectFriends({ max }) opent de vriendenkiezer van PlayDrop (1 tot 10, standaard 1) en geeft alleen de vrienden terug die de speler heeft gekozen, of [] als die annuleert. Stuur daarna een kaart die in PlayDrop Chat verschijnt:
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}`,
});
}typeisinvite,request,gift,challengeofturn.titleis maximaal 80 tekens ensubtitlemaximaal 160.expiresInSecondsis 60 seconden tot 30 dagen (de standaard).clientMessageIdmaakt opnieuw proberen veilig: hergebruik geeft het oorspronkelijke bericht terug.- Je kunt berichten sturen aan vrienden die de speler heeft gekozen, vrienden die deze game spelen en spelers met wie de speler al gameberichten uitwisselt. Onbekenden uit matchmaking kun je geen bericht sturen.
Lees binnenkomende kaarten met getMessages({ limit }), oudste eerst, en markeer daarna elke kaart als afgehandeld met consumeMessage(message.id). De afzender is 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);
}Ga door met cursor: page.nextCursor tot die null is.
Vrienden die deze game spelen
sdk.social.listGameFriends() geeft vrienden terug met een recente sessie in deze game: een goede lijst voor knoppen om samen te spelen. Het toont niet de volledige vriendenlijst of wie er online is. openProfile(userId) opent het profiel van een speler en openChat({ recipientUserId, draftMessage }) opent Chat met een bewerkbaar concept dat de speler zelf verstuurt.
Bij een nieuwe speler die via een vriend is gekomen, kan sdk.host.launchFriend zijn ingesteld. Bied aan om samen te spelen en bevestig met selectFriends({ max: 1 }); start nooit iets automatisch.
Andere games aanraden
Op een natuurlijk rustmoment, zoals bij game-over, toont sdk.host.showGames({ games: ["@creator/name"] }) PlayDrop-kaarten voor één tot drie andere openbare games en pauzeert het jouw game. Het wordt afgerond met played (PlayDrop schakelt dan van game) of dismissed. sdk.host.preloadGame(ref) geeft een hint over de game die de speler misschien als volgende opent.
Vereisten
Delen en sociale aanroepen hebben een pakket nodig dat de SDK gebruikt. Functies voor vrienden vereisen een ingelogde speler. Vensters van de host pauzeren de game; handel pauzeren en hervatten af.