PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
Zaloguj się
Ładowanie, pauza i dźwięk
Dokumentacja

Zacznij tutaj

PrzeglądTwoja pierwsza graGry PlayDropFAQ

Twórz z Cloud

Tworzenie w CloudPlany i generowania

Połącz swoją aplikację AI

Wszystkie konektoryClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publikuj i udostępniaj

Publikuj z aplikacji AIProste gry HTMLPakowanie i .playPublikowanie i importPliki gryWidoczność i zasięgGrafika i wideo strony gryGatunki i tagiLokalizacjaGry Instant

Wrażenia z gry

Ładowanie, pauza i dźwiękPełny ekran i bezpieczne obszaryZapisy w chmurzeGrupy lokalne i kontrolery

Wspólna gra

Udostępnianie, znajomi i zaproszeniaRankingiOsiągnięciaGrupy online i głosSerwery czasu rzeczywistego

Zarabiaj

ZarabianieKredyty i nagrody

Zasoby

Zasoby gryGenerowanie zasobów z AIWłasne formaty i twórczość graczy

Dokumentacja techniczna

SDK klientaSDK serweracatalogue.jsonBłędy i odzyskiwanieRozwiązywanie problemów
DokumentacjaŁadowanie, pauza i dźwięk
Wrażenia z gry

Cykl życia gry w PlayDrop: ładowanie, gotowość, pauza i dźwięk

Zainicjuj SDK, zgłoś gotowość przy pierwszej grywalnej klatce, wstrzymuj i wznawiaj grę, przestrzegaj zasad dźwięku i wstępnie ładuj pliki do gry offline.

PlayDrop wyświetla wokół twojej gry własny ekran ładowania, menu pauzy, wyciszenie i inne okna. API cyklu życia utrzymuje grę w zgodzie z nimi: gra zatrzymuje się, gdy PlayDrop ją wstrzymuje, i odtwarza dźwięk tylko wtedy, gdy pozwalają na to zasady dźwięku PlayDrop.

Zainicjuj, a potem zgłoś gotowość

Załaduj SDK, odczytaj stan początkowy, zasubskrybuj zmiany, przygotuj pierwszy ekran i dopiero wtedy wywołaj ready(). Do tego momentu PlayDrop pokazuje swój ekran ładowania.

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>

Wywołaj ready(), gdy zaprojektowany pierwszy ekran jest widoczny, a sterowanie działa, a nie przed załadowaniem zasobów. sdk.host.error(message) informuje PlayDrop, że gra nie może wystartować. setLoadingState i firstFrameReady to starsze nazwy tego samego kroku; używaj ready().

Fazy: podgląd, gra i edytor

sdk.host.phase ma wartość preview, play lub editor, a onPhaseChange zgłasza zmiany. Podglądy i przechwytywanie pokazują grę bez prawdziwej sesji: nigdy nie zapisuj postępów, wyników, osiągnięć ani zakupów poza fazą play. sdk.host.mode ma zwykle wartość play, a w lokalnej ramce Dev wartość dev.

Pauza i wznowienie

onPause(reason) i onResume(reason) są wywoływane, gdy gracz otwiera menu pauzy, ukrywa kartę przeglądarki, loguje się lub coś kupuje albo gdy grę zasłania reklama lub okno PlayDrop. reason to jedna z wartości tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change lub native_background; sdk.host.isPaused podaje bieżący stan.

Podczas pauzy zatrzymaj symulację i liczniki czasu. Po wznowieniu zresetuj zegar klatek, aby gra nie przeskoczyła do przodu:

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

Escape i przycisk Menu kontrolera należą do menu pauzy PlayDrop; nie przypisuj ich w grze. W grze sieciowej utrzymuj połączenie z pokojem podczas pauzy: wstrzymanie gry jednego gracza nie może zatrzymać pozostałych.

Dźwięk

Odczytaj sdk.host.audioAllowed raz po init(), a potem reaguj na onAudioAllowedChange. Ta wartość łączy wyciszenie przez gracza, fazę i pauzę, a podczas pauzy z powodu ukrytej karty pozostaje równa true, aby muzyka mogła zachować pozycję odtwarzania. onAudioPolicyChange zgłasza { enabled, reason, volume }, gdy potrzebujesz też powodu lub głośności hosta.

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

Dźwięk jest wyciszony, dopóki host na niego nie pozwoli, a przeglądarki i tak wymagają gestu gracza przed odtworzeniem dźwięku. Ustawienie głośności w grze traktuj jako dodatkowy limit; wyciszenie hosta zawsze ma pierwszeństwo. Przechwytuj odrzucone obietnice play() i resume().

Wstępne ładowanie i gra offline w aplikacjach

Aplikacje natywne mogą pobrać pliki gry przed jej startem i zachować je do gry offline. Zadeklaruj je w catalogue.json:

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

Strona wejściowa jest zawsze dołączona. Pliki required są pobierane przed grą, a optional po jej starcie. offlineSupported: true pozwala aplikacjom oferować grę offline, gdy jej wymagane pliki są już zapisane. Nieprawidłowe wartości są ignorowane i nigdy nie blokują przesłania. Strona internetowa ładuje gry jak zwykle. W grach Instant wymagane pliki stanowią rozmiar startowy.

Na hostach obsługujących dane na urządzeniu zapisy, wyniki i osiągnięcia zdobyte offline zostają na urządzeniu i synchronizują się po połączeniu z siecią; rankingi offline pokazują tylko najlepszy wynik samego gracza. W przeglądarce nie ma kolejki offline, więc obsłuż nieudany zapis. Wszystko, co gra ładuje z internetu, nadal wymaga połączenia.

Wibracje

W aplikacjach natywnych sdk.haptics.selection(), impact("light" | "medium" | "heavy") i notification("success" | "warning" | "error") dają krótką informację zwrotną przez wibracje; sdk.haptics.supported mówi, czy host to potrafi. W sieci nic nie robią i nie zależą od wyciszenia.

Powiązane poradniki

  • Pełny ekran i bezpieczne obszarySpraw, by gra PlayDrop wypełniała ekran, a jej interfejs mieścił się w bezpiecznych obszarach CSS i omijał przyciski hosta dzięki reservedCorners z SDK.
  • Zapisy w chmurzeZapisuj i wczytuj postępy graczy przez sdk.me.appData i sdk.me.updateAppData, dla gości i zalogowanych, z zasadami zapisu, podglądów i gry offline.
  • Gry InstantCo sprawia, że gra PlayDrop jest Instant: tryb pionowy, dostęp dla gości, do 10 MiB plików startowych i start w 2 sekundy, oraz czym różni się od zwykłej gry.
  • SDK klientaSDK PlayDrop w przeglądarce: cykl życia hosta, gracz i zapisy, kontrolery, funkcje społecznościowe, gra wieloosobowa, sklep, reklamy, rankingi, zasoby i AI.
PoprzedniGry Instant i zwykłe gry w PlayDropNastępnyPełny ekran, bezpieczne obszary i rogi interfejsu w grach PlayDrop
Pokaż Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Na tej stronie

Zainicjuj, a potem zgłoś gotowośćFazy: podgląd, gra i edytorPauza i wznowienieDźwiękWstępne ładowanie i gra offline w aplikacjachWibracje
Pokaż Markdown