Module 06 · Leçon 2 sur 5
Les 60 premières secondes
Conçois un début de partie qui donne envie de rester, guide sans bloquer avec un faisceau et un indice minuté, et prépare la mesure de ce moment clé.
- ⏱️ 30 min
- 📝 Quiz de 6 questions
- 🔄 Vérifié le 24 octobre 2026
Sur cette page
- Pourquoi le début de partie est décisif
- Ce que l’onboarding doit accomplir
- Concevoir un onboarding sans mur de texte
- 1. Les éléments visuels
- 2. Les tutoriels contextuels
- 3. Les indices minutés
- Refondre le spawn de l’Obby des Nuages
- Coder un guide vers le prochain checkpoint
- Ajouter un indice minuté
- Mesurer ce moment (aperçu du module 9)
- Quiz de fin de leçon
🎯 Dans cette leçon, tu vas apprendre à…
- Comprendre pourquoi le début de partie est décisif sur Roblox
- Concevoir un onboarding par la pratique, sans mur de texte
- Guider le joueur vers le premier checkpoint avec un faisceau et un indice minuté
- Savoir comment ce moment sera mesuré au module 9
Sur Roblox, quitter un jeu prend une seconde, et des milliers d’autres jeux attendent à côté. Le début de partie est donc le moment où tu as le plus de chances… de perdre ton joueur. Dans cette leçon, tu vas repenser l’arrivée dans l’Obby des Nuages : ce que le joueur voit, ce qu’il fait, et comment l’aider sans l’ennuyer.
Pourquoi le début de partie est décisif
La documentation Roblox sur l’onboarding (l’accueil des nouveaux joueurs, aussi appelé FTUE pour first-time user experience) est très directe : les nouveaux joueurs décident généralement de leur intérêt pour un jeu en quelques minutes. La page « Design for Roblox » ajoute que, comme on rejoint et quitte les jeux très facilement, les FTUE qui amènent vite les joueurs au plaisir de jeu ont tendance à mieux marcher sur Roblox.
La page sur la rétention va plus loin. Elle conseille d’éviter un début complexe ou long, pour amener les joueurs au plaisir de jeu le plus vite possible, « idéalement en 5 minutes ou moins » après leur arrivée.
Ce que l’onboarding doit accomplir
Roblox résume le rôle de l’onboarding en trois idées :
- Enseigner l’essentiel : les contrôles et la core loop (leçon précédente). Le joueur doit comprendre ce qu’on attend de lui et pourquoi.
- Amener vite au plaisir : progression rapide, motivations sociales (collaborer, se comparer), objets ou monnaie de départ offerts.
- Donner envie de la suite : montrer des objectifs à court, moyen et long terme, et terminer l’onboarding par un moment de joie (récompense, animation, effet de célébration).
Concevoir un onboarding sans mur de texte
La documentation Roblox rappelle que beaucoup de jeunes joueurs ont du mal à lire des interfaces chargées de texte, et que la majorité des utilisateurs jouent sur un appareil mobile. Un pavé de règles à l’écran est donc la pire façon de commencer. Les techniques recommandées par Roblox sont visuelles et progressives.
1. Les éléments visuels
Une flèche qui rebondit, un objet qui brille, une traînée lumineuse qui mène à la destination, un panneau placé dans le champ de vision… Ces éléments sont temporaires : ils restent seulement le temps de faire passer leur message. Ils ont un autre avantage, souligné par la documentation : ils n’ont pas besoin de traduction pour être compris par un public mondial. Combinés aux remarques précédentes (jeunes joueurs, écrans de téléphone), c’est une raison de plus de préférer l’image au texte.
2. Les tutoriels contextuels
Aussi appelés tutoriels « juste à temps », ils se déclenchent pendant le jeu normal : en entrant dans une nouvelle zone, en ramassant un nouvel objet… Le joueur apprend en faisant, et on ne lui présente pas tout d’un coup. Dans l’Obby des Nuages, inutile d’expliquer la boutique au spawn : présente-la quand le joueur a assez de pièces pour acheter sa première traînée.
3. Les indices minutés
Un indice minuté n’apparaît qu’aux joueurs en difficulté, après un délai choisi. Ceux qui ont compris tout seuls ne sont jamais dérangés. La documentation prend un exemple : si la plupart des joueurs appuient sur un bouton en moins de 10 secondes pendant les playtests, on peut le mettre en évidence à 11 secondes pour aider les autres. Elle précise qu’un bon indice doit suffire en étant montré une seule fois.
Refondre le spawn de l’Obby des Nuages
Voici une checklist pour les premières secondes de notre fil rouge. Ce sont des choix de conception de la formation, appliqués à un obby à partir des conseils officiels ci-dessus (objectif visible, premier succès rapide, moment de joie, pas de mur de texte).
- Le joueur apparaît face au premier saut. Oriente la SpawnLocation (module 1) pour que la caméra regarde le parcours, pas un mur.
- Le premier checkpoint est visible depuis le spawn. C’est l’objectif clair et visible : le joueur sait où aller sans lire.
- Le premier saut est facile. Il apprend le contrôle (sauter) sans risque d’échec. La difficulté viendra plus tard (leçon suivante).
- Une pièce est placée sur le chemin du premier saut. Le joueur ramasse sa première récompense en quelques secondes, avec le message de feedback de la leçon précédente.
- Le premier checkpoint est célébré. Un son, des particules, le message « Étape 1 atteinte ! » : c’est le moment de joie qui conclut l’onboarding.
- Aucun menu à l’entrée. Pas d’écran de chargement maison ni de boutique qui s’ouvre toute seule. On joue d’abord.
Coder un guide vers le prochain checkpoint
Mettons en pratique la technique des éléments visuels. On va relier le personnage au prochain checkpoint par un Beam (un faisceau lumineux tendu entre deux points d’attache, les Attachments). Le guide n’apparaît que pendant les deux premières étapes : ensuite, le joueur a compris le principe et le faisceau disparaît.
On suppose ici que Etape vaut 0 tant qu’aucun checkpoint n’est atteint, et que les checkpoints sont des Parts nommées "1", "2"… dans Workspace.Checkpoints, comme dans tout le projet. Si ton jeu commence à 1, adapte le calcul de prochaine.
Crée un LocalScript nommé GuideCheckpoint dans StarterPlayer › StarterPlayerScripts et colle ce code. Dans ton projet Rojo, c’est le fichier src/StarterPlayer/StarterPlayerScripts/GuideCheckpoint.client.luau : tu peux aussi le faire écrire par Claude Code avec le prompt de l’encadré « Avec Claude Code » plus bas, puis le relire ligne par ligne avec les explications de cette section.
-- LocalScript « GuideCheckpoint » à placer dans StarterPlayer > StarterPlayerScripts
-- Affiche un faisceau entre le personnage et le prochain checkpoint,
-- seulement pendant les premières étapes (onboarding).
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local ETAPES_GUIDEES = 2 -- on guide vers les checkpoints 1 et 2, puis plus rien
local joueur = Players.LocalPlayer
local etape = joueur:WaitForChild("leaderstats"):WaitForChild("Etape") :: IntValue
local dossierCheckpoints = Workspace:WaitForChild("Checkpoints")
-- On garde la liste des objets créés pour pouvoir les supprimer
local elementsGuide: { Instance } = {}
local function retirerGuide()
for _, element in elementsGuide do
element:Destroy()
end
table.clear(elementsGuide)
end
local function placerGuide()
retirerGuide()
local prochaine = etape.Value + 1
if prochaine > ETAPES_GUIDEES then
return -- le joueur connaît le principe : on ne le guide plus
end
local personnage = joueur.Character
local racine = personnage and personnage:FindFirstChild("HumanoidRootPart")
-- Avec le streaming (module 10), un checkpoint lointain peut ne pas être encore chargé
local cible = dossierCheckpoints:FindFirstChild(tostring(prochaine))
if not (racine and cible and cible:IsA("BasePart")) then
return
end
-- Un point d'attache sur le joueur, un autre sur le checkpoint
local attacheJoueur = Instance.new("Attachment")
attacheJoueur.Parent = racine
local attacheCible = Instance.new("Attachment")
attacheCible.Parent = cible
-- Le faisceau lui-même, visible uniquement par ce joueur (créé côté client)
local faisceau = Instance.new("Beam")
faisceau.Attachment0 = attacheJoueur
faisceau.Attachment1 = attacheCible
faisceau.FaceCamera = true
faisceau.Width0 = 0.3
faisceau.Width1 = 0.3
faisceau.Color = ColorSequence.new(Color3.fromRGB(255, 220, 80))
faisceau.Parent = cible
table.insert(elementsGuide, attacheJoueur)
table.insert(elementsGuide, attacheCible)
table.insert(elementsGuide, faisceau)
end
-- Nouvelle étape atteinte : on vise le checkpoint suivant (ou on arrête de guider)
etape.Changed:Connect(placerGuide)
-- Réapparition du personnage : il faut recréer l'attache sur le nouveau corps
joueur.CharacterAdded:Connect(function(personnage)
personnage:WaitForChild("HumanoidRootPart")
placerGuide()
end)
-- Si le checkpoint visé arrive plus tard (chargement, streaming), on réessaie
dossierCheckpoints.ChildAdded:Connect(function(enfant)
if enfant.Name == tostring(etape.Value + 1) then
placerGuide()
end
end)
if joueur.Character then
placerGuide()
end
Pourquoi un LocalScript ? Parce que chaque joueur a son propre prochain checkpoint. Créé côté client, le faisceau n’est visible que par lui (module 4) : les autres joueurs ne voient pas une forêt de rayons dorés.
Ajouter un indice minuté
Le faisceau aide tout le monde. L’indice minuté, lui, ne s’adresse qu’au joueur qui n’a toujours pas atteint le premier checkpoint après un certain temps. Crée pour lui un second LocalScript, nommé IndiceDepart, au même endroit (StarterPlayerScripts) :
-- LocalScript « IndiceDepart » à placer dans StarterPlayer > StarterPlayerScripts
-- Indice minuté : n'apparaît que si le joueur n'a pas atteint le checkpoint 1 à temps.
local Players = game:GetService("Players")
local DELAI_INDICE = 15 -- en secondes : à régler grâce à tes playtests (leçon 5)
local joueur = Players.LocalPlayer
local etape = joueur:WaitForChild("leaderstats"):WaitForChild("Etape") :: IntValue
local ecran = Instance.new("ScreenGui")
ecran.Name = "IndiceDepart"
ecran.ResetOnSpawn = false
ecran.Parent = joueur:WaitForChild("PlayerGui")
local indice = Instance.new("TextLabel")
indice.AnchorPoint = Vector2.new(0.5, 1)
indice.Position = UDim2.fromScale(0.5, 0.85)
indice.Size = UDim2.fromScale(0.6, 0.07)
indice.BackgroundTransparency = 0.3
indice.BackgroundColor3 = Color3.fromRGB(30, 30, 60)
indice.TextColor3 = Color3.new(1, 1, 1)
indice.TextScaled = true
indice.Text = "Suis le rayon doré et saute sur le premier nuage !"
indice.Visible = false
indice.Parent = ecran
task.delay(DELAI_INDICE, function()
-- Toujours à l'étape 0 : le joueur a besoin d'aide
if etape.Value == 0 then
indice.Visible = true
end
end)
-- Dès que le joueur progresse, l'indice disparaît pour de bon
etape.Changed:Connect(function(nouvelleEtape: number)
if nouvelleEtape >= 1 then
ecran:Destroy()
end
end)
L’indice est court, concret et ne bloque rien. Un joueur expérimenté qui atteint le checkpoint en cinq secondes ne le verra jamais.
Mesurer ce moment (aperçu du module 9)
Tes impressions ne suffisent pas : il faut des chiffres. Roblox propose deux outils que tu utiliseras plus tard.
- La rétention D1 (le lendemain) : selon la documentation, elle mesure combien de joueurs reviennent dans ton jeu un jour après leur première visite (D7 et D30 : 7 et 30 jours après). Roblox relie directement ce chiffre à la core loop, à la FTUE et aux performances.
- L’entonnoir d’onboarding (onboarding funnel) : avec
AnalyticsService, ton serveur enregistre chaque étape franchie (« Arrivé », « Premier saut », « Checkpoint 1 »…). La page Funnel du tableau de bord Analytics (Creator Hub) te montre ensuite à quelle étape les joueurs décrochent. Ces événements ne s’envoient que depuis le serveur et dans un jeu publié. On construira cet entonnoir étape par étape au module 9 (Instrumenter son jeu avec AnalyticsService).
La documentation conseille de lister les étapes de ta boucle, de suivre le taux de réussite de chacune et de corriger en priorité les plus grosses chutes. Elle mentionne aussi les Experiments (tests A/B), par exemple pour comparer un dialogue plus court et une flèche de guidage. Mais attention : au moment de la rédaction (octobre 2026), Roblox prévient que les jeux de moins de 1 000 utilisateurs actifs par jour risquent d’avoir du mal à obtenir des résultats utiles avec ces tests. Pour un premier jeu, les playtests de la leçon 5 seront bien plus parlants.
Ce qu’il faut retenir
- Les nouveaux joueurs décident « en quelques minutes » ; Roblox conseille d’amener au plaisir de jeu vite, idéalement en 5 minutes ou moins. Les 60 secondes sont notre objectif pour un obby.
- L’onboarding enseigne l’essentiel, amène vite au plaisir et se termine par un moment de joie.
- Trois techniques officielles : éléments visuels, tutoriels contextuels, indices minutés.
- Guide sans bloquer : objectif visible, premier saut facile, première pièce immédiate, aucun menu à l’entrée.
- La rétention D1 et l’entonnoir d’onboarding (module 9) diront si ton début de partie fonctionne.
Sources et pour aller plus loin
- Onboarding — documentation Roblox
- Onboarding techniques — éléments visuels, tutoriels contextuels, indices minutés (Roblox)
- Design for Roblox — spécificités de la plateforme (Roblox)
- Retention — rétention D1 et FTUE (Roblox)
- Funnel events — entonnoirs d’onboarding (Roblox)
- Experiments — tests A/B (Roblox)
- Beam — référence de l’API (Roblox)