Lewati ke konten

6. Buat checkpoint

Di akhir materi ini, kamu akan bisa:

  • Membedakan peran SpawnLocation awal dan Checkpoint.
  • Mengorganisir checkpoint di dalam Folder Checkpoints menggunakan Part Pad dan atribut Stage.
  • Membuat CheckpointService di ServerScriptService.
  • Mengatur progres berurutan (Stage 1 -> Stage 2 -> dst.).
  • Menempatkan karakter di posisi checkpoint aktif saat respawn dengan CharacterAdded.
  • Selesaikan materi Tambahkan hazard.
  • Pastikan kamu memiliki satu SpawnLocation awal di area mulai.
  • Pastikan modul Leaderboard dan PlayerData sudah ada di ServerStorage.

Sebelum membuat objeknya, pahami dulu perbedaannya:

  • SpawnLocation (SpawnPoint Awal): Tempat pemain pertama kali muncul saat baru bergabung (join game). Dalam satu map obby sederhana, cukup sediakan satu SpawnLocation utama.
  • Checkpoint: Titik simpan progres level di tengah rute. Kita menggunakan Part/Model biasa untuk checkpoint agar pemain baru tidak muncul sembarangan di tengah rintangan.
  1. Di dalam Workspace.Map (atau Workspace.World), buat sebuah Folder bernama Checkpoints.
  2. Buat sebuah Part bernama Pad (sebagai pijakan checkpoint), atur Anchored = true, CanCollide = true, dan beri warna hijau/neon.
  3. Klik kanan pada part Pad dan pilih Group as Model. Ubah nama Model menjadi Checkpoint_1.
  4. Di panel Properties untuk Checkpoint_1, tambahkan Attribute baru:
    • Name: Stage
    • Type: number
    • Value: 1
  5. Masukkan model Checkpoint_1 ke dalam folder Checkpoints.
  6. Kamu bisa menduplikasi model ini menjadi Checkpoint_2 dengan attribute Stage = 2 di area rute berikutnya.

2. Buat CheckpointService di ServerScriptService

Section titled “2. Buat CheckpointService di ServerScriptService”
  1. Di ServerScriptService, buat sebuah Script baru.
  2. Ubah namanya menjadi CheckpointService.
  3. Isi kodenya dengan:
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;
Step["<b>Injak Pad</b><br/>pad.Touched"]:::trigger
Check{"<b>Validasi</b><br/>Stage berikutnya?"}:::condition
Save["<b>Simpan Progres</b><br/>Update Stage di leaderboard"]:::action
Ignore(["<b>Abaikan</b><br/>Sudah lewat"]):::finish
Respawn["<b>Respawn</b><br/>CharacterAdded"]:::trigger
Teleport(["<b>Teleportasi</b><br/>Pindah ke Pad aktif"]):::finish
Step --> Check
Check -- "Ya" --> Save
Check -- "Tidak" --> Ignore
Respawn --> Teleport
  1. Tekan Play dan pastikan statistik Stage di leaderboard bernilai 1.
  2. Lewati rintangan hingga mencapai Checkpoint_1 (Stage 2).
  3. Injak pad checkpoint dan pastikan Stage di leaderboard berubah menjadi 2.
  4. Kalahkan karaktermu (sentuh hazard atau gunakan menu Reset Character).
  5. Pastikan karaktermu muncul kembali tepat di atas checkpoint Stage 2, bukan di spawn awal.

Materi ini selesai jika:

  • Seluruh model checkpoint berada di dalam folder Checkpoints dan memiliki part Pad serta atribut Stage;
  • CheckpointService aktif di dalam ServerScriptService;
  • angka Stage di leaderboard bertambah secara berurutan saat checkpoint disentuh;
  • karakter respawn tepat di atas checkpoint stage terakhir;
  • tidak ada pesan error merah di jendela Output.

Tambahkan efek visual atau suara saat checkpoint disentuh (misal partikel Sparkles atau perubahan warna part Pad menjadi hijau terang).

Kamu telah membuat sistem checkpoint profesional menggunakan CheckpointService. Sistem ini mengelola urutan stage dan teleportasi respawn secara otomatis tanpa menyentuh pengaturan rumit SpawnLocation.