Setiap tempat diwakili oleh model data, sebuah hierarki objek yang menggambarkan segala sesuatu tentang tempat tersebut. Model data berisi semua objek yang membentuk dunia 3D, seperti bagian, terrain, pencahayaan, dan elemen lingkungan lainnya. Ini juga berisi objek yang dapat mengontrol perilaku runtime, seperti skrip yang memodifikasi properti, memanggil metode dan fungsi, serta merespons peristiwa yang memungkinkan perilaku dinamis dan interaktivitas.
Mesin Roblox menggunakan model data sebagai sumber kebenaran untuk keadaan tempat, sehingga dapat mensimulasikan dan merendernya di perangkat klien. Untuk informasi lebih lanjut tentang bagaimana Mesin Roblox menginterpretasikan model data, lihat Client-Server Runtime.
Objek
Anda menempatkan dan mengatur objek dalam model data untuk menggambarkan sebuah tempat di Roblox. Setiap objek di Roblox mewarisi dari kelas Instance, yang mendefinisikan properti, metode, dan peristiwa generik yang umum untuk semua objek. Objek juga mendefinisikan karakteristik mereka sendiri tergantung pada fungsionalitas yang disediakan oleh objek tersebut. Ada banyak kategori objek dengan berbagai macam penggunaan, tetapi Anda akan sering bekerja dengan objek BasePart dan LuaSourceContainer, yang biasa disebut sebagai bagian dan skrip.
Untuk daftar lengkap semua fitur Mesin Roblox, lihat dokumentasi referensi.
Blok bangunan 3D
BasePart adalah kelas inti untuk blok bangunan 3D yang disimulasikan secara fisik di dunia. Ini mendefinisikan properti dan metode yang umum untuk semua objek fisik dengan properti seperti posisi, ukuran, dan orientasi.
| Objek | Deskripsi |
|---|---|
| Part | Sebuah bagian primitif yang dapat berbentuk blok, bola, silinder, wedge, atau sudut wedge. |
| MeshPart | Sebuah mesh yang diimpor dari perangkat lunak pemodelan 3D seperti Maya atau Blender. |
| TrussPart | Sebuah balok truss yang dapat dipanjat oleh karakter seperti tangga. |
Meskipun secara teoritis Anda dapat membuat permainan Roblox yang sepenuhnya fungsional hanya dengan bagian sederhana, Anda kemungkinan besar akan mengimpor meshes dan menggabungkan bagian primitif menjadi objek dan struktur yang lebih kompleks melalui pemodelan solid.
Skrip
Anda dapat menambahkan interaktivitas dan perilaku ke dunia 3D tempat Anda dan mendefinisikan logika dengan skrip. Anda menulis skrip dalam bahasa pemrograman Luau untuk melakukan hal-hal seperti memindahkan bagian, memanggil skrip lain, dan merespons peristiwa. Karena Roblox bekerja dalam model klien-server, Anda dapat menjalankan skrip di server, klien, atau membuatnya berkomunikasi di seluruh batas jaringan.
- Objek Script mewakili skrip yang hanya dapat dijalankan di server.
- Objek LocalScript mewakili skrip yang hanya dapat dijalankan di klien.
- Objek ModuleScript mewakili skrip yang dapat digunakan kembali yang dapat Anda require() dari skrip server dan klien.
Agar skrip berfungsi dengan baik, Anda harus menempatkannya di kontainer yang benar dalam model data. Untuk informasi lebih lanjut, lihat bagian Server dan Client.
Organisasi objek
Meskipun Anda memiliki banyak fleksibilitas dalam bagaimana Anda mengatur model data Anda, Mesin Roblox mengharapkan objek tertentu berada di layanan kontainer tertentu yang merupakan objek yang memiliki perilaku spesifik dan dapat mempengaruhi perilaku objek yang mereka kandung. Kategori utama layanan kontainer meliputi:
- Workspace — Workspace menyimpan semua objek yang dirender di dunia 3D.
- Environment — Kontainer seperti Lighting dan SoundService yang berisi objek untuk pengaturan dan elemen lingkungan.
- Replication — Kontainer untuk konten dan logika yang direplikasi antara server dan klien, seperti ReplicatedStorage dan ReplicatedFirst.
- Server — Kontainer untuk konten dan logika yang hanya ada di sisi server, seperti ServerScriptService dan ServerStorage.
- Chat — Kontainer untuk objek yang memungkinkan fitur chat, seperti VoiceChatService dan TextChatService.
Selain itu, Anda dapat lebih mengatur objek Anda dengan objek berikut:
- Folder — Folder digunakan untuk tujuan organisasi dan tidak mendefinisikan perilaku apa pun. Misalnya, Anda dapat menggunakan folder untuk mengelompokkan objek serupa seperti sekumpulan skrip di penyimpanan server.
- Model — Model terutama ditujukan untuk pengelompokan geometris bagian, seperti mengelompokkan set meja yang mencakup kursi, meja, dan lampu. Untuk mengatur set yang lebih kompleks, Anda bahkan dapat menempatkan model di dalam model.
Workspace
Workspace berisi semua objek yang membentuk dunia 3D tempat. Anda dapat menambahkan objek ke workspace untuk menyesuaikan dunia 3D Anda, seperti bagian dasar, bagian mesh, dan model. Klien merender semua yang muncul di kontainer ini dan tidak ada yang di luar itu, sehingga Anda dapat mengontrol apa yang dilihat dan diinteraksikan pengguna di tempat Anda. Meskipun tidak benar-benar dirender, Anda juga dapat menambahkan skrip yang diparent ke bagian dan model yang terkait dengannya. Secara default, workspace sudah dipenuhi dengan objek Terrain dan Camera.
Kamera
Camera menentukan bagaimana klien melihat dunia 3D. Secara default, ada satu kamera di workspace, tetapi Anda dapat menambahkan beberapa objek kamera untuk membuat perspektif dan tampilan yang berbeda. Setiap klien mengambil pengaturan ini dan membuat tampilan kameranya sendiri yang tidak dapat dimodifikasi langsung oleh server.
Sebagai contoh, Anda dapat mengatur kamera untuk mengikuti gerakan pengguna atau tetap tetap di lokasi tertentu. Anda juga dapat menyesuaikan bidang pandang, jarak, dan sudut untuk menciptakan efek visual yang berbeda tentang bagaimana pengguna melihat dunia 3D Anda.
Untuk informasi lebih lanjut, lihat kustomisasi kamera.
Terrain
Terrain memungkinkan Anda membuat lanskap untuk tempat Anda. Anda dapat menerapkan material pada terrain untuk mensimulasikan lingkungan alami yang diinginkan, seperti rumput, air, pasir, atau material kustom. Meskipun Anda hanya dapat memiliki satu objek terrain untuk dunia 3D Anda dan menerapkan satu material pada terrain tersebut, Anda dapat menggunakan Terrain Editor untuk mengedit wilayah terrain Anda.
Untuk informasi lebih lanjut, lihat terrain lingkungan.
Lingkungan
Pencahayaan kustom dapat membuat dunia 3D Anda jauh lebih imersif dan realistis. Layanan Lighting berisi objek yang mengontrol pengaturan pencahayaan global tempat Anda, seperti Atmosphere untuk mensimulasikan efek atmosfer atau Sky untuk mengubah matahari, bulan, dan bintang di lingkungan Anda. Selain itu, Anda dapat menggunakan sumber cahaya untuk memancarkan cahaya dari objek tertentu.
Menambahkan audio ke permainan Anda juga penting untuk meningkatkan permainan Anda ke tingkat yang baru. Dengan menggunakan audio posisi dan non-posisi secara strategis, Anda dapat membenamkan pemain ke dalam dunia Anda, memberikan umpan balik yang berguna untuk tindakan mereka, dan mengarahkan perhatian mereka pada apa yang perlu mereka lakukan untuk berhasil dalam tujuan mereka.
Replikasi
Replikasi adalah proses server menyinkronkan keadaan tempat Anda dengan semua klien yang terhubung. Mesin Roblox secara cerdas dan otomatis mereplikasi data, fisika, dan pesan chat antara server dan klien untuk banyak kasus, tetapi Anda juga dapat menentukan objek tertentu untuk direplikasi dengan menempatkannya di kontainer tertentu.
ReplicatedFirst
ReplicatedFirst berisi objek yang ingin Anda replikasi ke klien ketika ia bergabung dengan tempat Anda. Ini biasanya berisi objek yang penting untuk menginisialisasi pemain, seperti objek LocalScript di sisi klien dan objek yang terkait dengan skrip tersebut. Semua konten dalam kontainer ini direplikasi dari server ke klien hanya sekali.
ReplicatedStorage
ReplicatedStorage berisi objek yang tersedia untuk server dan klien yang terhubung. Setiap perubahan yang terjadi di klien akan bertahan tetapi tidak akan direplikasi ke server. Server dapat menimpa perubahan di klien untuk mempertahankan konsistensi. Kontainer ini biasanya digunakan untuk objek ModuleScript yang perlu dibagikan dan diakses oleh objek Script (sisi server) dan LocalScript (sisi klien). Selain itu, Anda dapat menggunakan kontainer ini untuk mereplikasi objek apa pun yang tidak perlu ada di dunia 3D sampai diperlukan, seperti ParticleEmitter untuk menggandakan dan memparenting ke semua model karakter yang masuk.
Untuk informasi lebih lanjut tentang cara kerja replikasi, lihat client-server runtime.
Server
Model data mendefinisikan kontainer khusus untuk objek yang hanya ada di sisi server yang tidak pernah direplikasi ke klien. Ini memungkinkan server mempengaruhi perilaku dan keadaan klien tanpa mengekspos objek dan logika server kepada klien.
ServerScriptService
ServerScriptService berisi objek Script, objek ModuleScript yang diperlukan oleh skrip server, dan objek terkait skrip lainnya yang hanya dimaksudkan untuk digunakan di server. Jika skrip Anda memerlukan objek lain yang bukan objek skrip, Anda harus menempatkannya di ServerStorage. Skrip dalam kontainer ini tidak pernah direplikasi ke klien, yang memungkinkan Anda memiliki logika sisi server yang aman.
ServerStorage
ServerStorage berisi objek yang hanya dimaksudkan untuk digunakan di server. Anda dapat menggunakan kontainer ini untuk menyimpan objek yang ingin Anda gandakan dan parent ke workspace atau kontainer lain saat runtime. Misalnya, Anda dapat menyimpan objek besar seperti peta dalam kontainer ini sampai mereka diperlukan dan memindahkannya ke workspace hanya saat diperlukan. Ini memungkinkan Anda mengurangi lalu lintas jaringan klien saat bergabung pertama kali.
Klien
Layanan kontainer klien dimaksudkan untuk objek yang direplikasi ke setiap klien yang terhubung. Kategori kontainer ini mereplikasi ke setiap klien yang terhubung dan biasanya berisi objek 3D dan objek LocalScript terkait. Semua objek yang Anda simpan di kontainer ini tidak persisten di seluruh sesi dan direset setiap kali klien bergabung kembali. Anda dapat menempatkan objek di kontainer ini seperti GUI pemain, skrip sisi klien, dan objek lain yang hanya relevan untuk klien.
Ketika klien terhubung ke server, layanan kontainer Players mendengarkan pengguna yang bergabung dengan tempat Anda dan membuat objek Player untuk setiap klien. Server menyalin objek dari kontainer klien dalam model data edit ke lokasi yang sesuai dalam model data runtime di dalam objek Players. Tabel berikut menjelaskan kontainer asli di mana objek tersebut berada dan kontainer hasil yang mereka salin ke klien:
| Model data edit | Model data runtime | Catatan |
|---|---|---|
| StarterPack | Player.Backpack | Skrip yang mengatur inventaris pemain dan umumnya berisi objek Tool tetapi sering juga berisi skrip lokal. |
| StarterGui | Player.PlayerGui | Skrip yang dapat mengelola GUI lokal pemain. Ketika pemain respawn, konten PlayerGui dikosongkan. Server menyalin objek di dalam StarterGui ke PlayerGui. |
| StarterPlayerScripts | Player.PlayerScripts | Skrip tujuan umum untuk klien. Misalnya, jika Anda ingin membuat efek khusus di klien ketika kondisi tertentu terpenuhi, Anda dapat menempatkan skrip lokal di kontainer ini untuk melakukannya. Server tidak dapat mengakses kontainer ini. |
| StarterCharacterScripts | Player.Character | Skrip yang disalin ke klien ketika mereka muncul. Skrip ini tidak bertahan ketika pemain respawn. |
| ReplicatedFirst | Konten kontainer ini direplikasi ke semua klien (tetapi tidak kembali ke server) terlebih dahulu, sebelum yang lainnya. |
Chat
TextChatService
TextChatService mewakili layanan yang menangani berbagai tugas chat teks dalam permainan, seperti mengelola saluran, menghias pesan, menyaring teks, membuat perintah, dan mengembangkan antarmuka chat kustom.
Untuk informasi lebih lanjut, lihat ikhtisar chat teks.
VoiceChatService
VoiceChatService mewakili fitur chat suara berbasis jarak yang mensimulasikan komunikasi realistis berdasarkan seberapa dekat Anda dengan pengguna lain. Anda dapat menggunakan layanan ini untuk menghidupkan dan mematikan fitur tersebut.
Untuk informasi lebih lanjut, lihat chat suara.
Folder dan model
Ada dua metode utama untuk mengelompokkan objek dalam model data: folder dan model. Keduanya adalah kontainer untuk objek, tetapi memiliki tujuan yang berbeda.
- Folder paling baik untuk menyimpan bagian dari lingkungan, seperti lobi atau arena pertempuran.
- Model digunakan untuk sekumpulan objek, seperti set meja yang mencakup kursi, meja, dan lampu. Untuk mengatur set yang lebih kompleks, letakkan model di dalam model.
Anda harus selalu memberi nama objek Anda dengan deskriptif. Ini memudahkan untuk menemukan dan memodifikasi objek di kemudian hari jika diperlukan.

