Halaman ini berisi informasi untuk membantu pengembang Unreal Engine berpengalaman memulai dengan Roblox: orientasi dasar, perbandingan konsep, dan perbedaan kunci antara kedua platform.
Dapatkan orientasi
Penjelajah Unreal dan Roblox Studio adalah jendela utama untuk mengatur elemen di ruang 3DKeduanya menampilkan hierarki objek dan folder.Namun, Outliner memiliki struktur yang lebih datar dan kurang terdefinisi dan hanya menunjukkan Actors .Jendela Explorer memiliki struktur yang dalam dan ketat dan menampilkan semua objek sebagai bagian dari hierarki, bahkan objek yang akan dianggap sebagai komponen di Unreal.
Manajer Aset Roblox Studio dan Toolbox tumpang tindih dengan Browser Konten Unreal.Manajer Aset memungkinkan Anda mengelola semua aset dalam pengalaman Anda, sementara Kotak Alat memungkinkan Anda mengakses aset apa pun yang telah Anda publikasikan.Toolbox juga memungkinkan Anda untuk mencari Toko Pencipta untuk aset dari Roblox atau komunitas.Toko Pencipta mirip dengan Pasar Unreal Engine, tetapi Anda dapat mengaksesnya langsung dari antarmuka pengguna Studio.
Perbedaan filosofis
Roblox adalah "mesin simulasi" daripada mesin permainan tradisional.Unreal Actors dan Roblox Parts keduanya berfungsi sebagai blok bangunan dasar, tetapi dalam praktik, keduanya cukup berbeda:
- Perwakilan : Actors di Unreal adalah konsep tingkat lebih tinggi untuk setiap objek di level, sementara Parts di Roblox dirancang untuk mewakili objek fisik seperti blok kayu dan bola plastik.
- Fisika : Untuk melakukan simulasi fisika di Unreal, Anda mengaktifkan fisika di dalam komponen tertentu (seperti StaticMeshComponent ) atau dengan menambahkan komponen ke Actors , seperti batasan fisika.Di Roblox, fisika dibangun ke dalam ketikdata Parts ; mesin menangani interaksi secara otomatis.
Anda dapat melihat perbedaan segera jika Anda membuat Actor dan Part.The Actor memiliki sedikit lebih dari lokasi, rotasi, dan skala.The Part memiliki informasi yang sama - ditambah material dan warna, nilai reflektansi dan transparansi, massa dan bentuk, dan banyak lagi.Keduanya hanya mulai berbagi properti serupa saat Anda membandingkan StaticMeshActor di Unreal (misalnyasebuah kubus) ke MeshPart di Roblox.


Perbandingan berguna lainnya adalah Unreal Actor ke Roblox Model .Model bertindak sebagai wadah untuk koleksi bagian terhubung dalam cara yang sama bahwa Actors di Unreal adalah wadah untuk komponen.Anda menentukan salah satu bagian model sebagai bagian utamanya untuk mendefinisikan titik pivot untuk mendefinisikan titik pivot.Model juga menyimpan skrip, animasi, efek suara, perintah, pemancar partikel, dan banyak lagi.
Sebagai contoh, Unreal Actor mungkin memiliki NiagraComponent yang menggunakan beberapa pemancar untuk mencapai efek visual yang diinginkan, mesh untuk bentuk, batasan fisika untuk menambahkan kelentingan, dan skrip untuk interaksi pemain.Di Outliner, Anda melihat satu Actor bernama SpringyFireball .
Di Roblox, model serupa SpringyFireball yang dapat dibandingkan di jendela Explorer mungkin terlihat seperti ini:
Model|- ParticleEmitter|- MeshPart|- SpringConstraint|- ClickDetector| |- Script
Filosofi fisika default Roblox memperluas ke proses membangun model 3D.Di Roblox, menyambungkan beberapa bagian bersama menjadi satu kumpulan adalah cara yang sangat baik untuk membangun sesuatu dengan cepat, karena Roblox memperlakukan bagian yang disambung sebagai tubuh tunggal yang kaku.Pendekatan ini tidak praktis di Unreal.
Daripada menggunakan unit metrik standar untuk panjang dan massa, Roblox menggunakan unit notional yang disebut stud dan Unit Mass Roblox (RMU).Untuk konversi dan rekomendasi metrik kira-kira dan sekitar penggunaan, lihat Unit.
Perkara lokasi
Pengalaman Roblox adalah multi-pemain secara default, jadi Roblox Studio termasuk banyak lokasi penyimpanan berbeda dengan perilaku spesifik.Sebagai contoh, skrip mungkin dijalankan saat Anda menempatkannya di ReplicatedStorage , tetapi tidak saat Anda menempatkannya di StarterPlayerScripts .Untuk informasi lebih lanjut, lihat waktu eksekusi klien-server dan organisasi objek.
Lokasi | Deskripsi :--- | :--- Ruang kerja | Mewakili dunia permainan.Lokasi ini bekerja dengan baik untuk skrip server yang terhubung langsung ke objek dan mengontrol perilaku mereka.ReplicatedFirst | Berisi objek yang dipindahkan ke klien sebelum hal lain.Lokasi ini ideal untuk set minimum absolut objek dan skrip klien yang diperlukan untuk menampilkan layar pemuatan.ReplicatedStorage | Berisi objek yang direplikasi ke klien dan server.Lokasi ini ideal untuk Class.ModuleScript\|ModuleScripts yang ingin Anda gunakan di kedua server dan klien. Class.LocalScript\|LocalScripts jangan lari dari lokasi ini, tetapi Class.Script\|Scripts dengan konteks eksekusi Client lakukan.ServerScriptService | Berisi skrip server.Lokasi ini ideal untuk skrip yang perlu mengakses fungsi atau objek sisi server, seperti logika permainan dan penyimpanan cloud.Penyimpanan Server | Berisi objek sisi server.Lokasi ini ideal untuk objek besar yang tidak perlu segera direplikasi ke klien saat mereka bergabung dengan pengalaman.Skrip tidak berjalan dari lokasi ini, tetapi Anda dapat menyimpan sisi server Class.ModuleScript\|ModuleScripts di sini.StarterPlayer.StarterCharacterScripts | Berisi Class.LocalScript\|LocalScripts yang dijalankan saat karakter muncul.StarterPlayer.StarterPlayerScripts | Berisi skrip tujuan umum Class.LocalScript\|LocalScripts yang dijalankan saat pemain bergabung dengan pengalaman.StarterGui | Berisi elemen GUI yang ditampilkan klien saat memuat permainan.Class.LocalScript\|LocalScripts dapat lari dari lokasi ini.Lokasi ini ideal untuk skrip yang memodifikasi antarmuka pengguna game, seperti menambahkan tombol, menu, dan pop-up.StarterPack | Umumnya hanya berisi Class.Tool\|Tools , tetapi juga dapat mencakup Class.LocalScript\|LocalScripts untuk mengatur ransel pemain.
Pemograman
Pengalaman Roblox mendukung tiga jenis skrip Luau yang berbeda:
Skrip klien
Skrip ini dijalankan di klien, dan server tidak memiliki visibilitas ke perilaku mereka.Untuk alasan warisan, skrip ini dapat mengambil bentuk LocalScripts atau Scripts dengan nilai RunContext dari Client.Skrip klien biasanya hidup di ReplicatedStorage , StarterPlayerScripts , atau StarterCharacterScripts .
Skrip server
Skrip ini dijalankan di server, dan klien tidak memiliki visibilitas ke perilaku mereka.Skrip server memiliki nilai RunContext dari Server dan biasanya tinggal di ServerScriptService , isi yang tidak direplikasikan ke klien game.
Skrip modul
Skrip ini adalah bagian kode yang dapat digunakan ulang yang kembali persis satu nilai, biasanya fungsi atau tabel (atau tabel fungsi).Daripada menyalin kode di skrip klien dan server, gunakan skrip modul untuk berbagi kode dan data di antara keduanya.Skrip modul sering tinggal di ReplicatedStorage , tetapi bisa tinggal di tempat lain jika Anda ingin berbagi kode di antara skrip di sisi yang sama dari batas klien-server.
Unreal tidak memiliki konsep berbagai jenis skrip.Jika Anda memilih untuk membuat gamemultiplayer, Anda menulis kode tambahan untuk menyinkronkan status permainan antara server dan klien.
Di Unreal, banyak fungsi mesin tersedia dengan memperluas kelas bawaan seperti UObject , ACharacters , ULevel , dan UWorld di C++ atau Blueprint.Unreal mendukung acara khusus, tetapi banyak kelas termasuk acara yang diundangkan mesin secara otomatis sebagai bagian dari siklus kehidupan alami level.
Dibandingkan dengan sistem "tiking" Unreal, skrip Roblox jauh lebih berbasis acara.Anda mengakses fungsi mesin serupa dengan berlangganan ke layanan dan mendengarkan pembaruan.
C++ dan Luau
Untuk scripting, Unreal menggunakan C++. Roblox menggunakan Luau , bahasa penulisan skrip yang berasal dari Lua 5.1 .
Dibandingkan dengan Luau, C++ memiliki keuntungan kinerja keseluruhan, yang mungkin atau mungkin tidak relevan dengan jenis pengalaman yang ingin Anda buat.Luau secara bertahap ditiketkan dan memiliki syntax yang kurang bertele-tele.Namun, dalam proyek yang lebih besar, pengetikan bertahap dapat memperkenalkan kategori bug yang kuat ditulis dalam bahasa seperti C++, jadi pertimbangkan untuk mengaktifkan pemeriksaan tipe ketat di skrip Roblox.
Unreal juga termasuk sistem skrip visual yang disebut Blueprints.Roblox memiliki plugin pihak ketiga yang menawarkan fungsionalitas serupa, tetapi tidak ada sistem pembanding yang dibangun.
Contoh kode Luau
Contoh kode Luau berikut menunjukkan cara, setelah pemain memasang tongkat memancing, mendengarkan input pengguna (dalam kasus ini, kunci E ) dan memanggil fungsi tambahan:
-- Dapatkan layanan permainan yang diperlukan
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Dapatkan skrip modul dari ReplicatedStorage yang mengembalikan fungsi tunggal
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Mengasumsikan bahwa skrip ini adalah anak dari tiang pancing
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Periksa bahwa kunci turun, lalu panggil fungsi lain
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Hanya aktifkan tindakan ketika pemain memakai tongkat memancing
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Nonaktifkan tindakan saat pemain melepaskan tongkat memancing
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)
Skrip Roblox dapat relatif singkat karena Roblox memiliki banyak asumsi bawaan: a Player dengan karakter Humanoid yang terhubung ke server dan dapat dilengkapi Tools .Asumsi ini tidak ada di Unreal, jadi implementasinya akan sangat berbeda.
Aktiva
Unreal dan Roblox keduanya mendukung impor meshes dan model khusus dalam format .fbx .Beberapa jenis aset mungkin memerlukan konfigurasi dan pengaturan ekspor khusus dari perangkat lunak pemodelan pihak ketiga.Untuk informasi lebih lanjut, lihat halaman berikut:
Di Unreal, aset diimpor ke direktori Content Anda, terlihat di Browser Konten.Di Roblox, aset diimpor ke Workspace Anda dan ke bagian Toolbox atau Inventaris dari Manajer Aset.
Roblox juga menawarkan plugin Blender open source untuk mempercepat proses impor, mirip dengan fitur Kirim ke Unreal dari Alat Blender.
Transformasi
Transformasi props.engine dan Roblox's CFrames melayani tujuan serupa dalam mewakili transformasi 3D objek:
- Kedua transformasi dan CFrames mewakili posisi dan rotasi objek di ruang 3D.Transformasi termasuk skala, sementara Roblox menggunakan properti BasePart.Size yang bukan bagian dari CFrame.
- Keduanya mendukung penggandaan (yaitu komposisi) untuk transformasi kompleks dan memiliki metode bawaan untuk manipulasi lainnya.
Kolaborasi
Di Unreal, Anda berkolaborasi dengan sistem kontrol versi seperti Perforce atau SVN, umumnya melalui antarmuka pengguna bawaan Unreal.Sistem kontrol versi ini menggunakan model "checkout" terpusat yang mengunci file saat satu orang bekerja di atasnya.
File Roblox hidup di cloud (meskipun Anda dapat mengekspor salinan), jadi Roblox Studio menyediakan alur kerja kolaborasi bawaan untuk editing bersamaan, manajemen kelompok, izin, menyusun naskah, dan banyak lagi.Lihat Kolaborasi.
Plugin
Mirip dengan Unreal, Roblox Studio mendukung plugin , yang dapat mempermudah atau memberi Anda kontrol tambahan atas berbagai aspek proses pengembangan.Plugin tersedia di Toko Pencipta, seperti aset, banyak gratis.
Kamus
| Tidak nyata | Roblox | Catatan | | :--- | :--- | :--- | | Level | Tempat | | | Aktor | Part atau Model | Lihat Perbedaan filosofis .| | Kelas Rancangan | Paket | | | Transformasi | CFrame | CFrame Tidak termasuk informasi skala.Lihat Transformasi.| | Outliner | Jendela Explorer | | | Panel Detail | Jendela Properti | | Level Viewport | Viewport | | | Browser Konten | Manajer Aset atau Kotak Alat | | | Mode Lanskap | Editor Tanah | | | Pemain Mulai | SpawnLocation | | | Log Output | Output | | | Pasar | Toko Pencipta | | | Bilah Menu | Bilah Menu | | | Plugin | Plugin | | |