Bagi banyak pengembang, tantangan utama dalam beradaptasi dengan pemrograman Roblox adalah pentingnya lokasi file dan properti Script.RunContext. Tergantung pada jenis skrip, lokasi di Explorer, dan konteks eksekusi, skrip dapat berperilaku sangat berbeda. Panggilan metode tertentu mungkin gagal, objek dalam permainan Anda mungkin tidak dapat diakses, atau skrip mungkin tidak dijalankan sama sekali.
Alasan untuk kompleksitas ini adalah bahwa permainan Roblox adalah multipemain secara default. Skrip perlu memiliki kemampuan untuk hanya dijalankan di server, hanya dijalankan di klien, atau dibagikan antara keduanya. Evolusi platform Roblox dari waktu ke waktu semakin memperumit situasi.
Tipe skrip
Roblox memiliki tiga jenis skrip:
- Script - Kode yang dijalankan baik di server atau di klien, tergantung pada lokasinya dan properti Script.RunContext.
- LocalScript - Kode yang hanya dijalankan di klien. Tidak memiliki konteks eksekusi.
- ModuleScript - Kode yang dapat Anda gunakan kembali dalam skrip lain. Tidak memiliki konteks eksekusi.
Ketika Anda membuat Script, konteks eksekusinya yang default adalah Legacy, yang berarti a) ini adalah skrip sisi server dan b) hanya dijalankan jika berada di dalam kontainer server, seperti Workspace atau ServerScriptService.
- Jika Anda mengubah konteks eksekusi skrip menjadi Server, ia sekarang juga dapat dijalankan di ReplicatedStorage, tetapi itu tidak disarankan. Isi lokasi itu direplikasi ke klien, sehingga itu adalah lokasi yang buruk untuk skrip sisi server.
- Jika Anda mengubah konteks eksekusi skrip menjadi Client, ia dapat dijalankan di ReplicatedStorage. Ia juga dapat dijalankan di StarterCharacterScripts dan StarterPlayerScripts. Kontainer Starter disalin ke klien, jadi skrip asli dan salinannya dijalankan, yang tidak diinginkan.
Untuk mengubah konteks eksekusi skrip, pilih skrip tersebut di Explorer dan ubah nilainya di jendela Properties.

Rekomendasi
Masukkan skrip klien ke dalam ReplicatedStorage dengan RunContext dari Client bersama dengan ModuleScripts khusus klien.
Saat melakukan debug di Studio, Anda dapat mengklik baris di jendela Output dan pergi ke ReplicatedStorage.YourScript (lokasi stabil dari skrip) daripada Players.YourName.PlayerScripts.YourScript (lokasi sementara yang disalin skrip pada waktu eksekusi).
Masukkan skrip server ke dalam ServerScriptService dengan RunContext dari Server bersama dengan ModuleScripts khusus server.
Untuk membagikan kode antara skrip server dan klien, gunakan ModuleScripts di ReplicatedStorage.
Masukkan jumlah minimal skrip klien (seperti skrip pemuatan) ke dalam ReplicatedFirst dengan RunContext dari Client. Untuk mempelajari lebih lanjut, lihat Urutan replikasi.
Gunakan LocalScripts di StarterCharacterScripts, StarterPlayerScripts, StarterGui, dan StarterPack.
Lokasi skrip
| Location | Description |
|---|---|
| Workspace | Mewakili dunia 3D permainan. Lokasi ini cocok untuk skrip server yang terhubung langsung ke objek dan mengontrol perilakunya. |
| ReplicatedFirst | Menyimpan objek yang direplikasi ke klien sebelum yang lain. Lokasi ini ideal untuk set objek dan skrip klien minimal yang diperlukan untuk menampilkan layar pemuatan. |
| ReplicatedStorage | Menyimpan 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. |
| ServerScriptService | Menyimpan skrip server. Lokasi ini ideal untuk skrip yang perlu mengakses fungsionalitas atau objek sisi server, seperti logika permainan dan penyimpanan cloud. |
| ServerStorage | Menyimpan 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. |
| StarterPlayer ⟩ StarterCharacterScripts | Menyimpan LocalScripts yang dijalankan saat karakter muncul. |
| StarterPlayer ⟩ StarterPlayerScripts | Menyimpan LocalScripts serba guna yang dijalankan saat pemain bergabung ke permainan. |
| StarterGui | Menyimpan 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. |
| StarterPack | Umumnya hanya menyimpan Tools, tetapi juga dapat menyertakan LocalScripts untuk menyiapkan ransel pemain. |
Gambar ini menunjukkan lokasi mana di jendela Explorer yang bisa memuat skrip klien. Ingat, ReplicatedFirst dan ReplicatedStorage dapat memuat Scripts dengan RunContext dari Client, sedangkan kontainer Starter[] sebaiknya menggunakan LocalScripts.

Struktur proyek contoh
Proyek referensi Plant menunjukkan bagaimana Anda mungkin mengatur kode Anda dalam permainan besar yang kompleks.
Yang patut diperhatikan adalah bagaimana ia menyimpan sebagian besar kode sebagai ModuleScripts yang dapat digunakan kembali di ReplicatedStorage dan ServerStorage.