Ogni luogo è rappresentato da un modello di dati, una gerarchia di oggetti che descrivono tutto riguardo al luogo. Il modello di dati contiene tutti gli oggetti che compongono il mondo 3D, come parti, terreno, illuminazione e altri elementi ambientali. Contiene anche oggetti che possono controllare il comportamento in tempo di esecuzione, come script che modificano proprietà, chiamano metodi e funzioni e rispondono a eventi che abilitano comportamenti dinamici e interattività.
Il motore di Roblox utilizza il modello di dati come fonte di verità per lo stato di un luogo, in modo da poterlo simulare e renderizzare sui dispositivi client. Per ulteriori informazioni su come il motore di Roblox interpreta il modello di dati, vedere Runtime Client-Server.
Oggetti
Posizioni e organizzi oggetti nel modello di dati per descrivere un luogo in Roblox. Ogni oggetto in Roblox eredita dalla classe Instance, che definisce proprietà, metodi ed eventi generici comuni a tutti gli oggetti. Gli oggetti definiscono anche le proprie caratteristiche a seconda della funzionalità che l'oggetto fornisce. Ci sono molte categorie di oggetti con una vasta gamma di utilizzi, ma lavorerai frequentemente con oggetti BasePart e LuaSourceContainer, comunemente noti come parti e script.
Per un elenco completo di tutte le funzionalità del motore di Roblox, vedere la documentazione di riferimento.
Blocchi di costruzione 3D
BasePart è la classe principale per i blocchi di costruzione 3D simulati fisicamente nel mondo. Definisce le proprietà e i metodi comuni a tutti gli oggetti fisici con proprietà come posizione, dimensione e orientamento.
| Oggetto | Descrizione |
|---|---|
| Part | Una parte primitiva part che può assumere la forma di un blocco, palla, cilindro, cuneo o cuneo angolare. |
| MeshPart | Un mesh importato da software di modellazione 3D come Maya o Blender. |
| TrussPart | Un trave a traliccio che i personaggi possono scalare come una scala. |
Sebbene tu possa teoricamente creare un gioco Roblox completamente funzionale utilizzando solo parti semplici, è probabile che importerai mesh e combinerai parti primitive in oggetti e strutture più complesse attraverso la modellazione solida.
Script
Puoi aggiungere interattività e comportamento al mondo 3D del tuo luogo e definire la logica con gli script. Scrivi script nel linguaggio di programmazione Luau per fare cose come muovere parti, chiamare altri script e rispondere a eventi. Poiché Roblox funziona in un modello client-server, puoi eseguire script sul server, sul client o farli comunicare attraverso il confine di rete.
- Un oggetto Script rappresenta uno script che può essere eseguito solo sul server.
- Un oggetto LocalScript rappresenta uno script che può essere eseguito solo sul client.
- Un oggetto ModuleScript rappresenta uno script riutilizzabile che puoi require() sia dagli script del server che da quelli del client.
Affinché gli script si comportino correttamente, devi posizionarli nei contenitori corretti nel modello di dati. Per ulteriori informazioni, vedere le sezioni Server e Client.
Organizzazione degli oggetti
Sebbene tu abbia molta flessibilità su come organizzare il tuo modello di dati, il motore di Roblox si aspetta che determinati oggetti siano in determinati servizi contenitore, che sono oggetti che hanno comportamenti specifici e possono influenzare i comportamenti degli oggetti che contengono. Le principali categorie di servizi contenitore includono:
- Workspace — Workspace memorizza tutti gli oggetti che vengono renderizzati nel mondo 3D.
- Environment — Contenitori come Lighting e SoundService che contengono oggetti per impostazioni e elementi ambientali.
- Replication — Contenitori per contenuti e logica che si replicano tra il server e il client, come ReplicatedStorage e ReplicatedFirst.
- Server — Contenitori per contenuti e logica solo lato server, come ServerScriptService e ServerStorage.
- Chat — Contenitori per oggetti che abilitano funzionalità di chat, come VoiceChatService e TextChatService.
Inoltre, puoi ulteriormente organizzare i tuoi oggetti con i seguenti oggetti:
- Cartelle — Una Folder è per scopi organizzativi e non definisce alcun comportamento. Ad esempio, puoi utilizzare le cartelle per raggruppare oggetti simili come un insieme di script nello storage del server.
- Modelli — Una Model è principalmente destinata a raggruppamenti geometrici di parti, come raggruppare un set di scrivania che include una sedia, un tavolo e una lampada. Per organizzare set più complessi, puoi anche annidare modelli all'interno di modelli.
Workspace
Workspace contiene tutti gli oggetti che compongono il mondo 3D di un luogo. Puoi aggiungere oggetti allo spazio di lavoro per personalizzare il tuo mondo 3D, come parti di base, parti mesh e modelli. I client renderizzano tutto ciò che appare in questo contenitore e nulla al di fuori di esso, quindi puoi controllare cosa vedono e con cosa interagiscono gli utenti nel tuo luogo. Sebbene non venga effettivamente renderizzato, puoi anche aggiungere script che sono parentati alle parti e ai modelli a cui sono associati. Per impostazione predefinita, lo spazio di lavoro è pre-popolato con un oggetto Terrain e un oggetto Camera.
Camera
Camera determina come il client visualizza il mondo 3D. Per impostazione predefinita, c'è una camera nello spazio di lavoro, ma puoi aggiungere più oggetti camera per creare diverse prospettive e visualizzazioni. Ogni client prende queste impostazioni e crea la propria vista della camera che il server non può modificare direttamente.
Ad esempio, puoi impostare una camera per seguire i movimenti dell'utente o rimanere fissa in una posizione particolare. Puoi anche regolare il campo visivo, la distanza e l'angolo per creare diversi effetti visivi su come gli utenti visualizzano il tuo mondo 3D.
Per ulteriori informazioni, vedere personalizza la camera.
Terreno
Terrain ti consente di creare paesaggi per il tuo luogo. Puoi applicare un materiale al terreno per simulare ambienti naturali desiderati, come erba, acqua, sabbia o un materiale personalizzato. Anche se puoi avere solo un oggetto terreno per il tuo mondo 3D e applicare un materiale a quel terreno, puoi utilizzare il Terrain Editor per modificare regioni del tuo terreno.
Per ulteriori informazioni, vedere terreno ambientale.
Ambiente
Un'illuminazione personalizzata può rendere il tuo mondo 3D molto più immersivo e realistico. Il servizio Lighting contiene oggetti che controllano le impostazioni di illuminazione globale del tuo luogo, come Atmosphere per simulare effetti atmosferici o Sky per alterare il sole, la luna e le stelle nei tuoi ambienti. Inoltre, puoi utilizzare fonti di luce per emettere luce da oggetti specifici.
Aggiungere audio ai tuoi giochi è anche cruciale per elevare i tuoi giochi a nuovi livelli. Utilizzando strategicamente audio posizionale e non posizionale, puoi immergere i giocatori nei tuoi mondi, fornire loro feedback utili per le loro azioni e indirizzare la loro attenzione su ciò che devono fare per avere successo nei loro obiettivi.
Replicazione
Replicazione è il processo attraverso il quale il server sincronizza lo stato del tuo luogo con tutti i client connessi. Il motore di Roblox replica in modo intelligente e automatico dati, fisica e messaggi di chat tra il server e il client in molti casi, ma puoi anche specificare determinati oggetti da replicare posizionandoli in contenitori specifici.
ReplicatedFirst
ReplicatedFirst contiene oggetti che desideri replicare a un client quando si unisce al tuo luogo. Contiene tipicamente oggetti essenziali per inizializzare un giocatore, come oggetti LocalScript lato client e gli oggetti associati agli script. Tutto il contenuto in questo contenitore viene replicato dal server al client solo una volta.
ReplicatedStorage
ReplicatedStorage contiene oggetti che sono disponibili sia per il server che per i client connessi. Qualsiasi modifica che si verifica sul client persiste ma non verrà replicata al server. Il server può sovrascrivere le modifiche sul client per mantenere la coerenza. Questo contenitore è tipicamente utilizzato per oggetti ModuleScript che devono essere condivisi e accessibili sia da oggetti Script (lato server) che da oggetti LocalScript (lato client). Inoltre, puoi utilizzare questo contenitore per replicare qualsiasi oggetto che non deve esistere nel mondo 3D fino a quando non è necessario, come un ParticleEmitter da clonare e parentare a tutti i modelli di personaggi in arrivo.
Per ulteriori informazioni su come funziona la replicazione, vedere runtime client-server.
Server
Il modello di dati definisce contenitori dedicati per oggetti solo lato server che non vengono mai replicati al client. Questo consente al server di influenzare il comportamento e lo stato del client senza esporre gli oggetti e la logica del server al client.
ServerScriptService
ServerScriptService contiene oggetti Script, oggetti ModuleScript richiesti dagli script del server e altri oggetti relativi alla programmazione che sono destinati solo all'uso del server. Se i tuoi script richiedono altri oggetti non di scripting, devi posizionarli in ServerStorage. Gli script in questo contenitore non vengono mai replicati ai client, il che ti consente di avere logica sicura lato server.
ServerStorage
ServerStorage contiene oggetti che sono destinati solo all'uso del server. Puoi utilizzare questo contenitore per memorizzare oggetti che desideri clonare e parentare allo spazio di lavoro o ad altri contenitori durante il runtime. Ad esempio, puoi memorizzare oggetti di grandi dimensioni come mappe in questo contenitore fino a quando non sono necessari e spostarli nello spazio di lavoro solo quando richiesto. Questo ti consente di ridurre il traffico di rete del client all'inizio.
Client
I servizi contenitore client sono destinati a oggetti che vengono replicati a ogni client connesso. Questa categoria di contenitori si replica a ogni client connesso e contiene tipicamente oggetti 3D e oggetti LocalScript associati. Tutti gli oggetti che memorizzi in questi contenitori non sono persistenti tra le sessioni e vengono ripristinati ogni volta che un client si riconnette. Puoi inserire oggetti in questi contenitori come GUI dei giocatori, script lato client e altri oggetti che sono rilevanti solo per il client.
Quando un client si connette a un server, il servizio contenitore Players ascolta gli utenti che si uniscono al tuo luogo e crea un oggetto Player per ogni client. Il server copia gli oggetti dai contenitori client nel modello di dati di modifica nella posizione corrispondente nel modello di dati di runtime all'interno dell'oggetto Players. La seguente tabella descrive il contenitore originale in cui risiede nel contenitore e il contenitore risultante in cui vengono copiati sul client:
| Modello di dati di modifica | Modello di dati di runtime | Note |
|---|---|---|
| StarterPack | Player.Backpack | Script che impostano l'inventario del giocatore e contengono generalmente oggetti Tool, ma spesso contengono anche script locali. |
| StarterGui | Player.PlayerGui | Script che possono gestire la GUI locale del giocatore. Quando un giocatore rinasce, i contenuti di PlayerGui vengono svuotati. Il server copia gli oggetti all'interno di StarterGui nella PlayerGui. |
| StarterPlayerScripts | Player.PlayerScripts | Script di uso generale per il client. Ad esempio, se desideri creare effetti speciali sul client quando si verificano determinate condizioni, puoi posizionare uno script locale in questo contenitore per farlo. Il server non può accedere a questo contenitore. |
| StarterCharacterScripts | Player.Character | Script che vengono copiati al client quando si spawnano. Questi script non persistono quando il giocatore rinasce. |
| ReplicatedFirst | Il contenuto di questo contenitore viene replicato a tutti i client (ma non di nuovo al server) per primo, prima di qualsiasi altra cosa. |
Chat
TextChatService
TextChatService rappresenta il servizio che gestisce vari compiti di chat testuale in-game, come la gestione dei canali, la decorazione dei messaggi, il filtraggio del testo, la creazione di comandi e lo sviluppo di interfacce di chat personalizzate.
Per ulteriori informazioni, vedere panoramica della chat testuale.
VoiceChatService
VoiceChatService rappresenta la funzionalità di chat vocale basata sulla prossimità che simula comunicazioni realistiche in base a quanto sei vicino ad altri utenti. Puoi utilizzare questo servizio per attivare e disattivare la funzionalità.
Per ulteriori informazioni, vedere chat vocale.
Cartelle e modelli
Ci sono due metodi principali per raggruppare oggetti nel modello di dati: cartelle e modelli. Entrambi sono contenitori per oggetti, ma hanno scopi diversi.
- Cartelle sono migliori per memorizzare sezioni di un ambiente, come la hall o un'arena di combattimento.
- Modelli sono utilizzati per set di oggetti, come un set di scrivania che include una sedia, un tavolo e una lampada. Per organizzare set più complessi, annida modelli all'interno di modelli.
Dovresti sempre nominare i tuoi oggetti in modo descrittivo. Questo rende facile trovare e modificare gli oggetti in seguito, se necessario.

