Catégories
Jeu vidéo ROBLOX

Apprendre Lua sur Roblox – 10 scénarios simples

Voici les 10 mini-projets interactifs ! Cliquez sur les défi01 à défi10 pour naviguer entre les projets.

Chaque fiche contient :

  • la description du jeu, les règles,
  • les compétences Lua acquises,
  • un QCM de 5 questions

La progression suit une logique pédagogique :

  • défi01 à défi03 : bases Roblox (Parts, inputs, GUI)
  • défi04 à défi06 : communication réseau, physique, effets visuels
  • défi07 à défi09 : animations, interactions avancées, données persistantes
  • défi10 : projet complet qui réutilise tout, avec architecture modulaire

Défi 01 : La Zone Mortelle

Description

Une arène parsemée de briques rouges mortelles. Le joueur doit traverser un espace sans toucher les parts mortels. Au contact d’un part mortel, son personnage meurt instantanément (Humanoid.Health = 0). Des zones sûres (parts verts) permettent de souffler avant d’atteindre une zone or.

Optimise son jeu pour avoir un minimum de script.

Règles du jeu

Rejoignez l’arène. Atteignez la brique dorée à l’autre bout sans toucher les zones rouges. Chaque mort vous remet au départ. Pas de limite de tentatives.

Compétences acquises

  • Touched Event
  • Humanoid.Health
  • BasePart properties
  • Script vs Local
  • ScriptInstance.Name
  • for _ , part in ipair(parts:GetChildren())
  • Reconnaître un Humanoid
  • Gérer les collisions

QCM — Testez vos connaissances

1. Quel événement Roblox détecte le contact avec une part ?

  • OnTouch
  • Touched
  • Hit
  • Collide

2. Pour tuer un personnage, on modifie quelle propriété du Humanoid ?

  • MaxHealth
  • WalkSpeed
  • Health
  • Jump

3. Où place-t-on un Script qui affecte le serveur ?

  • StarterGui
  • ReplicatedStorage
  • ServerScriptService
  • LocalScript

4. Comment récupérer le Humanoid d’un personnage touché ?

  • hit.Humanoid
  • hit.Parent:FindFirstChild(‘Humanoid’)
  • game.Players.Humanoid
  • workspace.Humanoid

5. Quelle propriété rend une Part non-solide mais visible ?

  • Transparency = 0
  • CanCollide = false
  • Anchored = true
  • Locked = true

Défi 02 : Speed Runner

Touches clavier & compétences joueur

Description

Un couloir d’obstacles où le joueur peut débloquer des compétences en appuyant sur des touches. Appuyez sur [E] pour activer un boost de vitesse temporaire, [Q] pour sauter plus haut, [R] pour un double saut. Les compétences ont un cooldown visible.

Règles du jeu

Parcourez le couloir le plus vite possible. Utilisez vos touches de compétences au bon moment. Franchissez la ligne d’arrivée. Votre temps est affiché.

Compétences acquises

  • UserInputService
  • ContextAction
  • ServiceHumanoid.WalkSpeed
  • Humanoid.Jump
  • Powercooldown avec tick()

QCM — Testez vos connaissances

  1. Quel service Roblox gère les entrées clavier côté client ?
  • InputServiceUser
  • InputService
  • KeyboardService
  • ContextService

2. Dans quel type de script utilise-t-on UserInputService ?

  • ScriptModule
  • ScriptLocal
  • ScriptServer
  • Script

3. Comment détecter l’appui sur la touche E ?

  • Enum.KeyCode.E
  • Key.E
  • Input.E
  • Keyboard.E

4. Quelle propriété du Humanoid contrôle la vitesse de marche ?

  • Speed
  • RunSpeed
  • WalkSpeed
  • MoveSpeed

5. tick() retourne quoi en Lua Roblox ?

  • Le tick d’horloge en ms
  • Le temps en secondes depuis le lancement
  • Le framerate actuel
  • Le temps depuis le début de la partie

Défi 03 : Le Magasin de Pouvoirs

GUI & ScreenGui

Description

Un magasin en jeu affiché via un ScreenGui. Le joueur ouvre l’interface avec [G] et voit une liste de pouvoirs à acheter (vitesse, saut, bouclier). Chaque pouvoir a un prix en pièces d’or ramassées dans le monde. L’achat est confirmé par un bouton.

Règles du jeu

Collectez des pièces d’or dans la carte. Appuyez sur [G] pour ouvrir la boutique. Achetez des pouvoirs avec vos pièces. Activez vos pouvoirs via les touches attribuées.

Compétences acquises

  • ScreenGui & Frame
  • TextButton.MouseButton1Click
  • RemoteEvent (achat)
  • leaderstats basiques
  • Visible toggle

QCM — Testez vos connaissances

  1. Où place-t-on un ScreenGui pour qu’il s’affiche à tous les joueurs ?
  • Workspace
  • StarterGui
  • ReplicatedStorage
  • ServerStorage

2. Quel événement déclenche un clic sur un TextButton ?

  • MouseButton1Click
  • Clicked
  • OnClick
  • Activated

3. Comment rendre une Frame invisible via Script ?

  • Frame.Hide()
  • Frame.Enabled = false
  • Frame.Visible = false
  • Frame.Alpha = 0

4. Un RemoteEvent sert à quoi ?

  • Communiquer entre LocalScript et Script serveur
  • Créer des GUI
  • Détecter les touches
  • Gérer les collisions

5. Pour déclencher un RemoteEvent depuis le client vers le serveur, on utilise ?

  • RemoteEvent:FireServer()
  • RemoteEvent:FireClient()
  • RemoteEvent:Send()
  • RemoteEvent:Trigger()

Défi 04 : La Porte Télékinésique

RemoteEvents & communication Client/Sserveur

Description

Des portes et pièges contrôlés en réseau. Quand un joueur marche sur un bouton (Part), un RemoteEvent notifie le serveur qui ouvre la porte correspondante pour TOUS les joueurs. Des pièges s’activent de même en temps réel.

Règles du jeu

Explorez la carte coopérativement. Trouvez les boutons cachés qui ouvrent des portes. Un joueur peut sacrifier sa position pour ouvrir le chemin à ses coéquipiers. Atteignez la sortie ensemble.

Compétences acquises

  • RemoteEvent:FireServer
  • RemoteEvent:FireClient
  • RemoteEvent.OnServerEvent
  • ReplicatedStorage
  • synchronisation multi-joueurs

QCM — Testez vos connaissances

1. Où stocke-t-on les RemoteEvents accessibles client ET serveur ?

  • ServerStorage
  • ServerScript
  • ServiceReplicated
  • StorageStarterGui

2. OnServerEvent est connecté dans quel type de script ?

  • LocalScript
  • Script (serveur)
  • ModuleScript
  • PluginScript

3. FireClient() envoie un event à ?

  • Tous les joueurs
  • Un joueur spécifique
  • Le serveur
  • Le workspace

4. FireAllClients() envoie à ?

  • Un joueur
  • Le serveur uniquement
  • Tous les clients connectés
  • Les NPC seulement

5. Quel est le premier paramètre reçu par OnServerEvent ?

  • Les données envoyées
  • Le joueur (Player) émetteur
  • Le nom du Remote
  • Eventnil

Défi 05 : Les Plateformes Mobiles

Mouvement de Parts via Script

Description

Des plateformes qui se déplacent selon des trajectoires (haut/bas, gauche/droite, circulaire). Certaines accélèrent, d’autres s’arrêtent selon des conditions (joueur dessus, timer). Utilisez RunService ou des boucles pour animer les positions.

Règles du jeu

Sautez de plateforme en plateforme pour atteindre la tour centrale. Les plateformes bougent en continu. Certaines disparaissent après 3 secondes de contact. Atteignez le sommet.

Compétences acquises

  • CFrame et Vector3
  • RunService.Heartbeat
  • while true do / wait()
  • math.sin() pour oscillation
  • Anchored vs non-Anchored

1. Quelle propriété utilise-t-on pour déplacer une Part sans physique ?

  • Position seule
  • CFrame
  • Velocity
  • MoveDirection

2. RunService.Heartbeat s’exécute à quelle fréquence ?

  • 1 fois/seconde
  • Chaque frame (~60fps)
  • 10 fois/seconde
  • À la demande

3. math.sin() est utile pour créer quel type de mouvement ?

  • Téléportation
  • Mouvement linéaire
  • Oscillation fluide
  • Rotation fixe

4. Une part Anchored peut-elle être déplacée par CFrame ?

  • Non, elle est immobile
  • Oui, le script peut changer son CFrame
  • Seulement par les joueurs
  • Seulement via TweenService

5. Vector3.new(0, 5, 0) représente quoi ?

  • Un déplacement de 5 studs vers le bas
  • Un déplacement de 5 studs vers le haut
  • Une rotation de 5 degré
  • sUne mise à l’échelle de 5

Défi 06 : L’Atelier des Effets

ParticleEmitter & effets visuels

Description

Un laboratoire où le joueur active différents effets visuels : feu, fumée, étincelles, traînées de lumière. Des zones déclenchent des effets via Touched. Le joueur peut ramasser un ‘orbe de feu’ qui attache un effet de flamme à son personnage.

Règles du jeu

Explorez le laboratoire et touchez les zones d’activation. Ramassez des orbes pour équiper des effets sur votre personnage. Certains effets boostent vos stats en plus d’être visuels.

Compétences acquises

  • ParticleEmitter
  • Fire & Smoke objects
  • Attachment points
  • Enabled toggle
  • PointLight & SpotLight

1. Où attache-t-on un ParticleEmitter dans un modèle 3D ?

  • Directement dans Workspace
  • Dans un Attachment ou une Part
  • Dans StarterGui
  • Dans ServerStorage

2. Comment activer/désactiver un ParticleEmitter ?

  • ParticleEmitter.Start()
  • ParticleEmitter.Enabled = true/false
  • ParticleEmitter.Visible = true/false
  • ParticleEmitter.Rate = 0

3. L’objet Fire de Roblox simule quoi ?

  • Un effet de lumière uniquement
  • Des flammes visuelles directement sur une Part
  • Un dégât de brûlure
  • Une explosion

4. Un PointLight émet la lumière dans quelle direction ?

  • Devant la Part
  • Dans toutes les directions
  • Vers le haut uniquement
  • Vers le bas uniquement

5. La propriété Rate d’un ParticleEmitter contrôle quoi ?

  • La taille des particules
  • La couleur
  • Le nombre de particules émises par seconde
  • La durée de vie du ParticleEmitter

Défi 07 : L’Ascenseur Magique

TweenService & animations fluides

Description

Des ascenseurs, portes coulissantes et objets animés avec TweenService. Les transitions sont fluides grâce aux EasingStyle. Un boss oscille sur place avec un Tween en boucle. Des récompenses s’animent quand ramassées (scale up/down).

Règles du jeu

Utilisez les ascenseurs pour monter les étages. Chaque étage déverrouille une porte animée. Ramassez les cristaux (avec animation) pour gagner des points. Atteignez le dernier étage.

Compétences acquises

  • TweenService:Create()
  • TweenInfoEasing
  • Style & Easing
  • DirectionTween:Play() / Pause() / Cancel()
  • Tween.Completed event

1. Quel service Roblox gère les transitions animées ?

  • AnimationService
  • TweenService
  • RunService
  • PhysicsService

2. TweenInfo.new() prend quoi comme premier paramètre ?

  • EasingStyle
  • La durée en secondes
  • L’objet à animer
  • Le nombre de répétitions

3. EasingStyle.Bounce donne quel effet ?

  • Mouvement linéaire
  • Rebond à la fin de l’animation
  • Accélération progressive
  • Pause au milieu

4. Comment déclencher quelque chose APRÈS la fin d’un Tween ?

  • Tween.OnComplete()
  • Tween.Completed:Wait()
  • wait(tween.duration)
  • TweenService.OnDone()

5. Peut-on tweener la couleur (Color3) d’une Part ?

  • Non, seulement la position
  • Oui, Color3 est une propriété tweénable
  • Seulement via ParticleEmitter
  • Seulement avec des scripts serveur

Défi 08 : Le Marchand & Le Détective

ProximityPrompt & ClickDetector

Description

Des PNJ (statues) équipés de ProximityPrompts affichent un menu de dialogue et de commerce quand on s’approche. Des objets dans le décor ont des ClickDetectors qui révèlent des indices. Un coffre s’ouvre au clic après avoir collecté tous les indices.

Règles du jeu

Approchez-vous des PNJ pour interagir. Cliquez sur les éléments suspects pour trouver les 5 indices. Apportez les indices au bon PNJ pour ouvrir le coffre au trésor.

Compétences acquises

  • ProximityPrompt.TriggeredClick
  • Detector.MouseClick
  • distance d’interaction
  • GUI contextuel
  • état de jeu (indices trouvés)

1. ProximityPrompt.Triggered est écouté depuis quel script ?

  • Uniquement LocalScript
  • Script serveur uniquement
  • Les deux sont possibles
  • ModuleScript seulement

2. Quelle propriété définit la distance d’activation d’un ProximityPrompt ?

  • RangeMax
  • ActivationDistance
  • TriggerRadius
  • ActivationDistance

3. ClickDetector.MouseClick passe quoi comme argument ?

  • La Part cliquée
  • Le Player qui a cliqué
  • Les coordonnées du clic
  • Nil

4. Comment afficher un texte personnalisé sur un ProximityPrompt ?

  • ProximityPrompt.Label
  • ProximityPrompt.Action
  • TextProximityPrompt.Text
  • ProximityPrompt.Title

5. Quelle est la différence principale entre ClickDetector et ProximityPrompt ?

  • Aucune différence
  • ClickDetector nécessite un clic, ProximityPrompt une touche en s’approchant
  • ProximityPrompt est plus ancien
  • ClickDetector fonctionne sans script

Défi 09 : Le Grand Tournoi

Leaderstats & tableau de score

Description

Un jeu de compétition avec un classement en temps réel (leaderstats). Points gagnés en touchant des zones, en éliminant des adversaires (PvP désactivable) ou en terminant des épreuves. Le score se met à jour pour tous via le tableau Roblox natif.

Règles du jeu

Accumulez des points en 5 minutes. Éliminez des adversaires (+10pts), touchez des zones (+5pts), finissez des épreuves bonus (+25pts). Le joueur avec le plus de points gagne.

Compétences acquises

  • leaderstats dans PlayerAdded
  • IntValue & StringValue
  • PlayerRemoving cleanup
  • tri et classement
  • DataStoreService (sauvegarde basique)

1. Comment créer les leaderstats d’un joueur ?

  • Directement dans Workspace
  • Folder nommé ‘leaderstats’ dans le Player
  • Dans ReplicatedStorage
  • Via un RemoteEvent

2. Quel événement se déclenche quand un joueur rejoint la partie ?

  • Players.PlayerJoined
  • Players.PlayerAdded
  • Players.New
  • PlayerPlayers.OnJoin

3. Quelle valeur utilise-t-on pour stocker un nombre entier dans leaderstats ?

  • NumberValue
  • IntValue
  • FloatValu
  • eStringValue

4. DataStoreService sert à quoi ?

  • Afficher le leaderboard
  • Persister des données entre les sessions
  • Communiquer entre scripts
  • Gérer les équipes

5. PlayerRemoving est utile pour ?

  • Accueillir le joueur
  • Sauvegarder les données avant que le joueur parte
  • Réinitialiser la map
  • Ajouter des points

Défi 10 : ROBLOX ADVENTURE COMPLETE

Jeu complet — tous les concepts

Description

Un jeu d’aventure complet qui intègre les 9 compétences précédentes : une carte avec zones mortelles (P1), des compétences débloquables (P2), une boutique GUI (P3), des events réseau (P4), des plateformes mobiles (P5), des effets visuels (P6), des animations TweenService (P7), des PNJ interactifs (P8) et un leaderboard complet (P9). Plusieurs niveaux, un boss final avec patterns d’attaque.

Règles du jeu

Traversez 3 zones distinctes (Forêt des Pièges, Tour des Pouvoirs, Donjon du Boss). Collectez des cristaux, achetez des améliorations, interagissez avec les PNJ, esquivez les obstacles animés. Battez le boss final et terminez premier au classement. Progression sauvegardée.

Compétences acquises

  • Architecture modulaire (ModuleScript)
  • Toutes les compétences P1-P9
  • Gestion d’état global
  • Équipes & rounds
  • Optimisation & bonnes pratiques

1. Un ModuleScript retourne quoi en général ?

  • Nil
  • Un tableau ou une fonction
  • Un RemoteEvent
  • Une GUI

2. Pour partager du code entre plusieurs scripts, on utilise ?

  • Copy-paste du code
  • ModuleScript + require()
  • RemoteEvent
  • Un Script dans Workspace

3. Quelle pratique évite les memory leaks avec les events ?

  • Utiliser task.wait()
  • Déconnecter les connexions avec :Disconnect()
  • Supprimer les RemoteEvents
  • Utiliser des LocalScripts uniquement

4. task.spawn() est préféré à coroutine.wrap() car ?

  • Il est plus lent
  • Il est intégré au scheduler Roblox et plus sûr
  • Il ne fonctionne qu’en serveur
  • Il bloque le thread principal

5. Dans une architecture propre, où stocke-t-on les ModuleScripts partagés ?

  • Workspace
  • StarterGui
  • ReplicatedStorage ou ServerScript
  • ServiceStarterPack

Répondez aux 5 question(s) restante(s)…