Questa pagina include informazioni per aiutare gli sviluppatori di Unreal Engine esperti a iniziare con Roblox: orientamento di base, confronto concettuale e differenze chiave tra le due piattaforme.
Ottieni orientamento
L'outliner di Unreal e l'esploratore di Roblox Studio sono le finestre principali per organizzare gli elementi negli spazi 3D.Entrambi visualizzano una gerarchia di oggetti e cartelle.Tuttavia, Outliner ha una struttura più piatta e meno definita e mostra solo Actors .La finestra Explorer ha una struttura profondamente nidata e rigorosa e visualizza tutti gli oggetti come parte della gerarchia, anche gli oggetti che sarebbero considerati componenti in Unreal.
Il Roblox Studio Gestore risorse e Toolbox si sovrappongono al browser di contenuti irreali.Il gestore delle risorse ti consente di gestire tutte le risorse all'interno della tua esperienza, mentre la Toolbox ti consente di accedere a qualsiasi risorsa che hai pubblicato.La Toolbox ti consente anche di cercare nel Creator Store risorse da Roblox o dalla comunità.Il Creator Store è simile al Marketplace di Unreal Engine, ma puoi accedervi direttamente dall'interfaccia utente Studio.
Differenze filosofiche
Roblox è un "motore di simulazione" piuttosto che un motore di gioco tradizionale.Unreal Actors e Roblox Parts entrambi servono come blocchi di costruzione fondamentali, ma in pratica, i due sono piuttosto diversi:
- Rappresentazione : Actors in Unreal sono un concetto di alto livello per qualsiasi oggetto in un livello, mentre Parts in Roblox sono progettati per rappresentare oggetti fisici come blocchi di legno e sfere di plastica.
- Fisica : Per eseguire simulazioni di fisica in Unreal, attiva la fisica all'interno di alcuni componenti (come il StaticMeshComponent ) o aggiungendo componenti a Actors , come le restrizioni di fisica.In Roblox, la fisica è incorporata nel tipo di dati Parts ; il motore gestisce le interazioni in modo automatico.
Puoi vedere la differenza immediatamente se crei un Actor e un Part.Il Actor ha poco più di una posizione, rotazione e scala.Il Part ha le stesse informazioni - più un materiale e un colore, valori di riflettanza e trasparenza, massa e forma, e molto altro ancora.Le due iniziano a condividere proprietà simili solo quando confronti un StaticMeshActor in Unreal (ad esempioun cubo) a un MeshPart in Roblox.


Un'altra utile comparazione è l'Unreal Actor a Roblox Model .I modelli agiscono come contenitore per una collezione di parti interconnesse allo stesso modo in cui Actors in Unreal sono contenitori per componenti.Specifichi una delle parti del modello come sua parte principale per definire il punto di rotazione.I modelli contengono anche script, animazioni, effetti sonori, prompt, vincoli, emittenti di particelle e altro ancora.
Ad esempio, un Unreal Actor potrebbe avere un NiagaraComponent che utilizza diversi emittenti per ottenere l'effetto visivo desiderato, una mesh per la forma, una restrizione fisica per aggiungere elasticità e uno script per l'interattività del giocatore.In Outliner, vedi un singolo Actor nominato SpringyFireball .
In Roblox, un modello comparabile SpringyFireball nella finestra Explorer potrebbe sembrare qualcosa del genere:
Model|- ParticleEmitter|- MeshPart|- SpringConstraint|- ClickDetector| |- Script
La filosofia fisica predefinita di Roblox si estende al processo di costruzione di modelli 3D.In Roblox, saldare più parti insieme in un assemblaggio è un ottimo modo per costruire rapidamente le cose, perché Roblox tratta le parti saldate come un unico corpo rigido.Questo approccio non è pratico in Unreal.
Piuttosto che utilizzare unità metriche standard per lunghezza e massa, Roblox utilizza unità nominali chiamate studs e Roblox Unità di massa (RMU).Per le conversioni e le raccomandazioni metriche approssimate attorno all'uso, vedi Unità.
La posizione conta
Le esperienze Roblox sono multigiocatore per impostazione predefinita, quindi Roblox Studio include molti luoghi di archiviazione diversi con comportamenti specifici.Ad esempio, uno script potrebbe essere eseguito quando lo metti in ReplicatedStorage , ma non quando lo metti in StarterPlayerScripts .Per ulteriori informazioni, vedi Runtime client-server e Organizzazione dell'oggetto.
Posizione | Descrizione :--- | :--- Workspace | Rappresenta il Mondodel gioco.Questa posizione funziona bene per gli script del server che si attaccano direttamente agli oggetti e controllano il loro comportamento.ReplicatedFirst | Contiene oggetti che si replicano al client prima di qualsiasi altra cosa.Questa posizione è ideale per il minimo assoluto set di oggetti e script client necessari per visualizzare una schermata di caricamento.ReplicatedStorage | Contiene oggetti che vengono replicati sia al client che al Server.Questa posizione è ideale per Class.ModuleScript\|ModuleScripts che vuoi utilizzare sia sul server che sul client.Class.LocalScript\|LocalScripts non fuggi da questa posizione, ma Class.Script\|Scripts con un contesto di esecuzione di Client fai.ServerScriptService | Contiene gli script del server.Questa posizione è ideale per gli script che devono accedere alla funzionalità lato server o agli oggetti, come la logica di gioco e lo storage cloud.ServerStorage | Contiene oggetti lato server.Questa posizione è ideale per oggetti grandi che non hanno bisogno di essere replicati immediatamente ai client quando si uniscono a un'esperienza.Gli script non vengono eseguiti da questa posizione, ma puoi archiviare il lato server Class.ModuleScript\|ModuleScripts qui.StarterPlayer.StarterCharacterScripts | Contiene Class.LocalScript\|LocalScripts che si eseguono quando il personaggio si genera.StarterPlayer.StarterPlayerScripts | Contiene script di uso generale Class.LocalScript\|LocalScripts che si eseguono quando il giocatore si unisce all'esperienzaStarterGui | Contiene elementi GUI che il client mostra quando carica il Gioco.Class.LocalScript\|LocalScripts può fuggire da questa posizione.Questa posizione è ideale per gli script che modificano l'interfaccia utente del Gioco, come l'aggiunta di pulsanti, menu e popup.StarterPack | Generalmente contiene solo Class.Tool\|Tools, ma può anche includere Class.LocalScript\|LocalScripts per configurare i backpack del giocatore.
Programmazione
Le esperienze di Roblox supportano tre diversi tipi di script Luau:
Script dei client
Questi script vengono eseguiti sul client e il server non ha visibilità sul loro comportamento.Per motivi legacy, questi script possono assumere la forma di LocalScripts o Scripts con un valore RunContext di Client .Gli script del client vivono tipicamente in ReplicatedStorage , StarterPlayerScripts , o StarterCharacterScripts .
Script del server
Questi script vengono eseguiti sul Servere il client non ha visibilità sul loro comportamento.Gli script del server hanno un valore di RunContext di Server e in genere vivono in ServerScriptService, il cui contenuto non viene replicato al client del gioco.
Script del modulo
Questi script sono pezzi di codice riutilizzabili che restituiscono esattamente un valore, tipicamente una funzione o una tabella (o una tabella di funzioni).Invece di duplicare il codice negli script del client e del server, utilizza gli script del modulo per condividere codice e dati tra i due.Gli script del modulo vivono spesso in ReplicatedStorage, ma possono vivere altrove se vuoi condividere il codice tra gli script sullo stesso lato del confine client-server.
Unreal non ha il concetto di diversi tipi di script.Se scegli di creare un gioco multiplayer, scrivi un codice aggiuntivo per sincronizzare lo stato del gioco tra il server e i client.
In Unreal, gran parte della funzionalità del motore è disponibile estendendo le classi integrate come UObject , ACharacters , ULevel e UWorld in C++ o Blueprint.Unreal supporta eventi personalizzati, ma molte classi includono eventi che il motore invoca automaticamente come parte del ciclo di vita naturale del livello.
Rispetto al sistema di "ticking" irreale, gli script di Roblox sono molto più basati sugli eventi.Accedi a funzionalità simili del motore sottoscrivendo servizi e ascoltando gli aggiornamenti.
C++ e Luau
Per lo scripting, Unreal utilizza C++. Roblox utilizza Luau , un linguaggio di scripting derivato da Lua 5.1 .
Rispetto a Luau, C++ ha un vantaggio generale di prestazioni, che potrebbe o non potrebbe essere rilevante per i tipi di esperienze che vuoi costruire.Luau è gradualmente digitato e ha una sintassi meno verbosa.In progetti più grandi, tuttavia, la digitazione graduale può introdurre categorie di bug che i linguaggi fortemente tipizzati come C++ evitano, quindi considera di abilitare controllo rigoroso del tipo in script Roblox.
Unreal include anche un sistema di script visivi chiamato Blueprints.Roblox ha plugin di terze parti che offrono una funzionalità simile, ma nessun sistema comparabile integrato.
Esempio di codice Luau
Il seguente esempio di codice Luau mostra come, dopo che un giocatore equipaggia una canna da pesca, ascoltare l'input dell'utente (in questo caso, la chiave E ) e chiamare funzioni aggiuntive:
-- Ottieni i servizi di gioco necessari
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Ottieni uno script del modulo da ReplicatedStorage che restituisce una singola funzione
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Presume che questo script sia un figlio della canna da pesca
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Controlla che la chiave è giù, quindi chiama un'altra funzione
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Abilita l'azione solo quando il giocatore equipaggia la canna da pesca
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Disabilita l'azione quando il giocatore disequipa la canna da pesca
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)
Lo script di Roblox può essere relativamente conciso perché Roblox ha molte congetture predefinite: un Player con un personaggio Humanoid connesso al server e può equipaggiare Tools .Queste supposizioni non esistono in Unreal, quindi l'implementazione sarebbe molto diversa.
Risorse
Unreal e Roblox entrambi supportano l'importazione di mesh e modelli personalizzati in formato .fbx .Ci possono essere alcuni tipi di risorse che richiedono configurazioni e impostazioni di esportazione specifiche dal tuo software di modellazione di terze parti.Per ulteriori informazioni, vedi le seguenti pagine:
In Unreal, l'importazione delle risorse avviene nel tuo directory Content , visibile nel Content Browser.In Roblox, le risorse vengono importate nel tuo Workspace e nella sezione Toolbox o Inventory della Gestore risorse .
Roblox offre anche un plugin Blender open source per semplificare il processo di importazione, simile alla funzione Invia a Unreal di Blender Tools.
Transformazioni
Le trasformazioni di props.engine e Roblox's CFrames servono a scopi simili nel rappresentare le trasformazioni 3D degli oggetti:
- Entrambi i trasform e CFrames rappresentano la posizione e la rotazione di un oggetto nello Spazio3D.Le trasformazioni includono la Ridimensionare, mentre Roblox utilizza una proprietà BasePart.Size che non fa parte del CFrame.
- Entrambi supportano la moltiplicazione (cioè la composizione) per trasformazioni complesse e hanno metodi integrati per altre manipolazioni.
Collaborazione
In Unreal, collabori con sistemi di controllo della versione come Perforce o SVN, generalmente attraverso l'interfaccia utente integrata di Unreal.Questi sistemi di controllo della versione utilizzano il modello "checkout" centralizzato che blocca i file mentre una persona lavora su di essi.
I file Roblox vivono nel cloud (anche se puoi esportare copie), quindi Roblox Studio fornisce flussi di lavoro di collaborazione integrati per l'editing simultaneo, la gestione dei gruppi, le autorizzazioni, la stesura di script e altro ancora.Vedi Collaborazione.
Plugin
Simile a Unreal, Roblox Studio supporta plug-in, che possono semplificare o darti un controllo aggiuntivo su vari aspetti del processo di sviluppo.I plugin sono disponibili nel Creator Store, proprio come le risorse, molte gratuitamente.
Glossario
| Irreale | Roblox | Note | | :--- | :--- | :--- | | Livello | Luogo | | | Attore | Part o Model | Vedi Differenze filosofiche .| | Classe di progetto | Pacchetto | | | Trasforma | CFrame | CFrame non include informazioni sulla scala.Vedi Trasformazioni.| | Outliner | Finestra Explorer | | | Pannello dettagli | Finestra Proprietà | | | Porta di visualizzazione del livello | Visualizzazione del livello | | | Content Browser | Gestore risorse o Toolbox | | | Modalità paesaggio | Editor del terreno | | | PlayerStart | SpawnLocation | | | Log di output | Output | | | Mercato | Creator Store | | | Barra dei menu | Barra dei menu | | | Plugin | Plugin | | |