Roblox pour les développeurs Unreal

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Cette page contient des informations pour aider les développeurs expérimentés d'Unreal Engine à commencer avec Roblox, y compris une orientation de base, une comparaison conceptuelle et des différences clés entre les deux plateformes.

S'orienter

L'interface utilisateur de l'éditeur Unreal avec une annotation montrant les différentes fenêtres et panneaux. L'interface utilisateur de Roblox Studio avec une annotation montrant les différentes fenêtres et panneaux.

L'Outliner d'Unreal et l'Explorer de Roblox Studio sont les fenêtres principales pour organiser les éléments dans des espaces 3D. Les deux affichent une hiérarchie d'objets et de dossiers. Cependant, l'Outliner a une structure plus plate et moins définie et ne montre que les Actors. La fenêtre Explorer a une structure rigide très imbriquée et affiche tous les objets dans la hiérarchie, même les objets qui seraient considérés comme des composants dans Unreal.

Le Gestionnaire d'Assets de Roblox Studio et la Boîte à Outils se chevauchent avec le Content Browser d'Unreal. Le Gestionnaire d'Assets vous permet de gérer tous les assets dans votre jeu, tandis que la Boîte à Outils vous permet d'accéder à tous les assets que vous avez publiés. La Boîte à Outils vous permet également de rechercher dans le Creator Store les assets de Roblox ou de la communauté, similaire au Marketplace d'Unreal mais accessible directement depuis l'interface utilisateur de Studio.

Différences philosophiques

Roblox est un "moteur de simulation" plutôt qu'un moteur de jeu traditionnel. Les Actors d'Unreal et les Parts de Roblox servent tous deux de blocs de construction fondamentaux, mais dans la pratique, les deux sont assez différents :

  • Représentation : Les Actors dans Unreal sont un concept de niveau supérieur pour tout objet dans un niveau, tandis que les Parts dans Roblox sont conçus pour représenter des objets physiques comme des blocs en bois et des sphères en plastique.
  • Physique : Pour effectuer des simulations physiques dans Unreal, vous activez la physique dans certains composants (comme le StaticMeshComponent) ou en ajoutant des composants aux Actors, tels que des contraintes physiques. Dans Roblox, la physique est intégrée dans le type de données Parts; le moteur gère les interactions automatiquement.

Vous pouvez voir la différence immédiatement si vous créez un Actor et un Part. L'Actor n'a guère plus qu'une position, une rotation et une échelle. Le Part a les mêmes informations, plus un matériau et une couleur, des valeurs pour la réflexion et la transparence, la masse et la forme, et bien plus encore. Les deux commencent seulement à partager des propriétés similaires lorsque vous comparez un StaticMeshActor dans Unreal à un MeshPart dans Roblox.

Un exemple d'actor Unreal dans le panneau Détails.
Panneau Détails de l'éditeur Unreal
Un exemple de partie Roblox dans la fenêtre Propriétés.
Fenêtre Propriétés de Roblox Studio

Une autre comparaison utile est celle de l'Actor Unreal au Model de Roblox. Les modèles agissent comme un conteneur pour une collection de parties interconnectées de la même manière que les Actors dans Unreal sont des conteneurs pour des composants. Vous spécifiez une des parties du modèle comme sa partie principale pour définir le point de pivot. Les modèles contiennent également des scripts, des animations, des effets sonores, des invites, des contraintes, des émetteurs de particules, et plus encore.

Par exemple, un Actor Unreal pourrait avoir un NiagaraComponent qui utilise plusieurs émetteurs pour obtenir l'effet visuel désiré, un maillage pour la forme, une contrainte de physique pour ajouter de l'élasticité, et un script pour l'interactivité avec le joueur. Dans l'Outliner, vous voyez un seul Actor nommé SpringyFireball.

Dans Roblox, un modèle SpringyFireball comparable dans la fenêtre Explorer pourrait ressembler à ceci :


Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

La philosophie de la physique par défaut de Roblox s'étend au processus de création de modèles 3D. Dans Roblox, souder plusieurs parties ensemble dans un assemblage est un excellent moyen de construire rapidement des choses, car Roblox considère les parties soudées comme un seul corps rigide. Cette approche n'est pas pratique dans Unreal.

Plutôt que d'utiliser des unités métriques standard pour la longueur et la masse, Roblox utilise des unités notionnelles appelées studs et Roblox Mass Units (RMUs). Pour des conversions approximatives en unités métriques et des recommandations concernant l'utilisation, voir Units.

L'emplacement est important

Les jeux Roblox sont multijoueurs par défaut, donc Roblox Studio inclut de nombreux emplacements de stockage différents avec des comportements spécifiques. Pour plus d'informations, voir runtime client-serveur et organisation des objets.

LocationDescription
WorkspaceReprésente le monde 3D du jeu. Cet emplacement fonctionne bien pour les scripts serveurs qui se connectent directement à des objets et contrôlent leur comportement.
ReplicatedFirstContient des objets qui se répliquent vers le client avant tout autre. Cet emplacement est idéal pour l'ensemble minimum absolu d'objets et de scripts clients nécessaires pour afficher un écran de chargement.
ReplicatedStorageContient des objets qui sont répliqués à la fois vers le client et vers le serveur. Cet emplacement est idéal pour les ModuleScripts que vous souhaitez utiliser à la fois sur le serveur et sur le client. Les LocalScripts ne s'exécutent pas depuis cet emplacement, mais les Scripts avec un RunContext de Client le font.
ServerScriptServiceContient des scripts serveurs. Cet emplacement est idéal pour les scripts qui ont besoin d'accéder à des fonctionnalités ou des objets côté serveur, tels que la logique de jeu et le stockage dans le cloud.
ServerStorageContient des objets côté serveur. Cet emplacement est idéal pour les objets volumineux qui n'ont pas besoin d'être immédiatement répliqués aux clients lorsqu'ils rejoignent un jeu. Les scripts ne s'exécutent pas depuis cet emplacement, mais vous pouvez y stocker des ModuleScripts côté serveur.
StarterPlayerStarterCharacterScriptsContient des LocalScripts qui s'exécutent lorsque le personnage apparaît.
StarterPlayerStarterPlayerScriptsContient des LocalScripts à usage général qui s'exécutent lorsque le joueur rejoint le jeu.
StarterGuiContient des éléments GUI que le client affiche lorsqu'il charge le jeu. Les LocalScripts peuvent s'exécuter depuis cet emplacement. Cet emplacement est idéal pour les scripts qui modifient l'interface utilisateur du jeu, comme l'ajout de boutons, de menus et de pop-ups.
StarterPackContient généralement uniquement des Tools, mais peut également inclure des LocalScripts pour configurer les sacs à dos des joueurs.

Scripting

Roblox games support three different types of Luau scripts:

  • Scripts client

    Ces scripts s'exécutent sur le client, et le serveur n'a aucune visibilité sur leur comportement. Pour des raisons de compatibilité, ces scripts peuvent prendre la forme de LocalScripts ou Scripts avec une valeur de RunContext de Client. Les scripts client se trouvent généralement dans ReplicatedStorage, StarterPlayerScripts ou StarterCharacterScripts.

  • Scripts serveur

    Ces scripts s'exécutent sur le serveur, et le client n'a aucune visibilité sur leur comportement. Les scripts serveur ont une valeur de RunContext de Server et se trouvent généralement dans ServerScriptService, dont le contenu n'est pas répliqué au client.

  • Scripts de module

    Ces scripts sont des morceaux de code réutilisables qui renvoient exactement une valeur, généralement une fonction ou une table (ou une table de fonctions). Plutôt que de dupliquer le code dans les scripts client et serveur, utilisez des scripts de module pour partager le code et les données entre les deux. Les scripts de module se trouvent souvent dans ReplicatedStorage, mais peuvent se trouver ailleurs si vous souhaitez partager du code entre les scripts du même côté de la frontière client-serveur.

Unreal n'a pas le concept de différents types de scripts. Si vous choisissez de créer un jeu multijoueur, vous écrivez un code supplémentaire pour synchroniser l'état du jeu entre le serveur et les clients.

Dans Unreal, une grande partie de la fonctionnalité du moteur est disponible en étendant des classes intégrées comme UObject, ACharacters, ULevel, et UWorld en C++ ou Blueprint. Unreal prend en charge les événements personnalisés, mais de nombreuses classes incluent des événements que le moteur invoque automatiquement dans le cadre du cycle de vie naturel du niveau.

Comparé au système de "tick" d'Unreal, les scripts Roblox sont beaucoup plus axés sur les événements. Vous accédez à des fonctionnalités similaires du moteur en vous abonnissant à des services et en écoutant les mises à jour.

C++ et Luau

Pour le scripting, Unreal utilise C++. Roblox utilise Luau, un langage de script dérivé de Lua 5.1.

Comparé à Luau, C++ a un avantage de performance global, qui pourrait ou non être pertinent pour les types de jeux que vous souhaitez créer. Luau est typé graduellement et a une syntaxe moins verbeuse. Dans des projets plus importants, cependant, le typage graduel peut introduire des catégories de bogues que les langages fortement typés comme C++ évitent, donc envisagez d'activer la vérification de type stricte dans les scripts Roblox.

Unreal comprend également un système de script visuel appelé Blueprints. Roblox a des plugins tiers qui offrent une fonctionnalité similaire, mais aucun système comparé intégré.

Exemple de code Luau

Le code Luau suivant démontre comment, après qu'un joueur a équipé une canne à pêche, écouter l'entrée utilisateur (dans ce cas, la touche E) et appeler des fonctions supplémentaires :


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Obtenir un script de module depuis ReplicatedStorage qui renvoie une seule fonction
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Supposons que ce script est un enfant de la canne à pêche
local fishingPole = script.Parent
local ACTION_CAST = "Lancer"
-- Vérifie que la touche est enfoncée, puis appelle une autre fonction
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- N'activer l'action que lorsque le joueur équipe la canne à pêche
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Désactiver l'action lorsque le joueur déséquilibre la canne à pêche
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Le script Roblox peut être relativement concis parce que Roblox a de nombreuses hypothèses intégrées : un Player avec un personnage Humanoid connecté au serveur et peut équiper des Tools. Ces hypothèses n'existent pas dans Unreal, donc l'implémentation serait très différente.

Assets

Unreal et Roblox prennent tous deux en charge l'importation de maillages et de modèles personnalisés au format .fbx. Certains types d'assets peuvent nécessiter des configurations et des paramètres d'exportation spécifiques dans votre logiciel de modélisation tiers. Pour plus d'informations, voir les pages suivantes :

Dans Unreal, les assets sont importés dans votre répertoire Content, visible dans le Content Browser. Dans Roblox, les assets sont importés dans votre Workspace et dans la Boîte à Outils ou le Gestionnaire d'Assets.

Roblox propose également un plugin Blender open-source pour rationaliser le processus d'importation, similaire à la fonctionnalité Send to Unreal des outils Blender.

Transformations

Les transformations de Unreal Engine et les CFrames de Roblox servent des objectifs similaires dans la représentation des transformations 3D des objets :

  • Les transformations et les CFrames représentent tous deux la position et la rotation d'un objet dans l'espace 3D. Les transformations incluent l'échelle, tandis que Roblox utilise une propriété BasePart.Size qui ne fait pas partie du CFrame.
  • Les deux prennent en charge la multiplication pour des transformations complexes et ont des méthodes intégrées pour d'autres manipulations.

Collaboration

Dans Unreal, vous collaborez avec des systèmes de contrôle de version comme Perforce ou SVN, généralement à travers l'interface utilisateur intégrée d'Unreal. Ces systèmes de contrôle de version utilisent le modèle centralisé de "checkout" qui verrouille les fichiers pendant qu'une personne travaille dessus.

Les fichiers Roblox vivent dans le cloud (bien que vous puissiez exporter des copies), donc Roblox Studio fournit des flux de travail de collaboration intégrés pour l'édition simultanée, la gestion de groupe, les autorisations, la rédaction de scripts, et plus encore. Voir Collaboration.

Plugins

Comme Unreal, Roblox Studio prend en charge les plugins, qui peuvent simplifier ou vous donner un contrôle supplémentaire sur divers aspects du processus de développement. Les plugins sont disponibles dans le Creator Store, tout comme les assets, beaucoup étant gratuits.

Glossaire

UnrealRobloxNotes
LevelPlace
ActorPart ou ModelVoir Différences philosophiques.
Blueprint ClassPackage
TransformCFrameCFrame n'inclut pas d'informations sur l'échelle. Voir Transformations.
OutlinerExplorer
Details panelProperties
Level Viewport3D viewport
Content BrowserAsset Manager ou Toolbox
Landscape ModeTerrain Editor
PlayerStartSpawnLocation
Output LogOutput
MarketplaceCreator Store
Menu barToolbar
PluginPlugin
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.