Roblox untuk pengembang Unreal

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Halaman ini berisi informasi untuk membantu pengembang Unreal Engine berpengalaman memulai dengan Roblox, termasuk orientasi dasar, perbandingan konseptual, dan perbedaan penting antara kedua platform.

Mengenal

Antarmuka pengguna Unreal Editor dengan markup untuk menunjukkan berbagai jendela dan panel. Antarmuka pengguna Roblox Studio dengan markup untuk menunjukkan berbagai jendela dan panel.

Outliner Unreal dan Explorer Roblox Studio adalah jendela utama untuk mengorganisir elemen di ruang 3D. Keduanya menampilkan hierarki objek dan folder. Namun, Outliner memiliki struktur yang lebih datar dan kurang terdefinisi dan hanya menunjukkan Actors. Jendela Explorer memiliki struktur yang sangat bersarang dan ketat serta menampilkan semua objek sebagai bagian dari hierarki, bahkan objek yang dianggap sebagai komponen di Unreal.

Asset Manager Roblox Studio dan Toolbox tumpang tindih dengan Content Browser Unreal. Asset Manager memungkinkan Anda mengelola semua aset dalam permainan Anda, sedangkan Toolbox memungkinkan Anda mengakses aset apa pun yang telah Anda terbitkan. Toolbox juga memungkinkan Anda mencari Creator Store untuk aset dari Roblox atau komunitas, mirip dengan Marketplace Unreal Engine tetapi diakses langsung dari antarmuka pengguna Studio.

Perbedaan filosofis

Roblox adalah "mesin simulasi" daripada mesin permainan tradisional. Actors di Unreal dan Parts di Roblox keduanya berfungsi sebagai blok bangunan fundamental, tetapi dalam praktiknya, keduanya cukup berbeda:

  • Representasi: Actors di Unreal adalah konsep tingkat tinggi untuk setiap objek di level, sedangkan Parts di Roblox dirancang untuk mewakili objek fisik seperti balok kayu dan bola plastik.
  • Fisika: Untuk melakukan simulasi fisika di Unreal, Anda mengaktifkan fisika dalam komponen tertentu (seperti StaticMeshComponent) atau dengan menambahkan komponen ke Actors, seperti batas fisika. Di Roblox, fisika sudah terintegrasi dalam tipe data Parts; mesin menangani interaksi secara otomatis.

Anda dapat melihat perbedaannya segera jika Anda membuat sebuah Actor dan sebuah Part. Actor hanya memiliki sedikit lebih dari lokasi, rotasi, dan skala. Part memiliki informasi yang sama, ditambah material dan warna, nilai untuk reflektansi dan transparansi, massa dan bentuk, dan banyak lagi. Keduanya hanya mulai memiliki properti yang mirip ketika Anda membandingkan StaticMeshActor di Unreal dengan MeshPart di Roblox.

Contoh aktor Unreal di panel Details.
Panel Details Unreal Editor
Contoh bagian Roblox di jendela Properties.
Jendela Properties Roblox Studio

Perbandingan yang berguna lainnya adalah Actor Unreal dengan Model Roblox. Model bertindak sebagai wadah untuk kumpulan bagian yang saling terhubung dengan cara yang sama seperti Actors di Unreal adalah wadah untuk komponen. Anda menentukan salah satu bagian model sebagai bagian utama untuk mendefinisikan titik pivot. Model juga menyimpan skrip, animasi, efek suara, prompt, batas, pemancar partikel, dan banyak lagi.

Sebagai contoh, sebuah Actor Unreal mungkin memiliki NiagaraComponent yang menggunakan beberapa pemancar untuk mencapai efek visual yang diinginkan, sebuah mesh untuk bentuknya, batas fisika untuk menambahkan kenyal, dan skrip untuk interaktivitas pemain. Di Outliner, Anda akan melihat sebuah Actor tunggal bernama SpringyFireball.

Di Roblox, model SpringyFireball yang sebanding di jendela Explorer mungkin terlihat seperti ini:


Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

Filosofi fisika-dari-default Roblox meluas ke proses membangun model 3D. Di Roblox, mengelas beberapa bagian menjadi sebuah perakitan adalah cara yang sangat baik untuk dengan cepat membangun benda, karena Roblox memperlakukan bagian yang dilas sebagai satu tubuh kaku. Pendekatan ini tidak praktis di Unreal.

Alih-alih menggunakan satuan metrik standar untuk panjang dan massa, Roblox menggunakan satuan nominal yang disebut stud dan Roblox Mass Units (RMUs). Untuk konversi metrik yang mendekati dan rekomendasi seputar penggunaan, lihat Units.

Lokasi itu penting

Permainan Roblox adalah multiplayer secara default, sehingga Roblox Studio mencakup banyak lokasi penyimpanan berbeda dengan perilaku tertentu. Untuk informasi lebih lanjut, lihat runtime klien-server dan pengorganisasian objek.

LocationDescription
WorkspaceMewakili dunia 3D permainan. Lokasi ini cocok untuk skrip server yang terhubung langsung ke objek dan mengontrol perilakunya.
ReplicatedFirstMenyimpan objek yang direplikasi ke klien sebelum yang lain. Lokasi ini ideal untuk set objek dan skrip klien minimal yang diperlukan untuk menampilkan layar pemuatan.
ReplicatedStorageMenyimpan objek yang direplikasi ke klien dan server. Lokasi ini ideal untuk ModuleScripts yang ingin Anda gunakan di server dan klien. LocalScripts tidak dijalankan dari lokasi ini, tetapi Scripts dengan RunContext dari Client melakukannya.
ServerScriptServiceMenyimpan skrip server. Lokasi ini ideal untuk skrip yang perlu mengakses fungsionalitas atau objek sisi server, seperti logika permainan dan penyimpanan cloud.
ServerStorageMenyimpan objek sisi server. Lokasi ini ideal untuk objek besar yang tidak perlu segera direplikasi ke klien saat mereka bergabung ke permainan. Skrip tidak dijalankan dari lokasi ini, tetapi Anda dapat menyimpan ModuleScripts sisi server di sini.
StarterPlayerStarterCharacterScriptsMenyimpan LocalScripts yang dijalankan saat karakter muncul.
StarterPlayerStarterPlayerScriptsMenyimpan LocalScripts serba guna yang dijalankan saat pemain bergabung ke permainan.
StarterGuiMenyimpan elemen GUI yang ditampilkan klien saat memuat permainan. LocalScripts dapat dijalankan dari lokasi ini. Lokasi ini ideal untuk skrip yang memodifikasi antarmuka pengguna permainan, seperti menambahkan tombol, menu, dan pop-up.
StarterPackUmumnya hanya menyimpan Tools, tetapi juga dapat menyertakan LocalScripts untuk menyiapkan ransel pemain.

Pemrograman

Roblox games support three different types of Luau scripts:

  • Skrip Klien

    Skrip-skrip ini dijalankan di klien, dan server tidak memiliki visibilitas terhadap perilakunya. Karena alasan warisan, skrip ini dapat berupa LocalScripts atau Scripts dengan nilai RunContext dari Client. Skrip klien biasanya berada dalam ReplicatedStorage, StarterPlayerScripts, atau StarterCharacterScripts.

  • Skrip Server

    Skrip-skrip ini dijalankan di server, dan klien tidak memiliki visibilitas terhadap perilakunya. Skrip server memiliki nilai RunContext dari Server dan biasanya berada dalam ServerScriptService, yang kontennya tidak direplikasi ke klien.

  • Skrip Modul

    Skrip-skrip ini adalah potongan kode yang dapat digunakan kembali yang mengembalikan tepat satu nilai, biasanya sebuah fungsi atau tabel (atau tabel fungsi). Daripada menduplikasi kode dalam skrip klien dan server, gunakan skrip modul untuk berbagi kode dan data antara keduanya. Skrip modul sering kali berada dalam ReplicatedStorage, tetapi dapat berada di tempat lain jika Anda ingin berbagi kode antara skrip di sisi yang sama dari batas klien-server.

Unreal tidak memiliki konsep tipe skrip yang berbeda. Jika Anda memilih untuk membuat permainan multiplayer, 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 dalam C++ atau Blueprint. Unreal mendukung acara kustom, tetapi banyak kelas menyertakan acara yang secara otomatis dipanggil oleh mesin sebagai bagian dari siklus hidup alami level.

Dibandingkan dengan sistem "ticking" Unreal, skrip Roblox jauh lebih berbasis peristiwa. Anda mengakses fungsionalitas mesin serupa dengan berlangganan ke layanan dan mendengarkan pembaruan.

C++ dan Luau

Untuk pemrograman, Unreal menggunakan C++. Roblox menggunakan Luau, sebuah bahasa pemrograman yang berasal dari Lua 5.1.

Dibandingkan dengan Luau, C++ memiliki keuntungan kinerja secara keseluruhan, yang mungkin atau mungkin tidak relevan dengan jenis permainan yang ingin Anda bangun. Luau adalah tipe bertahap dan memiliki sintaks yang kurang verbose. Dalam proyek yang lebih besar, bagaimanapun, tipe bertahap dapat memperkenalkan kategori bug yang dihindari oleh bahasa dengan tipe yang kuat seperti C++, jadi pertimbangkan untuk mengaktifkan pemeriksaan tipe ketat dalam skrip Roblox.

Unreal juga mencakup sistem pemrograman visual yang disebut Blueprints. Roblox memiliki plugin pihak ketiga yang menawarkan fungsionalitas serupa, tetapi tidak ada sistem sebanding yang terintegrasi.

Contoh kode Luau

Contoh kode Luau berikut ini menunjukkan bagaimana cara mendengarkan input pengguna (dalam hal ini, tombol E) setelah pemain mengenakan pancingan dan memanggil fungsi tambahan:


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Ambil skrip modul dari ReplicatedStorage yang mengembalikan satu fungsi
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Mengasumsikan bahwa skrip ini adalah anak dari pancingan
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Periksa bahwa tombol ditekan, kemudian panggil fungsi lain
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Hanya aktifkan aksi ketika pemain mengenakan pancingan
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Nonaktifkan aksi ketika pemain melepas pancingan
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Skrip Roblox dapat relatif singkat karena Roblox memiliki banyak asumsi bawaan: seorang Player dengan karakter Humanoid yang terhubung ke server dan dapat dilengkapi dengan Tools. Asumsi ini tidak ada di Unreal, sehingga implementasinya akan sangat berbeda.

Aset

Unreal dan Roblox keduanya mendukung pengimporan mesh dan model kustom dalam format .fbx. Jenis aset tertentu mungkin memerlukan konfigurasi dan pengaturan ekspor khusus dari perangkat lunak pemodelan pihak ketiga Anda. Untuk informasi lebih lanjut, lihat halaman-halaman berikut:

Di Unreal, aset diimpor ke dalam direktori Content, yang terlihat di Content Browser. Di Roblox, aset diimpor ke dalam Workspace Anda dan ke Toolbox atau Asset Manager.

Roblox juga menawarkan plugin Blender sumber terbuka untuk memperlancar proses impor, mirip dengan fitur Kirim ke Unreal dari Blender Tools.

Transforms

Transformasi milik Unreal Engine dan CFrames Roblox memiliki tujuan yang serupa dalam mewakili transformasi 3D objek:

  • Baik transformasi maupun CFrames mewakili posisi dan rotasi sebuah objek di ruang 3D. Transformasi mencakup skala, sedangkan Roblox menggunakan properti BasePart.Size yang bukan bagian dari CFrame.
  • Keduanya mendukung perkalian untuk transformasi yang 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 pada file tersebut.

File Roblox hidup di cloud (meskipun Anda dapat mengekspor salinan), sehingga Roblox Studio menyediakan alur kerja kolaborasi bawaan untuk pengeditan simultan, manajemen grup, izin, draf skrip, dan lainnya. Lihat Kolaborasi.

Plugin

Mirip dengan Unreal, Roblox Studio mendukung plugin, yang dapat menyederhanakan atau memberi Anda kontrol tambahan atas berbagai aspek proses pengembangan. Plugin tersedia di Creator Store, sama seperti aset, banyak yang tersedia secara gratis.

Glosarium

UnrealRobloxCatatan
LevelPlace
ActorPart atau ModelLihat Perbedaan filosofis.
Blueprint ClassPackage
TransformCFrameCFrame tidak menyertakan informasi skala. Lihat Transforms.
OutlinerExplorer
Details panelProperties
Level Viewport3D viewport
Content BrowserAsset Manager atau Toolbox
Landscape ModeTerrain Editor
PlayerStartSpawnLocation
Output LogOutput
MarketplaceCreator Store
Menu barToolbar
PluginPlugin
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.