Aller au contenu
Forma Roblox

Rechercher dans la formation

Module 06 · Game design

Examen du module 6 — Un game design qui retient les joueurs

Vérifie que tu sais concevoir une boucle de jeu, un début de partie, une progression, des raisons de revenir et un playtest, sans manipuler tes joueurs.

Ton meilleur résultat : Pas encore tenté

Questions de l’examen

15 questions · réussite à partir de 70 % · réponds à tout puis corrige

  1. Question 1QCMUn ami te décrit son jeu « On coupe des arbres, on vend le bois, on achète une hache plus rapide qui coupe plus vite ». Quelle partie de la core loop est « acheter une hache plus rapide » ?
  2. Question 2Vrai ou fauxAvant d’ajouter une fonctionnalité, il est conseillé de vérifier à quelle partie de la core loop elle se rattache.
  3. Question 3QCMUn nouveau joueur rejoint l’Obby des Nuages. Quelle arrivée suit le mieux les recommandations Roblox sur l’onboarding ?
  4. Question 4QCMQuelles techniques d’onboarding sont décrites par la documentation Roblox ? (plusieurs réponses possibles)

    Plusieurs réponses possibles : coche toutes les bonnes.

  5. Question 5Trouve le bugCette fonction doit dire si le faisceau de guidage est encore utile : oui tant que la prochaine étape est 1 ou 2, non ensuite. Pour un nouveau joueur (étape 0), elle affiche pourtant « false ». Où est le bug ?
    local Players = game:GetService("Players")
    
    local ETAPES_GUIDEES = 2
    local joueur = Players.LocalPlayer
    local etape = joueur:WaitForChild("leaderstats"):WaitForChild("Etape") :: IntValue
    
    local function guideNecessaire(): boolean
    	local prochaine = etape.Value + 1
    	return prochaine >= ETAPES_GUIDEES
    end
    
    print("Guide nécessaire :", guideNecessaire())
  6. Question 6Vrai ou fauxPour un petit jeu qui débute, les Experiments (tests A/B) de Roblox sont l’outil le plus fiable pour régler le début de partie.
  7. Question 7QCMDans ton obby, les joueurs ont en moyenne 5 000 pièces et la boutique ne propose que des traînées à 100 pièces. Quel est le problème, et quelle solution suit les conseils de Roblox ?
  8. Question 8QCMQuelle règle s’applique sur Roblox aux objets aléatoires payants ?
  9. Question 9Trouve le bugCette fonction de Config doit donner 2 pièces par étape dans le niveau 1 (étapes 1 à 5), plus un bonus de 10 à la dernière étape du niveau. Le bonus n’est jamais versé. Où est le bug ?
    local Niveau1 = {etapeDebut = 1, etapeFin = 5, piecesParEtape = 2}
    local BONUS_FIN_DE_NIVEAU = 10
    
    local function recompensePourEtape(etape: number): number
    	if etape < Niveau1.etapeDebut or etape >= Niveau1.etapeFin then
    		return 0
    	end
    	local gain = Niveau1.piecesParEtape
    	if etape == Niveau1.etapeFin then
    		gain += BONUS_FIN_DE_NIVEAU
    	end
    	return gain
    end
    
    print(recompensePourEtape(5))
  10. Question 10QCMQuelles affirmations sur les notifications d’expérience sont exactes selon la documentation Roblox ? (plusieurs réponses possibles)

    Plusieurs réponses possibles : coche toutes les bonnes.

  11. Question 11QCMTu veux récompenser les joueurs qui reviennent souvent. Quelle option respecte le mieux leur temps ?
  12. Question 12Vrai ou fauxPendant un playtest, il vaut mieux expliquer au testeur ce qu’il doit faire dès qu’il hésite, pour gagner du temps.
  13. Question 13QCMAprès un playtest, un testeur te demande « Mets des dragons ! ». Que conseille la documentation Roblox sur les LiveOps ?
  14. Question 14QCMClaude Code vient d’écrire RecompensesEtapes.valider pour verser les pièces d’étape. Le code s’exécute sans erreur. Quel point de relecture est le plus important ?
  15. Question 15Trouve le bugTrouve la faille dans ce code généré par IA. Pour l’objectif quotidien, l’IA a fait signaler chaque pièce ramassée par le client.
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ServerScriptService = game:GetService("ServerScriptService")
    local DonneesJoueurs = require(ServerScriptService:WaitForChild("DonneesJoueurs"))
    local ObjectifsQuotidiens = require(ServerScriptService:WaitForChild("ObjectifsQuotidiens"))
    local pieceRamassee = ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("PieceRamassee") :: RemoteEvent
    
    -- Le LocalScript des pièces appelle pieceRamassee:FireServer() à chaque contact
    pieceRamassee.OnServerEvent:Connect(function(player: Player)
    	local donnees = DonneesJoueurs.Obtenir(player)
    	local stats = player:FindFirstChild("leaderstats")
    	local pieces = stats and stats:FindFirstChild("Pieces")
    	if donnees and pieces and pieces:IsA("IntValue") then
    		pieces.Value += 1 + ObjectifsQuotidiens.enregistrerPiece(donnees)
    	end
    end)

← Retour au module 06