Angon Cloud
Angon CloudDocs
Tutoriels & RéférenceExemple concret

Cas pratique : Jeu de rythme communautaire

Exemple complet de partage de niveaux personnalisés combinant audio, image et table No-Code.

Ce cas pratique vous guide dans la réalisation d'une fonctionnalité communautaire complète : un éditeur de niveaux partagés pour un jeu de rythme. Vous allez combiner une Table No-Code pour les métadonnées et le Stockage Angon Cloud pour héberger les musiques, pochettes et partitions JSON.

Architecture de la solution

ÉlémentEmplacementRaison
Morceau audio (.mp3 / .ogg)Stockage CloudFichier volumineux (1 à 10 Mo). Renvoie une URL de streaming directe.
Pochette (.png / .jpg)Stockage CloudIllustration pour la vignette du catalogue.
Partition des notes (.json)Stockage CloudStructure JSON contenant les timings et positions des notes à frapper.
Fiche du niveauTable niveaux_communauteTitre, BPM, difficulté, pseudo créateur, likes et les 3 URLs.

Étape 1 : Téléversement par le créateur

Dans la scène de création de niveau, le créateur choisit ses fichiers via les boîtes de dialogue natives :

Événements de publication du niveau
// 1. Envoi de la musique
Action : Ouvrir la boîte de dialogue pour téléverser un fichier sur Angon Cloud 
         (nom: "track.mp3", types: "audio/*", log: VariableLog)

Condition : Le dernier téléversement de fichier a réussi
Action    : Modifier la variable Scene NouveauNiveau.url_musique = AngonCloud::DernierFichierUrl()

// 2. Envoi de la pochette
Action : Ouvrir la boîte de dialogue pour téléverser un fichier sur Angon Cloud 
         (nom: "cover.png", types: "image/*", log: VariableLog)

Condition : Le dernier téléversement de fichier a réussi
Action    : Modifier la variable Scene NouveauNiveau.url_image = AngonCloud::DernierFichierUrl()

// 3. Sauvegarde de la partition de notes (JSON)
Action : Sauvegarder le fichier "partition.json" avec le contenu ToJSON(Variable(GrilleNotes)) 
         sur Angon Cloud (écraser: true, log: VariableLog)

Condition : Le dernier téléversement de fichier a réussi
Action    : Modifier la variable Scene NouveauNiveau.url_notes = AngonCloud::DernierFichierUrl()
            Modifier la variable Scene NouveauNiveau.titre = ChampTitre.String()
            Modifier la variable Scene NouveauNiveau.auteur = AngonCloud::Pseudo()
            Modifier la variable Scene NouveauNiveau.likes = 0
            // Créer la fiche dans la table communautaire
            Créer une ligne dans la table "niveaux_communaute" depuis la variable Scene NouveauNiveau

Étape 2 : Consultation par la communauté

Dans le menu du catalogue communautaire, chargez les niveaux les plus appréciés :

Chargement du catalogue des niveaux populaires
// Récupérer les 20 niveaux les plus populaires
Condition : Au début de la scène
Action    : Lister les lignes de la table "niveaux_communaute" triées par "likes" ordre descendant (limite: 20) dans la variable Scene NiveauxPopulaires

Étape 3 : Chargement et lancement du niveau

Lorsqu'un joueur clique sur un niveau du catalogue, votre jeu dispose directement des URLs publiques pour lancer la musique et charger la partition JSON :

  • Musique : Lancer la lecture audio en streaming via l'action standard GDevelop Jouer un son sur un canal en passant l'URL.
  • Pochette : Affecter l'URL à l'objet Sprite du menu.
  • Partition : Télécharger le JSON de la partition et peupler la structure de données des notes.