PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
Se connecter
Plein écran et zones sûres
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
DocumentationPlein écran et zones sûres
Expérience de jeu

Plein écran, zones sûres et coins de l’interface des jeux PlayDrop

Un 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.

PlayDrop donne tout l’écran à votre jeu : la page du jeu sur le site web a sa propre commande plein écran, et les apps affichent les jeux en plein écran. Sur téléphone, PlayDrop place de petites commandes Pause et Audio (et une commande de voix pendant un groupe) par-dessus les coins supérieurs du jeu. Le SDK vous indique exactement où elles se trouvent, pour que l’interface du jeu puisse les éviter sans gaspiller d’espace.

Remplissez la zone d’affichage

Dessinez bord à bord et empêchez la page de défiler, de zoomer ou de sélectionner du texte :

html
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no">
<style>
  html, body { margin: 0; width: 100%; height: 100%; overflow: hidden; background: #000; }
  body { touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
  canvas { display: block; width: 100vw; height: 100dvh; }
</style>

Dimensionnez le canvas à partir de sa taille affichée multipliée par devicePixelRatio, et redessinez-le à chaque resize : les fenêtres changent de taille sur ordinateur, sur tablette, sur les appareils pliables et quand le téléphone pivote. Les illustrations d’arrière-plan et l’aire de jeu vont partout, y compris sous les encoches et les commandes de l’hôte. Seuls les éléments d’interface interactifs ou destinés à être lus doivent les éviter. Vous n’avez pas besoin de votre propre bouton plein écran.

Gardez l’interface dégagée

Deux éléments peuvent recouvrir les bords :

  • Les zones sûres matérielles, comme une encoche ou la barre d’accueil, fournies par CSS env(safe-area-inset-top|right|bottom|left).
  • Les commandes de l’hôte, fournies par sdk.host.reservedCorners : { topLeft: { width, height }, topRight: { width, height } }, en pixels CSS mesurés depuis les coins supérieurs gauche et droit de la zone d’affichage du jeu.

Évitez la réunion des deux, jamais leur somme. Un élément d’interface en haut à gauche peut se placer sous le rectangle du coin ou à côté ; dans les deux cas, utilisez la plus grande des deux marges de chaque côté :

js
const root = document.documentElement.style;
function layoutHud(corners) {
  const left = corners?.topLeft ?? { width: 0, height: 0 };
  const right = corners?.topRight ?? { width: 0, height: 0 };
  root.setProperty("--pd-tl-h", `${left.height}px`);
  root.setProperty("--pd-tr-h", `${right.height}px`);
}
layoutHud(sdk.host.reservedCorners);
const stop = sdk.host.onReservedCornersChange(layoutHud);
css
.score { position: absolute; left: max(12px, env(safe-area-inset-left));
  top: max(12px, env(safe-area-inset-top), var(--pd-tl-h, 0px)); }
.lives { position: absolute; right: max(12px, env(safe-area-inset-right));
  top: max(12px, env(safe-area-inset-top), var(--pd-tr-h, 0px)); }
  • Une largeur et une hauteur nulles signifient que rien ne recouvre ce coin, par exemple sur le site web pour ordinateur, où les commandes sont placées hors du jeu.
  • null signale un hôte plus ancien qui n’indique pas les coins : conservez votre mise en page existante avec les zones sûres.
  • Les valeurs proviennent des commandes réellement affichées, comme des zones tactiles d’au moins 44 points sur téléphone, et changent avec la rotation, le redimensionnement et les groupes. Lisez-les ; ne codez jamais une taille en dur et ne réservez jamais de bande pleine largeur en haut de l’écran.

Désabonnez-vous avec la fonction renvoyée quand vous démontez le jeu.

Orientation et surfaces

Déclarez où le jeu fonctionne dans catalogue.json : surfaceTargets liste desktop, mobileLandscape et mobilePortrait, et primarySurface indique celle pour laquelle le jeu est conçu. N’activez que ce que vous avez testé. Un jeu en portrait affiché sur un écran large doit tout de même le remplir avec un arrière-plan cohérent plutôt qu’avec des bandes noires, et un jeu instantané doit être conçu d’abord pour le portrait.

Commandes sur écran tactile

Rendez les commandes confortables pour les pouces : au moins 44 pixels CSS, loin des coins réservés et des bords de l’écran où commencent les gestes du système. Utilisez les événements de pointeur, appelez preventDefault() sur les contacts tactiles du jeu et prenez en charge le clavier et la souris sur ordinateur. Les manettes sont traitées dans groupes locaux et manettes.

Guides associés

  • Chargement, pause et audioInitialisez 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.
  • Groupes locaux et manettesLisez manettes physiques et manettes téléphone PlayDrop avec sdk.device, suivez les emplacements locaux, déclarez manettes et tailles de groupe local.
  • 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édentCycle de vie d’un jeu PlayDrop : chargement, prêt, pause et audioSuivantSauvegardes cloud pour les 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

Remplissez la zone d’affichageGardez l’interface dégagéeOrientation et surfacesCommandes sur écran tactile
Voir le Markdown