Diese Seite enthält Informationen, die erfahrenen Unreal-Engine-Entwicklern helfen, mit Roblox zu beginnen: eine grundlegende Orientierung, einen konzeptionellen Vergleich und wichtige Unterschiede zwischen den beiden Plattformen.
Orientieren Sie sich
Unreal's Outliner und Roblox Studio's Explorer sind die primären Fenster für die Organisation von Elementen in 3D-Räumen.Beide zeigen eine Hierarchie von Objekten und Ordnern an.Outliner hat jedoch eine flachere, weniger definierte Struktur und zeigt nur Actors .Das Explorer-Fenster hat eine tief verschachtelte, strenge Struktur und zeigt alle Objekte als Teil der Hierarchie an, auch Objekte, die in Unreal als Komponenten betrachtet werden.
Der Roblox Studio Asset-Manager und Toolbox überlappen sich mit dem Unreal Content Browser.Der Asset-Manager lässt dich alle Assets innerhalb deiner Erlebnisverwalten, während die Toolbox dir den Zugriff auf alle veröffentlichten Assets ermöglicht.Die Toolbox lässt dich auch den Creator-Store nach Assets von Roblox oder der Community durchsuchen.Der Creator-Store ist ähnlich wie der Unreal Engine Marktplatz, aber du kannst ihn direkt über die Studio-Benutzeroberfläche aufrufen.
Philosophische Unterschiede
Roblox ist eine "SimulationsEngine" und nicht eine traditionelle SpielEngine.Unreal Actors und Roblox Parts dienen beide als grundlegende Bausteine, aber in der Praxis sind die beiden ziemlich unterschiedlich:
- Repräsentation : Actors in Unreal sind ein höheres Konzept für jedes Objekt auf einer Stufe, während Parts in Roblox entwickelt wurden, um physische Objekte wie Holzblöcke und Plastiksphären zu repräsentieren.
- Physik : Um Physiksimulationen in Unreal durchzuführen, aktivierst du Physik innerhalb bestimmter Komponenten (z. B. StaticMeshComponent ) oder indem du Komponenten zu Actors hinzufügst, wie z. B. physikalische Einschränkungen.In Roblox sind Physik in den Parts Daten eingebenintegriert; die Engine verwaltet Interaktionen automatisch.
Du kannst den Unterschied sofort sehen, wenn du ein Actor und ein Part erstellst.Die Actor hat weniger als ein Ort, eine Rotation und eine Skalierung.Die Part hat die gleiche Information - plus ein Material und eine Farbe, Werte für Reflexion und Transparenz, Masse und Form und vieles mehr.Die beiden beginnen erst dann, ähnliche Eigenschaften zu teilen, wenn du ein StaticMeshActor in Unreal vergleichst (z. B.ein Würfel) zu einem MeshPart in Roblox.


Ein weiterer nützlicher Vergleich ist die Unreal Actor zu der Roblox Model.Modelle fungieren als Container für eine Sammlung von miteinander verbundenen Teilen auf die gleiche Weise, wie Actors in Unreal sind Container für Komponenten.Du gibst eines der Teile des Modells als seine primäre Teile an, um den Drehpunkt zu definieren.Modelle enthalten auch Skripte, Animationen, Soundeffekte, Eingabeaufforderungen, Einschränkungen, Partikelstrahler und mehr.
Zum Beispiel könnte ein Unreal Actor einen NiagraComponent haben, der mehrere Emitter verwendet, um die gewünschte visuelle Wirkung zu erzielen, ein Netz für die Form, eine physikalische Einschränkung, um Springigkeit hinzuzufügen, und ein Skript für die Interaktivität des Spielers.Im Outliner siehst du einen einzelnen Actor mit dem Namen SpringyFireball.
In Roblox könnte ein vergleichbares SpringyFireball-Modell im Explorer-Fenster so aussehen:
Model|- ParticleEmitter|- MeshPart|- SpringConstraint|- ClickDetector| |- Script
Die Physik-Standard-Philosophie von Roblox erstreckt sich auf den Prozess des Aufbaus von 3D-Modellen.In Roblox ist das Schweißen mehrerer Teile zusammen in eine Montagemaschine ein ausgezeichneter Weg, um Dinge schnell zu bauen, weil Roblox die geschweißten Teile als einen einzigen steifen Körper behandelt.Dieser Ansatz ist in Unreal nicht praktisch.
Anstatt Standard-Metrik-Einheiten für Länge und Masse zu verwenden, verwendet Roblox notionale Einheiten namens Stollen und Roblox-Massen-Einheiten (RMUs).Für annähernde metrische Umwandlungen und Empfehlungen rund um die Verwendung siehe Einheiten.
Ortsangelegenheiten
Roblox-Erlebnisse sind standardmäßig Mehrspieler, sodass Roblox Studio viele verschiedene Speicherorte mit spezifischen Verhaltensweisen enthält.Zum Beispiel könnte ein Skript ausgeführt werden, wenn du es in ReplicatedStorage legst, aber nicht, wenn du es in StarterPlayerScripts legst.Weitere Informationen finden Sie unter Client-Server-Laufzeit und Objekt-Organisation.
Ort | Beschreibung :--- | :--- Arbeitsbereich | Vertreibt die Welt.Dieser Ort funktioniert gut für Server-Skripte, die direkt an Objekte anhängen und ihr Verhalten steuern.ReplicatedFirst | Enthält Objekte, die sich zuerst auf den Client replizieren, bevor irgendetwas anderes passiert.Dieser Ort ist ideal für das absolute Minimum an Objekten und Client-Skripten, die zum Anzeigen eines Ladebildschirms erforderlich sind.ReplicatedStorage | Enthält Objekte, die sowohl auf den Client als auch auf den Server repliziert werden.Dieser Ort ist ideal für Class.ModuleScript\|ModuleScripts, den Sie sowohl auf dem Server als auch auf dem Client verwenden möchten.Class.LocalScript\|LocalScripts laufe nicht von diesem Ort weg, aber Class.Script\|Scripts mit einem Laufkontext von Client tue es.ServerScriptService | Enthält Server-Skripte.Dieser Ort ist ideal für Skripte, die auf serverseitige Funktionalität oder Objekte zugreifen müssen, wie z. B. Spiellogik und Cloud-Speicher.ServerStorage | Enthält Server-seitige Objekte.Dieser Ort ist ideal für große Objekte, die nicht sofort auf Kunden repliziert werden müssen, wenn sie sich einem Erlebnis anschließen.Skripte laufen nicht von diesem Ort aus, aber du kannst die serverseitige Class.ModuleScript\|ModuleScripts hier speichern.StarterPlayer.StarterCharacterScripts | Enthält Class.LocalScript\|LocalScripts, die laufen, wenn der Charakter spawnt.StarterPlayer.StarterPlayerScripts | Enthält allgemeine Zwecke Class.LocalScript\|LocalScripts, die ausgeführt werden, wenn der Spieler der Erfahrung beitritt.StarterGui | Enthält GUI-Elemente, die der Client anzeigt, wenn er das Spiel laden.Class.LocalScript\|LocalScripts kann von diesem Ort aus ausgeführt werden.Dieser Ort ist ideal für Skripte, die die Benutzeroberfläche des Spiels modifizieren, wie z. B. das Hinzufügen von Schaltflächen, Menüs und Popups.StarterPack | Enthält im Allgemeinen nur Class.Tool\|Tools, kann aber auch Class.LocalScript\|LocalScripts enthalten, um Spielerrucksäcke einzurichten.
Skripte
Roblox-Erlebnisse unterstützen drei verschiedene Arten von Luau-Skripten:
Client-Skripte
Diese Skripte laufen auf dem Client und der Server hat keine Sicht auf ihr Verhalten.Aus veralteten Gründen können diese Skripte die Form von LocalScripts oder Scripts mit einem RunContext Wert von Client annehmen.Client-Skripte leben typischerweise in ReplicatedStorage , StarterPlayerScripts oder StarterCharacterScripts .
Server-Skripte
Diese Skripte laufen auf dem Server und der Client hat keine Sicht auf ihr Verhalten.Server-Skripte haben einen RunContext Wert von Server und leben typischerweise in ServerScriptService, deren Inhalt nicht auf den Spielclient repliziert wird.
Modul-Skripte
Diese Skripte sind wiederverwendbare Teile von Code, die genau einen Wert zurückgeben, typischerweise eine Funktion oder Tabelle (oder eine Tabelle von Funktionen).Anstatt Code in Client- und Serverskripts zu duplizieren, verwende Modulskripte, um Code und Daten zwischen den beiden zu teilen.Modul-Skripte leben oft in ReplicatedStorage, aber sie können an anderer Stelle leben, wenn Sie Code zwischen Skripten auf derselben Seite der Client-Server-Grenze teilen möchten.
Unreal hat nicht das Konzept verschiedener Skripttypen.Wenn du dich dazu entscheidest, ein Mehrspieler-Spiel zu erstellen, schreibst du zusätzlichen Code, um den Spielzustand zwischen dem Server und den Clients zu synchronisieren.
In Unreal ist viel von der Funktionalität der Engine verfügbar, indem du integrierte Klassen wie UObject, ACharacters, ULevel und UWorld in C++ oder Blueprint erweiterst.Unreal unterstützt benutzerdefinierte Ereignisse, aber viele Klassen enthalten Ereignisse, die die Engine automatisch als Teil des natürlichen Lebenszyklus des Stufeaufruft.
Im Vergleich zum unrealen "Ticking"-System sind Roblox-Skripte viel ereignisgesteuert.Sie greifen auf ähnliche Engine-Funktionalität zu, indem Sie sich für Dienste abonnieren und auf Updates hören.
C++ und Luau
Für Scriptingverwendet Unreal C++. Roblox verwendet Luau, eine Skriptsprache, die aus Lua 5.1 entwickelt wurde.
Im Vergleich zu Luau hat C++ einen Gesamtvorteil in der Leistung, der für oder gegen die Arten von Erlebnissen relevant sein könnte, die du Buildmöchtest.Luau wird schrittweise getippt und hat eine weniger verbale Syntax.In größeren Projekten kann jedoch die schrittweise Eingabe Kategorien von Fehlern einführen, die stark typierte Sprachen wie C++ vermeiden, also aktivieren Sie strenges Typenprüfen in Roblox-Skripten.
Unreal enthält auch ein visuelles Skriptsystem namens Blueprints.Roblox hat Dritt plugins, die ähnliche Funktionalität bieten, aber kein vergleichbares System integriert.
Luau-Code-Beispiel
Das folgende Luau-Codebeispiel zeigt, wie man danach, nachdem ein Spieler eine Angelrute ausgerüstet hat, auf die Eingabe des Benutzers (in diesem Fall die Schlüssel) hört und zusätzliche Funktionen aufruft:
-- Hole dir die notwendigen Spieldienste
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Holen Sie sich ein Modulskript von ReplicatedStorage, das eine einzige Funktion zurückgibt
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Nehme an, dass dieses Skript ein Kind des Angelrutes ist
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Überprüfe, dass der Schlüssel unten ist, und rufe dann eine andere Funktion auf
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Aktiviere die Aktion nur, wenn der Spieler die Angelrute ausrüstet
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Deaktiviere die Aktion, wenn der Spieler die Angelrute abnimmt
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)
Das Roblox-Skript kann relativ knapp gehalten werden, da Roblox viele eingebaute Annahmen hat: ein Player mit einem Humanoid -Zeichen, das mit dem Server verbunden ist, und kann Tools ausrüsten.Diese Annahmen existieren in Unreal nicht, die Umsetzung wäre also sehr unterschiedlich.
Vermögenswerte
Unreal und Roblox unterstützen beide das Importieren von benutzerdefinierten Meshes und Modellen im .fbx.Bestimmte Arten von Assets können spezielle Konfigurationen und Export-Einstellungen von Ihrer Drittsoftware zur Modellierung erfordern.Für weitere Informationen, siehe die folgenden Seiten:
In Unreal werden Assets in deinen Content Ordner importiert, der im Inhalts-Browser sichtbar ist.In Roblox werden Assets in deinen Arbeitsbereich und in die Toolbox oder Inventar Sektion des Asset-Managers importiert.
Roblox bietet auch ein Open-Source-Blender-Plugin an, um den Importprozess zu beschleunigen, ähnlich wie die Funktion An Unreal senden von Blender-Tools.
Transformierungen
Die Transformationen von props.engine und Roblox' CFrames dienen ähnlichen Zwecken bei der Darstellung von 3D-Transformierungen von Objekten:
- Sowohl Transformationen als auch CFrames repräsentieren die Position und Rotation eines Objekts im Platz.Transformierungen beinhalten Größenverhältnis, während Roblox eine BasePart.Size Eigenschaft verwendet, die nicht Teil des CFrame ist.
- Beide unterstützen Multiplikation (d.h. Zusammensetzung) für komplexe Transformationen und haben integrierte Methoden für andere Manipulationen.
Zusammenarbeit
In Unreal arbeiten Sie mit Versionskontrollsystemen wie Perforce oder SVN zusammen, in der Regel über die integrierte Benutzeroberfläche von Unreal.Diese Versionskontrollsysteme verwenden das zentralisierte "Checkout"-Modell, das Dateien sperrt, während eine Person daran arbeitet.
Roblox-Dateien leben in der Cloud (obwohl du Kopien exportieren kannst), sodass Roblox Studio integrierte Collaboration-Workflows für gleichzeitige Bearbeitung, Gruppenmanagement, Berechtigungen, Skriptentwurf und mehr bietet.Siehe Zusammenarbeit.
Plugins
Ähnlich wie Unreal unterstützt Roblox Studio Plugins, die die Arbeit vereinfachen oder dir zusätzliche Kontrolle über verschiedene Aspekte des Entwicklungsprozesses geben können.Plugins sind im Creator-Store verfügbar, genau wie Assets, viele Gratis.
Wörterbuch
| Unreal | Roblox | Notizen | | :--- | :--- | :--- | | Level | Platz | | | Akteur | Part oder Model | Siehe philosophische Unterschiede .| | Blueprint-Klasse | Paket | | | Transform | CFrame | CFrame enthält keine Skalierungsinformationen.Siehe Transformierungen.| | Outliner | Explorer-Fenster | | | Details-Panel | Eigenschaften-Fenster | | Level-Ansichtsfenster | Ansichtsfenster | | | Inhalts-Browser | Asset-Manager oder Toolbox | | | Landschaftsmodus | Gelände-Editor | | | Spielerstart | SpawnLocation | | | Ausgabe-Protokoll | Ausgabe | | | Marktplatz | Creator-Store | | | Menüleiste | Menüleiste | | | Plugin | Plugin | | | Warnungsprotokoll | Warnung | | |