← Retour LearnBloxLearnBlox

Organiser son code proprement

Guide intermédiaire

Un jeu Roblox qui grandit finit toujours par avoir le même problème : dix Scripts différents qui font presque la même chose, une fonction copiée-collée à cinq endroits, et personne (même toi, trois semaines plus tard) qui sait où modifier quoi.

La solution s'appelle ModuleScript : un fichier qui contient du code réutilisable, importé par n'importe quel autre script. C'est la brique qui transforme un projet en bazar en un projet propre.

📁 Où placer quoi
EmplacementType de scriptRôle
ServerScriptServiceScriptLogique serveur (argent, sauvegarde, sécurité)
StarterPlayerScriptsLocalScriptLogique client (caméra, interface, contrôles)
ReplicatedStorageModuleScriptCode partagé serveur + client
ServerStorageModuleScriptCode partagé serveur uniquement (invisible au client)
📦 Créer un ModuleScript
-- ModuleScript nommé "Utilitaires" dans ReplicatedStorage
local Utilitaires = {}

function Utilitaires.formaterArgent(montant)
    return "$" .. tostring(montant)
end

function Utilitaires.estAdulte(age)
    return age >= 18
end

return Utilitaires -- indispensable : c'est ce qui rend le module utilisable ailleurs
⚠️ Sans le return final, ton ModuleScript ne renvoie rien et tout autre script recevra une table vide en l'important.
📥 Utiliser un ModuleScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Utilitaires = require(ReplicatedStorage.Utilitaires)

local texte = Utilitaires.formaterArgent(150)
print(texte) -- "$150"
💡 require ne charge le module qu'une seule fois, même appelé depuis plusieurs scripts différents — le code s'exécute une fois, le résultat est partagé.
🗂️ Un exemple de structure de projet

Pour un jeu de taille moyenne, une organisation qui tient dans le temps :

  • ReplicatedStorage/Modules/Config — constantes du jeu (prix, vitesses, durées)
  • ReplicatedStorage/Modules/Utilitaires — fonctions génériques réutilisées partout
  • ServerScriptService/Systemes/Boutique — logique métier d'un système précis
  • ServerScriptService/Main — un seul Script court qui démarre tout le reste
✅ Bonnes pratiques & erreurs fréquentes
  • Une fonction dupliquée à deux endroits devrait presque toujours devenir un ModuleScript partagé — sinon un correctif appliqué à une copie sera oublié dans l'autre.
  • Nomme tes fonctions par ce qu'elles font : calculerDegats plutôt que fonction2. Toi (et Bloxi) vous relirez ce code dans un mois.
  • Un ModuleScript par responsabilité (boutique, combat, inventaire) plutôt qu'un seul fichier de 2000 lignes — plus simple à retrouver et à faire évoluer.
  • Ne mets jamais de logique serveur sensible (vérification d'achat, calcul d'argent) dans un ModuleScript accessible depuis ReplicatedStorage : le client peut lire son code.

Va plus loin : Fonctions & Tables

Ce guide s'appuie sur des notions vues dans les modules Les Fonctions et Les Tables — la base pour écrire du code réutilisable et bien organisé.

Voir le module gratuitement →