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 runtime, come script che modificano proprietà, chiamano metodi e funzioni, e rispondono a eventi che consentono comportamenti dinamici e interattività.
Il Motore 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 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à fornita. Ci sono molte categorie di oggetti con una vasta gamma di usi, ma lavorerai frequentemente con oggetti BasePart e LuaSourceContainer, comunemente noti come parti e script.
Per un elenco completo di tutte le funzionalità del Motore Roblox, vedere la documentazione di riferimento.
Blocchi di costruzione 3D
BasePart è la classe fondamentale 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 | Un part primitivo che può assumere la forma di un blocco, una palla, un cilindro, una trave o una trave 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 modellazione solida.
Script
Puoi aggiungere interattività e comportamento al mondo 3D del tuo luogo e definire logica con 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 server che da quelli client.
Affinché gli script si comportino correttamente, è necessario collocarli nei contenitori corretti nel modello di dati. Per ulteriori informazioni, vedere le sezioni Server e Client.
Organizzazione degli oggetti
Sebbene tu abbia molta flessibilità nel modo in cui organizzi il tuo modello di dati, il Motore Roblox si aspetta che determinati oggetti siano in determinati servizi contenitore, che sono oggetti con 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 si rendono visibili 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 server-side, come ServerScriptService e ServerStorage.
- Chat — Contenitori per oggetti che abilitano funzionalità di chat, come VoiceChatService e TextChatService.
Inoltre, puoi organizzare ulteriormente i tuoi oggetti con i seguenti oggetti:
- Cartelle — Una Folder serve a scopi organizzativi e non definisce alcun comportamento. Ad esempio, puoi utilizzare cartelle per raggruppare oggetti simili come un insieme di script nello storage del server.
- Modelli — Un Model è principalmente destinato 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 nidificare 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 stanno rendendo tutto ciò che appare in questo contenitore e nulla al di fuori di esso, quindi puoi controllare ciò che gli utenti vedono e con cui interagiscono 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-populato con un oggetto Terrain e 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 differenti prospettive e viste. 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 degli utenti o rimanere fissa in una posizione particolare. Puoi anche regolare il campo visivo, la distanza e l'angolo per creare diversi effetti visivi di 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 Editor Terreno 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 globali del tuo luogo, come Atmosphere per simulare effetti atmosferici o Sky per modificare 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 nuove vette. Utilizzando strategicamente audio posizionali e non posizionali, puoi immergere i giocatori nei tuoi mondi, fornire feedback utili per le loro azioni e dirigere 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 Roblox replica automaticamente dati, fisica e messaggi di chat tra il server e il client in molte situazioni, ma puoi anche specificare determinati oggetti da replicare posizionandoli in contenitori specifici.
ReplicatedFirst
ReplicatedFirst contiene oggetti che desideri replicare a un client quando entra nel tuo luogo. Di solito contiene oggetti essenziali per inizializzare un giocatore, come oggetti LocalScript di 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 cambiamento che avviene sul client persiste ma non sarà replicato al server. Il server può sovrascrivere le modifiche sul client per mantenere la coerenza. Questo contenitore viene comunemente 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 oggetti che non devono esistere nel mondo 3D fino a quando non è necessario, come un ParticleEmitter da clonare e parentare a tutti i modelli dei 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 server e altri oggetti correlati alla programmazione che sono destinati solo all'uso server. Se i tuoi script richiedono altri oggetti, non correlati alla programmazione, devi posizionarli in ServerStorage. Gli script in questo contenitore non vengono mai replicati ai client, il che consente di avere una logica server-side sicura.
ServerStorage
ServerStorage contiene oggetti destinati solo all'uso server. Puoi utilizzare questo contenitore per memorizzare oggetti che desideri clonare e parentare allo spazio di lavoro o ad altri contenitori in 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 dati client alla connessione iniziale.
Client
I servizi contenitore client sono destinati agli 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 riconnette. Puoi mettere 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 container 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 in modifica nella posizione corrispondente nel modello di dati in runtime all'interno dell'oggetto Players. La seguente tabella descrive il contenitore originale in cui risiede e il contenitore risultante al quale vengono copiati sul client:
| Modello dati in modifica | Modello dati in runtime | Note |
|---|---|---|
| StarterPack | Player.Backpack | Script che impostano l'inventario del giocatore e generalmente contengono 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 nel PlayerGui. |
| StarterPlayerScripts | Player.PlayerScripts | Script di uso generale per il client. Ad esempio, se desideri creare effetti speciali sul client quando vengono soddisfatte 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 vengono creati. Questi script non persistono quando il giocatore rinasce. |
| ReplicatedFirst | I contenuti di questo contenitore vengono replicati a tutti i client (ma non al server) per primi, 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 a 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 il lobby o un'arena di combattimento.
- Modelli sono utilizzati per set di oggetti, come un set da scrivania che include una sedia, un tavolo e una lampada. Per organizzare set più complessi, nidifica modelli all'interno di modelli.
Dovresti sempre nominare i tuoi oggetti in modo descrittivo. Questo rende facile trovare e modificare oggetti in seguito, se necessario.

