PlayDrop oyunlarında paylaşım, arkadaşlar ve davetler
Oyunu görsel ya da kliple paylaş, başlatma verisini oku, arkadaş seç, PlayDrop Sohbet’te davet ve meydan okuma kartları gönder, başka oyunlar öner.
Paylaşım panelini, arkadaş listesini ve sohbeti PlayDrop yönetir; oyunun bunları doğru anda ister. Oyuncular arkadaşlarını getirir ve arkadaşlar doğrudan oyununa gelir.
Oyunu paylaş
sdk.host.share() çağrısını bir dokunma ya da tıklamadan yap. Oyunun herkese açık sayfasını isteğe bağlı metin, bir görsel ya da kısa bir video ve isteğe bağlı bir başlatma verisiyle paylaşır.
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: en fazla 8 MiB boyutunda GIF, JPEG, PNG ya da WebP Blob. Görsel ekleyemeyen ana uygulamalar yalnızca bağlantıyı paylaşır.video: görsel yerine en fazla 15 saniye ve 20.000.000 bayt boyutunda bir MP4 Blob. 16:9, 9:16 ya da 1:1 oranında 1080p H.264/AAC en iyi sonucu verir. Video desteği olmayan ana uygulamalar düz bir bağlantı paylaşmak yerinehost_share_video_unsupportedile reddeder.- Blob’u dokunmadan önce hazırla; dokunmadan sonra oluşturmak tarayıcının paylaşma iznini kaybettirebilir.
- Özel bir URL ya da başka dosyalar paylaşamazsın. Bağlantı her zaman oyunun sayfasıdır.
Görsel hataları invalid_host_share_image, host_share_image_type ve host_share_image_too_large kodlarıdır.
Başlatma verisini oku
payload en fazla 256 base64url karakteridir. Paylaşılan bağlantıyı açan oyuncu, oyunu sdk.host.launchPayload bu değere ya da null değerine ayarlanmış olarak başlatır. Onu güvenilmeyen girdi olarak ele al: doğrula ve oyuncunun, verinin belirttiği bir odaya katılıp katılamayacağını sunucunda kontrol et. İçine asla kimlik bilgisi koyma.
Arkadaş seç ve oyun kartları gönder
sdk.social.selectFriends({ max }) PlayDrop’un arkadaş seçicisini açar (1 ile 10 arası, varsayılan 1) ve yalnızca oyuncunun seçtiği arkadaşları ya da oyuncu iptal ederse [] döndürür. Sonra PlayDrop Sohbet’te görünen bir kart gönder:
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}`,
});
}typedeğeriinvite,request,gift,challengeya daturnolur.titleen fazla 80,subtitleen fazla 160 karakterdir.expiresInSeconds60 saniye ile 30 gün (varsayılan) arasındadır.clientMessageIdtekrar denemeyi güvenli kılar: onu yeniden kullanmak özgün mesajı döndürür.- Oyuncunun seçtiği arkadaşlara, bu oyunu oynayan arkadaşlara ve oyuncunun zaten oyun mesajlaştığı oyunculara mesaj gönderebilirsin. Eşleştirmede karşılaşılan yabancılara mesaj gönderilemez.
Gelen kartları en eskiden başlayarak getMessages({ limit }) ile oku, sonra her birini consumeMessage(message.id) ile işlendi olarak işaretle. Gönderen message.from.id değeridir.
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);
}null olana kadar cursor: page.nextCursor ile devam et.
Bu oyunu oynayan arkadaşlar
sdk.social.listGameFriends() bu oyunda yakın zamanda oturumu olan arkadaşları döndürür: “birlikte oyna” düğmeleri için iyi bir liste. Arkadaş listesinin tamamını ya da çevrimiçi durumunu göstermez. openProfile(userId) bir oyuncunun profilini açar, openChat({ recipientUserId, draftMessage }) ise oyuncunun kendisinin göndereceği düzenlenebilir bir taslakla Sohbet’i açar.
Bir arkadaşı üzerinden gelen yeni bir oyuncuda sdk.host.launchFriend ayarlı olabilir. Onunla oynamayı öner ve selectFriends({ max: 1 }) ile onayla; asla bir şeyi otomatik başlatma.
Başka oyunlar öner
Oyun bitişi gibi doğal bir arada sdk.host.showGames({ games: ["@creator/name"] }), herkese açık bir ila üç başka oyun için PlayDrop kartları gösterir ve seninkini duraklatır. played (PlayDrop ardından oyunu değiştirir) ya da dismissed ile tamamlanır. sdk.host.preloadGame(ref), oyuncunun bir sonraki açabileceği oyunu önceden bildirir.
Gereksinimler
Paylaşım ve sosyal çağrılar SDK’yı kullanan bir paket gerektirir. Arkadaş özellikleri giriş yapmış bir oyuncu gerektirir. Ana uygulamanın pencereleri oyunu duraklatır; duraklatma ve sürdürmeyi ele al.