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

Dapatkan paket
Toko Pembuat adalah tab dari Toolbox 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 permainan yang terbuka, termasuk paket fitur!
Setiap paket fitur memerlukan paket fitur Core untuk berfungsi dengan baik. Setelah aset paket fitur Core dan Misi ada dalam inventaris Anda, Anda dapat menggunakannya kembali di proyek mana pun di platform.
Untuk mendapatkan paket dari inventaris Anda ke dalam permainan Anda:
Tambahkan Core dan Misi ke inventaris Anda dalam Studio dengan mengklik tautan Tambahkan ke Inventaris dalam set komponen berikut.
Dari menu Jendela Studio atau toolbar tab Beranda, buka Toolbox.
Di jendela Toolbox, klik tab Inventaris. Penyortiran Model Saya ditampilkan.

Klik ubin Paket Fitur Core, lalu ubin Paket Fitur Misi. Kedua folder paket ditampilkan di jendela Explorer.
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 dalam ReplicatedStorage.Missions.Configs.Missions, dengan tipe yang diekspor dari skrip Types di folder yang sama.
Bidang yang Diperlukan
Bidang berikut diperlukan untuk setiap misi.
| Nama | Tipe | 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
Secara default, misi dibuka untuk pemain secara otomatis dan dapat diselesaikan tepat sekali. Namun, Anda dapat menggunakan opsi konfigurasi opsional berikut untuk mengubah perilaku ini.
| Nama | Tipe | Deskripsi |
|---|---|---|
| prerequisites | table | Daftar missionIds lain yang harus diselesaikan sebelum misi dapat dibuka. |
| manualOnly | bool | Menonaktifkan pembukaan otomatis misi. Sebagai gantinya, fungsi harus dipanggil untuk membuka misi. Setiap kondisi pembukaan lainnya 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 akan dibuka kembali setelah diselesaikan. |
| repeatLimit | number | Jika misi dapat diulang, tidak dapat diulang lebih dari jumlah ini. |
| repeatCooldownSeconds | number | Jika misi dapat diulang, ada penundaan sebelum misi dibuka kembali. |
| expireSeconds | number | Jika misi dibuka dan tidak diselesaikan dalam jumlah detik yang ditentukan, maka misi akan gagal. |
| expireCountOffline | bool | Jika misi memiliki expireSeconds dan expireCountOffline disetel ke true, waktu saat pemain tidak berada di dalam permainan akan dihitung menuju kedaluwarsa misi. |
Metadata
Misi memiliki metadata yang menentukan bagaimana mereka akan ditampilkan di antarmuka pengguna Misi. Anda dapat menggunakan bidang opsional berikut untuk menyesuaikan metadata-nya.
| Nama | Tipe | Deskripsi |
|---|---|---|
| displayName | string | Nama yang 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 disetel ke true, misi akan muncul dalam daftar misi bahkan setelah diselesaikan tetapi ditandai sebagai selesai. |
| visibleAfterFailed | bool | Jika disetel ke true, misi akan muncul dalam daftar misi bahkan setelah gagal tetapi ditandai sebagai gagal. |
| visibleBeforeUnlocked | bool | Jika disetel ke true, misi akan terlihat tetapi terkunci dalam daftar misi sebelum tersedia untuk diselesaikan. |
| invisibleWhileActive | bool | Jika disetel ke true, misi akan tidak terlihat bahkan saat sedang dalam proses aktif. |
| rewards | table | Daftar informasi tampilan hadiah.
|
Definisikan tugas
Setiap misi dapat memiliki nol atau lebih tugas. Jika sebuah misi memiliki nol tugas, misi dapat diklaim segera setelah dibuka; jika sebuah misi memiliki satu atau lebih tugas, setelah tugas selesai, pemain dapat mengumpulkan hadiah yang terkait dengan misi tersebut. Setiap tugas memiliki taskId, yang merupakan kunci yang terkait dengan tugas untuk misi tertentu.
Tugas datang dalam dua tipe:
- Tugas Berbasis Waktu - Memungkinkan Anda untuk memulai dan menghentikan tugas pada titik waktu yang berbeda. Sejumlah waktu tertentu harus berlalu saat timer tugas berjalan, kemudian tugas selesai.
- Tugas Hitung - Memungkinkan Anda untuk menambah atau mengatur kemajuan tugas. Ketika kemajuan mencapai nilai yang ditetapkan, tugas selesai.
Kedua tipe tugas berbagi bidang berikut:
| Nama | Tipe | Deskripsi |
|---|---|---|
| taskType | string | Menentukan apakah tipe tugas adalah hitung atau berbasis waktu. |
| counter | object | (Opsional) Penghitung yang dilacak tugas ini. Penghitung adalah penyimpanan persisten spesifik pemain untuk sebuah 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 secara independen melacak koin baru yang dikumpulkan, mulai dari nol, atau melanjutkan 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 selesai.
| Nama | Tipe | Deskripsi |
|---|---|---|
| goalCount | number | (Opsional) Kemajuan yang diperlukan untuk menyelesaikan tugas. |
Bidang Tugas Waktu
Tugas waktu memiliki jumlah waktu target yang dihabiskan, dan dimulai dan dihentikan. Ketika jumlah waktu target tercapai, tugas selesai.
| Nama | Tipe | 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 menyertakan waktu yang dihabiskan saat pemain tidak aktif dalam permainan. |
Konfigurasi kategori
Kategori tidak perlu didefinisikan secara eksplisit untuk digunakan, karena kategori untuk sebuah misi memiliki nilai default yang akan digunakan. Namun, Anda dapat mengonfigurasi nilai-nilai ini di ReplicatedStorage.Missions.Configs.Categories untuk menambahkan efek tambahan pada kategori. Kategori diidentifikasi dengan CategoryIds unik, yang sama dengan yang dirujuk dalam konfigurasi misi.
| Nama | Tipe | Deskripsi |
|---|---|---|
| repeatDelaySeconds | number | (Opsional) Jika disetel, semua misi dalam kategori direset setiap kali jumlah waktu yang ditentukan berlalu, dan dapat dibuka, diselesaikan, dan hadiahnya diklaim lagi. Ini terpisah dari misi yang dapat diulang, yang dapat diulang dalam kategori tertentu. |
Integrasikan logika server
Lihat ReplicatedStorage.Missions.Server.Examples.MissionsExample, yang menunjukkan bagaimana server Anda akan berinteraksi dengan paket fitur Misi.
Anda terutama perlu menghubungkan empat hal setelah menyeret paket fitur Misi ke dalam permainan Anda:
Definisikan misi dalam konfigurasi misi Anda.
Tambahkan logika ke permainan Anda untuk memperbarui kemajuan tugas atau penghitung yang terkait dengan kemajuan tersebut.
README-- Meningkatkan kemajuan pada misi Melompat dengan tugas JumpsMissions.addProgressToTask(player, "Melompat", "Jumps", 1)-- Memulai timer pada misi WaktuBertarung dengan tugas WaktuDalamPertarunganMissions.startTimedTask(player, "WaktuBertarung", "WaktuDalamPertarungan")-- Menghentikan timer pada misi WaktuBertarung dengan tugas WaktuDalamPertarunganMissions.stopTimedTask(player, "WaktuBertarung", "WaktuDalamPertarungan")-- Meningkatkan kemajuan pada semua tugas yang terkait dengan penghitung JumpsCounterSystem.addCounter(player, "Jumps", 1)-- Memulai timer pada semua tugas berbasis waktu yang terkait dengan penghitung WaktuDalamPertarunganCounterSystem.startTimer(player, "WaktuDalamPertarungan")-- Menghentikan timer pada semua tugas berbasis waktu yang terkait dengan penghitung WaktuDalamPertarunganCounterSystem.stopTimer(player, "WaktuDalamPertarungan")Atur penangan penyelesaian misi, dan opsional penangan pembukaan atau kegagalan. Gunakan penangan penyelesaian untuk memberikan hadiah dari misi dalam permainan Anda.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} menyelesaikan misi {missionId}`)-- Berikan hadiah kepada pemain.endMissions.setCompletionHandler(missionId, completeHandler)Buka misi yang tidak dibuka secara otomatis. Logika paket fitur Misi memastikan bahwa semua persyaratan misi terpenuhi sebelum misi selesai, dan hadiahnya dapat dikumpulkan.
READMEMissions.unlockMission(player, "Manual")
Konfigurasi konstanta
Konstanta untuk paket fitur Core berada di dua tempat:
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 dibagi menjadi satu lokasi: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
Kustomisasi komponen UI
Dengan memodifikasi objek paket, seperti warna, font, dan transparansi, Anda dapat menyesuaikan presentasi visual dari UI misi Anda. Misalnya, di ReplicatedStorage.Missions.Configs.Constants, Anda dapat mengaktifkan SingleTaskMode untuk menampilkan bilah kemajuan untuk tugas langsung di misi itu sendiri untuk misi yang hanya memiliki satu tugas.
Selain itu, jika permainan Anda sudah memiliki UI yang ada yang ingin Anda integrasikan dengan paket fitur Misi, klien ModuleScript MissionsClient berisi semua fungsi yang diperlukan untuk mendapatkan informasi tentang misi pemain yang dikirim dari server.