Lewati ke konten

2. Kelola data dan leaderboard

Setelah memahami cara kerja skrip server dasar, langkah selanjutnya adalah menyiapkan sistem penyimpanan data pemain. Di Roblox, kita memisahkan logika data ke dalam ModuleScript di dalam ServerStorage agar kodenya rapi, modular, dan dapat dipakai ulang oleh skrip lain.

Di akhir materi ini, kamu akan bisa:

  • Memahami konsep dan kegunaan ModuleScript di ServerStorage.
  • Membuat modul Leaderboard untuk menampilkan papan skor (leaderstats) di layar pemain.
  • Membuat modul PlayerData untuk menyimpan data sesi sementara (Coins, Jump, Stage).
  • Memahami cara kerja fungsi baca (getValue) dan ubah (updateValue) data.
  • Selesaikan materi Buat script pertamamu.
  • Buka project Coin Adventure.
  • Pastikan jendela Explorer terbuka.
  • ServerStorage: Folder penyimpanan khusus server. Objek dan modul di sini aman dan tidak direplikasi ke client (pemain).
  • ModuleScript: Skrip khusus yang berisi kumpulan fungsi atau data yang dapat diekspor dan dipanggil oleh skrip lain menggunakan perintah require().

Modul ini bertugas membuat folder leaderstats di bawah karakter pemain agar Roblox menampilkan papan skor di pojok kanan atas layar secara otomatis.

  1. Di Explorer, arahkan kursor ke ServerStorage, lalu klik tanda +.
  2. Tambahkan sebuah ModuleScript dan beri nama Leaderboard.
  3. Isi dengan kode berikut:
flowchart LR
classDef trigger fill:#0369a1,stroke:#38bdf8,stroke-width:2px,color:#ffffff;
classDef condition fill:#b45309,stroke:#f59e0b,stroke-width:2px,color:#ffffff;
classDef action fill:#047857,stroke:#10b981,stroke-width:2px,color:#ffffff;
classDef finish fill:#334155,stroke:#94a3b8,stroke-width:2px,color:#ffffff;
Init["<b>Inisialisasi</b><br/>Leaderboard = {}"]:::trigger
Call["<b>Panggil Fungsi</b><br/>setStat(player, stat, val)"]:::trigger
Check{"<b>Validasi</b><br/>Folder / Stat ada?"}:::condition
Create["<b>Buat Objek</b><br/>Folder leaderstats / IntValue"]:::action
Update["<b>Update Nilai</b><br/>stat.Value = val"]:::action
Done["<b>Selesai</b><br/>return Leaderboard"]:::finish
Init --> Call --> Check
Check -- "Belum ada" --> Create --> Update
Check -- "Sudah ada" --> Update
Update --> Done

Modul ini bertugas menyimpan data sementara pemain selama berada di dalam server game, seperti jumlah koin, kekuatan lompat, dan nomor stage aktif.

  1. Di ServerStorage, klik tanda + lagi dan tambahkan ModuleScript kedua.
  2. Beri nama PlayerData.
  3. Isi dengan kode berikut:
flowchart LR
classDef trigger fill:#0369a1,stroke:#38bdf8,stroke-width:2px,color:#ffffff;
classDef condition fill:#b45309,stroke:#f59e0b,stroke-width:2px,color:#ffffff;
classDef action fill:#047857,stroke:#10b981,stroke-width:2px,color:#ffffff;
classDef finish fill:#334155,stroke:#94a3b8,stroke-width:2px,color:#ffffff;
Init["<b>Inisialisasi</b><br/>Tabel playerData = {}"]:::trigger
Get["<b>getValue</b><br/>Baca data pemain"]:::trigger
Update["<b>updateValue</b><br/>Hitung data baru"]:::trigger
Process["<b>Akses Memori</b><br/>Ambil data sesi UserId"]:::action
Save["<b>Simpan Nilai</b><br/>data[key] = newValue"]:::action
Done["<b>Kembalikan Data</b><br/>return nilai / PlayerData"]:::finish
Init --> Process
Get --> Process --> Done
Update --> Process --> Save --> Done

Pelajaran ini selesai jika:

  • Leaderboard berada di dalam ServerStorage sebagai ModuleScript;
  • PlayerData berada di dalam ServerStorage sebagai ModuleScript;
  • kedua modul mengembalikan tabel masing-masing tanpa error sintaks.