Paket fitur Misi menawarkan fungsionalitas siap pakai untuk membuat misi yang dapat diselesaikan pemain untuk mencapai imbalan dan kemajuan dalam pengalaman Anda. Semua misi harus memiliki ID, kategori, dan daftar tugas yang harus diselesaikan pemain untuk menyelesaikan misi. Namun, daftar tugas dapat kosong, memungkinkan imbalan misi untuk diklaim segera.
Dengan opsi kustomisasi paket ini, Anda dapat mempersonalisasi semua misi agar sesuai dengan kebutuhan gameplay unik Anda, seperti:
- Membuat misi yang membimbing pemain baru ke dalam pengalaman Anda dan meningkatkan retensi D1.
- Menargetkan retensi D7 dan D30 dengan menambahkan tujuan jangka menengah hingga panjang dan rasa kemajuan.
- Meningkatkan keterlibatan dengan memperkenalkan berbagai sistem dalam permainan Anda dan memberikan imbalan kepada pemain atas interaksi mereka dengan sistem tersebut.

Dapatkan paket
Toko Pembuat adalah tab dari Kotak Alat yang dapat Anda gunakan untuk menemukan semua aset yang dibuat oleh Roblox dan komunitas Roblox untuk digunakan dalam proyek Anda, termasuk model, gambar, mesh, audio, plugin, video, dan aset font. Anda dapat menggunakan Toko Pembuat untuk menambahkan satu atau lebih aset langsung ke dalam pengalaman yang terbuka, termasuk paket fitur!
Setiap paket fitur memerlukan paket fitur Inti agar berfungsi dengan baik. Setelah aset paket fitur Inti dan Misi berada dalam inventaris Anda, Anda dapat menggunakannya kembali dalam proyek mana pun di platform.
Untuk mendapatkan paket dari inventaris Anda ke dalam pengalaman Anda:
Tambahkan Inti dan Misi ke inventaris Anda dalam Studio dengan mengklik tautan Tambah ke Inventaris di set komponen berikut.
Dari menu Jendela Studio atau bilah alat tab Beranda, buka Kotak Alat.
Di jendela Kotak Alat, klik tab Inventaris. Sortir Model Saya ditampilkan.

Klik ubin Paket Fitur Inti, lalu klik ubin Paket Fitur Misi. Kedua folder paket ditampilkan di jendela Penjelajah.
Seret folder paket ke dalam ReplicatedStorage.
Definisikan misi
Setiap misi yang dapat diselesaikan mencakup serangkaian tugas yang harus diselesaikan untuk menyelesaikan misi, opsi konfigurasi, dan metadata tampilan opsional, semuanya dapat didefinisikan di dalam ReplicatedStorage.Missions.Configs.Missions, dengan tipe yang diekspor dari skrip Types di folder yang sama.
Bidang yang Diperlukan
Bidang berikut ini diperlukan untuk setiap misi.
| Nama | Jenis | Deskripsi |
|---|---|---|
| missionId | string | Kunci tabel Misi utama. Semua misi diidentifikasi dengan string unik mereka sendiri. |
| categoryId | string | Misi harus termasuk dalam kategori, dan dikelompokkan berdasarkan kategori di UI. |
| tasks | table | Daftar tugas yang harus diselesaikan pemain untuk menyelesaikan misi. |
Kondisi Pembukaan Kunci
Secara default, misi dibuka kuncinya untuk pemain secara otomatis dan dapat diselesaikan sekali. Namun, Anda dapat menggunakan opsi konfigurasi opsional berikut untuk mengubah perilaku ini.
| Nama | Jenis | Deskripsi |
|---|---|---|
| prerequisites | table | Daftar missionId lain yang harus diselesaikan sebelum misi dapat dibuka kuncinya. |
| manualOnly | bool | Menonaktifkan pembukaan kunci misi secara otomatis. Sebagai gantinya, sebuah fungsi harus dipanggil untuk membuka kunci misi. Setiap kondisi pembukaan kunci lain juga harus dipenuhi. |
| availableAfterUtc | bool | Misi tidak dapat dibuka sebelum waktu yang ditentukan dalam UTC. |
| availableBeforeUtc | bool | Misi tidak dapat dibuka setelah waktu yang ditentukan dalam UTC. Jika dibuka tetapi tidak diselesaikan sebelum waktu ini, misi akan gagal. |
| repeatable | bool | Misi dibuka kembali setelah diselesaikan. |
| repeatLimit | number | Jika misi dapat diulang, maka tidak dapat diulang lebih dari jumlah kali ini. |
| repeatCooldownSeconds | number | Jika misi dapat diulang, ada penundaan sebelum misi dibuka kuncinya. |
| expireSeconds | number | Jika misi dibuka dan tidak diselesaikan dalam waktu yang ditentukan dalam detik, maka misi akan gagal. |
| expireCountOffline | bool | Jika misi memiliki expireSeconds dan expireCountOffline diset ke true, waktu saat pemain tidak benar-benar berada dalam pengalaman akan dihitung terhadap kedaluwarsa misi. |
Metadata
Misi memiliki metadata yang menentukan bagaimana mereka akan ditampilkan dalam antarmuka pengguna Misi. Anda dapat menggunakan bidang opsional berikut untuk menyesuaikan metadata-nya.
| Nama | Jenis | Deskripsi |
|---|---|---|
| displayName | string | Sebuah nama untuk ditampilkan untuk misi di antarmuka pengguna alih-alih missionId. |
| description | string | Blok teks yang lebih panjang yang memberikan informasi atau konteks tambahan tentang misi. |
| visibleAfterComplete | bool | Jika diset ke true, misi akan muncul dalam daftar misi meskipun setelah diselesaikan tetapi ditandai sebagai diselesaikan. |
| visibleAfterFailed | bool | Jika diset ke true, misi akan muncul dalam daftar misi meskipun setelah gagal tetapi ditandai sebagai gagal. |
| visibleBeforeUnlocked | bool | Jika diset ke true, misi akan terlihat tetapi terkunci dalam daftar misi sebelum tersedia untuk diselesaikan. |
| invisibleWhileActive | bool | Jika diset ke true, misi akan tidak terlihat bahkan saat sedang aktif dikerjakan. |
| rewards | table | Daftar informasi tampilan imbalan.
|
Definisikan tugas
Setiap misi dapat memiliki nol atau lebih tugas. Jika misi memiliki nol tugas, misi dapat diklaim segera setelah dibuka; jika sebuah misi memiliki satu atau lebih tugas, setelah tugas selesai, pemain dapat mengumpulkan imbalan yang terkait dengan misi. Setiap tugas memiliki taskId, yang merupakan kunci yang terkait dengan tugas untuk misi tertentu.
Tugas hadir dalam dua jenis:
- Tugas Berdurasi - Memungkinkan Anda memulai dan menghentikan tugas pada titik yang berbeda dalam waktu. Sejumlah waktu tertentu harus berlalu sementara timer tugas berjalan, kemudian tugas dinyatakan selesai.
- Tugas Hitung - Memungkinkan Anda menambahkan atau mengatur kemajuan tugas. Ketika kemajuan mencapai nilai yang ditentukan, tugas dinyatakan selesai.
Kedua jenis tugas memiliki bidang berikut:
| Nama | Jenis | Deskripsi |
|---|---|---|
| taskType | string | Menentukan jika tipe tugas adalah hitung atau waktu. |
| counter | object | (Opsional) Penghitung yang dilacak tugas ini. Penghitung adalah penyimpanan permanen yang spesifik untuk pemain untuk angka atau timer. Beberapa tugas dapat melacak satu penghitung; misalnya, jika lebih dari satu tugas melacak berapa banyak koin yang telah dikumpulkan pemain, maka semuanya dapat berbagi penghitung “koin” yang sama. Tugas-tugas ini dapat melacak koin baru yang dikumpulkan secara independen, mulai dari nol, atau terus menghitung dari nilai penghitung (semua koin yang sudah dikumpulkan).
|
| metadata | object | (Opsional) Informasi tentang bagaimana tugas ditampilkan di UI.
|
| callToAction | object | (Opsional) Sebuah tombol yang memicu fungsi callback.
|
Bidang Tugas Hitung
Tugas hitung memiliki nilai yang diperlukan. Ketika kemajuan tugas memenuhi jumlah ini, tugas dianggap selesai.
| Nama | Jenis | Deskripsi |
|---|---|---|
| goalCount | number | (Opsional) Kemajuan yang diperlukan untuk menyelesaikan tugas. |
Bidang Tugas Waktu
Tugas waktu memiliki jumlah waktu target yang dihabiskan, dan dimulai serta dihentikan. Ketika jumlah waktu target tercapai, tugas dianggap selesai.
| Nama | Jenis | Deskripsi |
|---|---|---|
| goalSeconds | number | Jumlah detik yang harus berlalu untuk menyelesaikan tugas. |
| startImmediately | bool | Jika tugas harus mulai menghitung waktu segera setelah dibuka, bukan hanya setelah dimulai. |
| includesOfflineTime | bool | Jika tugas harus termasuk waktu yang dihabiskan saat pemain tidak aktif di pengalaman. |
Konfigurasi kategori
Kategori tidak perlu didefinisikan secara eksplisit untuk digunakan, karena kategori untuk suatu misi memiliki nilai default yang akan digunakan. Namun, Anda dapat mengonfigurasi nilai ini dalam ReplicatedStorage.Missions.Configs.Categories untuk menambahkan efek tambahan pada kategori. Kategori diidentifikasi dengan CategoryIds unik, yang sama yang direferensikan dalam konfigurasi misi.
| Nama | Jenis | Deskripsi |
|---|---|---|
| repeatDelaySeconds | number | (Opsional) Jika diset, semua misi dalam kategori disetel ulang setiap kali jumlah waktu yang ditentukan berlalu, dan dapat dibuka kunci, diselesaikan, dan imbalan mereka diklaim lagi. Ini terpisah dari misi yang dapat diulang, yang dapat diulang dalam kategori yang diberikan. |
Integrasikan logika server
Lihat ReplicatedStorage.Missions.Server.Examples.MissionsExample, yang menunjukkan bagaimana server Anda akan berinteraksi dengan paket fitur Misi.
Anda terutama perlu menyambungkan empat hal setelah menyeret paket fitur Misi ke dalam pengalaman Anda:
Definisikan misi dalam konfigurasi misi Anda.
Tambahkan logika ke pengalaman Anda untuk memperbarui kemajuan tugas atau penghitung yang terkait dengan kemajuan tersebut.
README-- Meningkatkan kemajuan pada misi Melompat dengan tugas MelompatMissions.addProgressToTask(player, "Melompat", "Melompat", 1)-- Memulai timer pada misi WaktuBergulat dengan tugas WaktuDalamPertarunganMissions.startTimedTask(player, "WaktuBergulat", "WaktuDalamPertarungan")-- Menghentikan timer pada misi WaktuBergulat dengan tugas WaktuDalamPertarunganMissions.stopTimedTask(player, "WaktuBergulat", "WaktuDalamPertarungan")-- Meningkatkan kemajuan pada semua tugas yang terkait dengan penghitung MelompatCounterSystem.addCounter(player, "Melompat", 1)-- Memulai timer pada semua tugas berdurasi yang terkait dengan penghitung WaktuDalamPertarunganCounterSystem.startTimer(player, "WaktuDalamPertarungan")-- Menghentikan timer pada semua tugas berdurasi yang terkait dengan penghitung WaktuDalamPertarunganCounterSystem.stopTimer(player, "WaktuDalamPertarungan")Setel pengendali penyelesaian misi, dan opsi handler pembukaan kunci atau gagal. Gunakan pengendali penyelesaian untuk memberikan imbalan dari misi dalam pengalaman Anda.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} menyelesaikan misi {missionId}`)-- Berikan imbalan kepada pemain.endMissions.setCompletionHandler(missionId, completeHandler)Buka misi yang tidak dibuka kuncinya secara otomatis. Logika paket fitur Misi memastikan semua persyaratan misi terpenuhi sebelum misi diselesaikan dan imbalannya dapat dikumpulkan.
READMEMissions.unlockMission(player, "Manual")
Konfigurasi konstanta
Konstanta untuk paket fitur Inti berada di dua lokasi:
Konstanta bersama berada di ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
Konstanta spesifik paket, dalam hal ini paket fitur Misi, berada di ReplicatedStorage.Missions.Configs.Constants.
Selain itu, Anda dapat menemukan string untuk terjemahan yang dibedakan ke dalam satu lokasi: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
Kustomisasi komponen UI
Dengan memodifikasi objek paket, seperti warna, font, dan transparansi, Anda dapat menyesuaikan presentasi visual UI misi Anda. Misalnya, di ReplicatedStorage.Missions.Configs.Constants, Anda dapat mengaktifkan SingleTaskMode untuk menampilkan bilah kemajuan untuk sebuah tugas langsung di misi itu sendiri untuk misi yang hanya memiliki satu tugas.
Selain itu, jika pengalaman Anda sudah memiliki UI yang ada yang ingin Anda integrasikan dengan paket fitur Misi, ModuleScript klien MissionsClient berisi semua fungsi yang diperlukan untuk mendapatkan informasi tentang misi pemain yang dikirim dari server.