Teilen, Freunde und Einladungen in PlayDrop-Spielen
Ein Spiel mit Bild oder Clip teilen, Startdaten lesen, Freunde auswählen, Einladungen und Herausforderungen in PlayDrop Chat senden und andere Spiele empfehlen.
PlayDrop kümmert sich um das Teilen-Menü, die Freundesliste und den Chat; dein Spiel ruft sie im richtigen Moment auf. Spieler bringen ihre Freunde mit, und die Freunde landen in deinem Spiel.
Das Spiel teilen
Rufe sdk.host.share() nach einem Tippen oder Klicken auf. Es teilt die öffentliche Seite des Spiels mit optionalem Text, einem Bild oder einem kurzen Video und optionalen Startdaten.
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: ein GIF-, JPEG-, PNG- oder WebP-Blob bis 8 MiB. Hosts, die keine Bilder anhängen können, teilen nur den Link.video: ein MP4-Blob von höchstens 15 Sekunden und 20.000.000 Bytes, statt eines Bildes. Am besten funktioniert H.264/AAC in 1080p im Format 16:9, 9:16 oder 1:1. Hosts ohne Videounterstützung lehnen mithost_share_video_unsupportedab, statt nur einen Link zu teilen.- Bereite den Blob vor dem Tippen vor; wird er erst danach erzeugt, kann die Erlaubnis des Browsers zum Teilen verloren gehen.
- Du kannst keine eigene URL und keine anderen Dateien teilen. Der Link ist immer die Seite des Spiels.
Fehler bei Bildern sind invalid_host_share_image, host_share_image_type und host_share_image_too_large.
Die Startdaten lesen
payload umfasst bis zu 256 base64url-Zeichen. Ein Spieler, der den geteilten Link öffnet, startet das Spiel mit sdk.host.launchPayload auf diesem Wert, sonst null. Behandle ihn als nicht vertrauenswürdige Eingabe: Prüfe ihn und kontrolliere auf deinem Server, ob der Spieler einem darin genannten Raum beitreten darf. Leg niemals Zugangsdaten hinein.
Freunde auswählen und Spielkarten senden
sdk.social.selectFriends({ max }) öffnet die Freundesauswahl von PlayDrop (1 bis 10, Standard 1) und liefert nur die Freunde, die der Spieler gewählt hat, oder [], wenn er abbricht. Sende dann eine Karte, die in PlayDrop Chat erscheint:
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}`,
});
}typeistinvite,request,gift,challengeoderturn.titlehat bis zu 80 Zeichen undsubtitlebis zu 160.expiresInSecondsliegt zwischen 60 Sekunden und 30 Tagen (Standard).clientMessageIdmacht eine Wiederholung sicher: Wird sie erneut verwendet, kommt die ursprüngliche Nachricht zurück.- Du kannst Freunden schreiben, die der Spieler ausgewählt hat, Freunden, die dieses Spiel spielen, und Spielern, mit denen er schon Spielnachrichten austauscht. Fremde aus dem Matchmaking kannst du nicht anschreiben.
Lies eingehende Karten mit getMessages({ limit }), die älteste zuerst, und markiere dann jede mit consumeMessage(message.id) als erledigt. Der Absender ist 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);
}Mach mit cursor: page.nextCursor weiter, bis der Wert null ist.
Freunde, die dieses Spiel spielen
sdk.social.listGameFriends() liefert Freunde mit einer kürzlichen Sitzung in diesem Spiel: eine gute Liste für Buttons wie „Zusammen spielen“. Die vollständige Freundesliste oder den Online-Status gibt die Methode nicht preis. openProfile(userId) öffnet das Profil eines Spielers, und openChat({ recipientUserId, draftMessage }) öffnet den Chat mit einem bearbeitbaren Entwurf, den der Spieler selbst sendet.
Bei einem neuen Spieler, der über einen Freund gekommen ist, kann sdk.host.launchFriend gesetzt sein. Biete an, mit diesem Freund zu spielen, und lass es mit selectFriends({ max: 1 }) bestätigen; starte nie etwas automatisch.
Andere Spiele empfehlen
An einer natürlichen Pause, etwa bei Game Over, zeigt sdk.host.showGames({ games: ["@creator/name"] }) PlayDrop-Karten für ein bis drei andere öffentliche Spiele und pausiert deins. Der Aufruf liefert played (PlayDrop wechselt dann das Spiel) oder dismissed. sdk.host.preloadGame(ref) weist auf das Spiel hin, das der Spieler wahrscheinlich als Nächstes öffnet.
Voraussetzungen
Teilen und soziale Aufrufe brauchen ein Paket, das das SDK nutzt. Funktionen für Freunde brauchen einen angemeldeten Spieler. Fenster des Hosts pausieren das Spiel; behandle Pausieren und Fortsetzen.