PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
Se connecter
Chargement, pause et audio
Documentation

Commencez ici

Vue d’ensembleVotre premier jeuJeux PlayDropFAQ

Créer avec Cloud

Création CloudOffres et générations

Connecter votre app d’IA

Tous les connecteursClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publier et partager

Publier depuis votre app d’IAJeux HTML simplesPaquets et .playPublication et importFichiers de jeuVisibilité et audienceIllustrations et vidéos de la ficheGenres et tagsLocalisationJeux instantanés

Expérience de jeu

Chargement, pause et audioPlein écran et zones sûresSauvegardes cloudGroupes locaux et manettes

Jouer ensemble

Partage, amis et invitationsClassementsSuccèsGroupes en ligne et voixServeurs de jeu temps réel

Gains

MonétisationCrédits et récompenses

Ressources

Ressources de jeuGénération de ressources par IAFormats personnalisés et créations

Référence

SDK clientSDK serveurcatalogue.jsonErreurs et repriseDépannage
DocumentationChargement, pause et audio
Expérience de jeu

Cycle de vie d’un jeu PlayDrop : chargement, prêt, pause et audio

Initialisez le SDK, signalez ready dès la première image jouable, gérez pause, reprise et audio de l’hôte, et préchargez pour les apps et le jeu hors ligne.

PlayDrop affiche autour de votre jeu son propre écran de chargement, son menu pause, sa commande de sourdine et d’autres fenêtres. L’API de cycle de vie garde le jeu synchronisé avec eux : il s’arrête pendant que PlayDrop le met en pause et ne joue du son que lorsque la politique audio de PlayDrop l’autorise.

Initialisez, puis signalez que le jeu est prêt

Chargez le SDK, lisez l’état initial, abonnez-vous aux changements, préparez le premier écran, et seulement ensuite appelez ready(). PlayDrop garde son écran de chargement affiché jusque-là.

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>

Appelez ready() une fois que le premier écran prévu est visible et que les commandes répondent, et pas avant le chargement des ressources. sdk.host.error(message) indique à PlayDrop que le jeu ne peut pas démarrer. setLoadingState et firstFrameReady sont d’anciens noms de cette même étape ; utilisez ready().

Phases : aperçu, jeu et éditeur

sdk.host.phase vaut preview, play ou editor, et onPhaseChange signale les changements. Les aperçus et les captures montrent le jeu sans véritable session : n’écrivez jamais de sauvegardes, de scores, de succès ni d’achats en dehors de play. sdk.host.mode vaut normalement play, et dev dans le cadre Dev local.

Pause et reprise

onPause(reason) et onResume(reason) se déclenchent quand le joueur ouvre le menu pause, masque l’onglet, se connecte, achète quelque chose, ou quand une publicité ou une fenêtre PlayDrop recouvre le jeu. reason vaut tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change ou native_background ; sdk.host.isPaused donne l’état actuel.

Pendant la pause, arrêtez la simulation et les minuteurs. À la reprise, réinitialisez votre horloge d’images pour que le jeu ne fasse pas un bond en avant :

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

Échap et le bouton Menu d’une manette appartiennent au menu pause de PlayDrop ; ne leur associez aucune action dans votre jeu. Dans un jeu en réseau, maintenez la connexion à la salle pendant la pause : la pause d’un joueur ne doit pas arrêter les autres.

Audio

Lisez sdk.host.audioAllowed une fois après init(), puis suivez onAudioAllowedChange. Cette valeur combine la sourdine du joueur, la phase et la pause, et reste vraie pendant une pause due à un onglet masqué, pour que la musique garde sa position. onAudioPolicyChange transmet { enabled, reason, volume } quand vous avez aussi besoin de la raison ou du volume de l’hôte.

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

L’audio démarre coupé jusqu’à ce que l’hôte l’autorise, et les navigateurs exigent toujours un geste du joueur avant de jouer du son. Gardez un éventuel réglage de volume propre au jeu comme limite supplémentaire ; la sourdine de l’hôte l’emporte toujours. Interceptez les promesses play() et resume() rejetées.

Préchargement et jeu hors ligne dans les apps

Les apps natives peuvent télécharger les fichiers d’un jeu avant son démarrage et les conserver pour jouer hors ligne. Déclarez-les dans catalogue.json :

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

La page d’entrée est toujours incluse. Les fichiers required sont récupérés avant de jouer, les fichiers optional après. offlineSupported: true permet aux apps de proposer le jeu hors ligne une fois ses fichiers requis enregistrés. Les valeurs non valides sont ignorées et ne bloquent jamais un envoi. Le site web charge les jeux comme d’habitude. Pour les jeux instantanés, les fichiers requis constituent la taille de démarrage.

Sur les hôtes qui annoncent la prise en charge des données sur l’appareil, les sauvegardes, scores et succès réalisés hors ligne restent sur l’appareil et se synchronisent une fois en ligne ; hors ligne, les classements n’affichent que le record du joueur. Dans un navigateur, il n’existe pas de file d’attente hors ligne : gérez donc l’échec d’une sauvegarde. Tout ce que le jeu charge depuis Internet nécessite toujours une connexion.

Retours haptiques

Dans les apps natives, sdk.haptics.selection(), impact("light" | "medium" | "heavy") et notification("success" | "warning" | "error") produisent une courte vibration ; sdk.haptics.supported indique si l’hôte en est capable. Ces appels sont sans effet sur le Web et indépendants de la sourdine.

Guides associés

  • Plein écran et zones sûresUn jeu PlayDrop en plein écran, avec une interface dans les zones sûres CSS et loin des commandes de l’hôte grâce aux reservedCorners mesurés par le SDK.
  • Sauvegardes cloudEnregistrez et chargez la progression avec sdk.me.appData et sdk.me.updateAppData, pour invités et joueurs connectés : écritures, aperçus et hors ligne.
  • Jeux instantanésCe qui rend un jeu PlayDrop instantané : portrait, invités, au plus 10 MiB de fichiers de démarrage, lancement en deux secondes, et la différence avec un jeu classique.
  • SDK clientSDK navigateur de PlayDrop : init, hôte, joueur et sauvegardes, manettes, social, multijoueur, boutique, publicités, classements, succès, ressources et IA.
PrécédentJeux instantanés et jeux classiques sur PlayDropSuivantPlein écran, zones sûres et coins de l’interface des jeux PlayDrop
Voir le Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Sur cette page

Initialisez, puis signalez que le jeu est prêtPhases : aperçu, jeu et éditeurPause et repriseAudioPréchargement et jeu hors ligne dans les appsRetours haptiques
Voir le Markdown