PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
PlayDrop logoPlayDrop Studio
CréerÉchange de partiesGagnerApprendreConnecteursRessourcesCommunautéAide
Se connecter
Formats personnalisés et créations
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
DocumentationFormats personnalisés et créations
Ressources

Formats de ressources personnalisés et créations des joueurs

Définissez votre format de ressource, déclarez les formats qu’un jeu lit ou écrit, et laissez les joueurs enregistrer et publier leurs créations avec sdk.assets.custom.

Les spécifications de ressources permettent à un jeu de définir son propre type de ressource, comme un niveau, un personnage ou un deck, sous la forme d’un contrat de fichiers. Les joueurs peuvent alors créer, enregistrer et publier des créations dans ce format, et d’autres jeux qui le prennent en charge peuvent les ouvrir.

Définissez une spécification de ressource

Une spécification de ressource se déclare dans la liste assetSpecs de catalogue.json, à côté de apps :

json
{
  "assetSpecs": [{
    "name": "moon-level",
    "version": "1.0.0",
    "displayName": "Moon Jump level",
    "symbol": "specs/moon-level.svg",
    "contract": "specs/moon-level.contract.json"
  }]
}

Le contrat nomme les fichiers de chaque ressource et indique comment les vérifier :

json
{
  "primaryRole": "level",
  "roles": [
    { "name": "level", "required": true, "contentTypes": ["application/json"], "mode": "TEXT",
      "jsonSchema": { "type": "object", "required": ["tiles"], "properties": { "tiles": { "type": "array" } } } },
    { "name": "thumbnail", "required": false, "contentTypes": ["image/png"], "mode": "BINARY" }
  ]
}

Les rôles peuvent comporter un schéma JSON, que PlayDrop vérifie à chaque enregistrement. Publiez une nouvelle version de la spécification quand le format change ; les anciennes ressources conservent leur version.

Déclarez ce qu’un jeu prend en charge

json
{
  "assetSpecSupport": [
    { "assetSpec": "asset-spec:your-name/moon-level", "versionRange": "^1.0.0", "capabilities": ["READ", "WRITE"] }
  ]
}

Les capacités possibles sont READ, WRITE, EDIT, PREVIEW et IMPORT.

Enregistrez et chargez les créations des joueurs

js
const levels = sdk.assets.custom.forSpec("asset-spec:your-name/moon-level");

await levels.saveDraft({ assetName: "crater-run", displayName: "Crater run",
  files: { level: new Blob([JSON.stringify(level)], { type: "application/json" }) } });
await levels.publish({ assetName: "crater-run", displayName: "Crater run", files: { level: levelBlob, thumbnail: pngBlob } });

const mine = await levels.listMine();
const latest = mine[0]?.latestPublicVersion;
if (latest) startLevel(await levels.loadJson({ assetRef: latest.assetRef, role: "level" }));

const community = await levels.listPublic({ limit: 20 }); // { assets, pagination }
  • saveDraft conserve un brouillon privé ; publish le rend public. Les deux exigent l’ensemble complet des fichiers.
  • Les références de ressources ressemblent à asset:creator/name@r2. loadJson, loadText et downloadFile lisent les ressources publiées ; loadOwned, loadOwnedJson et loadOwnedFile lisent celles du joueur, brouillons compris.
  • supports(versionRef, capability) vérifie la compatibilité avant d’ouvrir une ressource d’une autre version.
  • Les erreurs utilisent des codes comme custom_asset_capability_unsupported et custom_asset_role_type_mismatch.

Les joueurs doivent être connectés pour enregistrer. Vérifiez ce que publient les joueurs comme n’importe quel contenu d’utilisateur : la politique de contenu de PlayDrop s’y applique.

Ce que le connecteur accepte

Les ressources personnalisées et les spécifications composées uniquement de données s’envoient comme les autres fichiers. Les modèles exécutables, c’est-à-dire les ressources MODEL_3D de sous-catégorie procedural ou au format CUSTOM, sont refusés par le connecteur, car l’API n’exécute pas le code des créateurs ; figez-les en modèle statique ou référencez une version publiée. Consultez ressources de jeu.

Guides associés

  • Ressources de jeuIntégrez images, sons, vidéos et 3D à un jeu PlayDrop : fichiers inclus, ressources du jeu dans catalogue.json, ressources et packs publics, accès avec sdk.assets.
  • catalogue.jsonLes champs catalogue.json des jeux PlayDrop : identité, fiche, modes de jeu, surfaces, connexion, Instantané, préchargement, médias, traductions, scores et serveurs.
  • 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édentGénération de ressources par IA pour les jeux PlayDropSuivantRéférence du SDK client PlayDrop
Voir le Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Sur cette page

Définissez une spécification de ressourceDéclarez ce qu’un jeu prend en chargeEnregistrez et chargez les créations des joueursCe que le connecteur accepte
Voir le Markdown