Paket Misi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

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:

  1. Dari menu Jendela Studio atau bilah alat tab Beranda, buka Kotak Alat.

  2. Di jendela Kotak Alat, klik tab Inventaris. Sortir Model Saya ditampilkan.

    Jendela Kotak Alat Studio dengan tab Inventaris yang disorot.
  3. Klik ubin Paket Fitur Inti, lalu klik ubin Paket Fitur Misi. Kedua folder paket ditampilkan di jendela Penjelajah.

  4. 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.

NamaJenisDeskripsi
missionIdstringKunci tabel Misi utama. Semua misi diidentifikasi dengan string unik mereka sendiri.
categoryIdstringMisi harus termasuk dalam kategori, dan dikelompokkan berdasarkan kategori di UI.
taskstableDaftar 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.

NamaJenisDeskripsi
prerequisitestableDaftar missionId lain yang harus diselesaikan sebelum misi dapat dibuka kuncinya.
manualOnlyboolMenonaktifkan pembukaan kunci misi secara otomatis. Sebagai gantinya, sebuah fungsi harus dipanggil untuk membuka kunci misi. Setiap kondisi pembukaan kunci lain juga harus dipenuhi.
availableAfterUtcboolMisi tidak dapat dibuka sebelum waktu yang ditentukan dalam UTC.
availableBeforeUtcboolMisi tidak dapat dibuka setelah waktu yang ditentukan dalam UTC. Jika dibuka tetapi tidak diselesaikan sebelum waktu ini, misi akan gagal.
repeatableboolMisi dibuka kembali setelah diselesaikan.
repeatLimitnumberJika misi dapat diulang, maka tidak dapat diulang lebih dari jumlah kali ini.
repeatCooldownSecondsnumberJika misi dapat diulang, ada penundaan sebelum misi dibuka kuncinya.
expireSecondsnumberJika misi dibuka dan tidak diselesaikan dalam waktu yang ditentukan dalam detik, maka misi akan gagal.
expireCountOfflineboolJika 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.

NamaJenisDeskripsi
displayNamestringSebuah nama untuk ditampilkan untuk misi di antarmuka pengguna alih-alih missionId.
descriptionstringBlok teks yang lebih panjang yang memberikan informasi atau konteks tambahan tentang misi.
visibleAfterCompleteboolJika diset ke true, misi akan muncul dalam daftar misi meskipun setelah diselesaikan tetapi ditandai sebagai diselesaikan.
visibleAfterFailedboolJika diset ke true, misi akan muncul dalam daftar misi meskipun setelah gagal tetapi ditandai sebagai gagal.
visibleBeforeUnlockedboolJika diset ke true, misi akan terlihat tetapi terkunci dalam daftar misi sebelum tersedia untuk diselesaikan.
invisibleWhileActiveboolJika diset ke true, misi akan tidak terlihat bahkan saat sedang aktif dikerjakan.
rewardstableDaftar informasi tampilan imbalan.
  • assetID (number) - ID gambar yang ditampilkan di UI misi di bawah imbalan untuk sebuah misi. Ini diperlukan jika ada imbalan yang hadir.
  • displayName (string) - Nama yang ditampilkan di UI misi di bawah ikon.

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:

NamaJenisDeskripsi
taskTypestringMenentukan jika tipe tugas adalah hitung atau waktu.
counterobject(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).
  • counterId (string) - ID penghitung yang akan dilacak. Gunakan ID ini untuk mendapatkan atau mengatur nilai penghitung.
  • continueFromCounter (Opsional bool) - Jika diset ke true, kemajuan tugas akan langsung mencocokkan nilai penghitung daripada jumlah peningkatan yang dicatat.
metadataobject(Opsional) Informasi tentang bagaimana tugas ditampilkan di UI.
  • displayName (string) - Nama tugas, digunakan saat ditampilkan di UI.
  • numericType (Opsional string) - bagaimana angka kemajuan dalam tugas harus ditampilkan.
    • Fraksi, mis. 5/10 atau 5k/50k
    • Persentase, mis. 50% atau 10%
    • LongFraction, mis. 5/10 atau 5000/50000
    • Boolean, mis. Belum selesai
callToActionobject(Opsional) Sebuah tombol yang memicu fungsi callback.
  • callback (function) - Fungsi yang dipicu oleh tombol callToAction.
  • buttonText (string) - Teks yang ditampilkan di UI tombol.

Bidang Tugas Hitung

Tugas hitung memiliki nilai yang diperlukan. Ketika kemajuan tugas memenuhi jumlah ini, tugas dianggap selesai.

NamaJenisDeskripsi
goalCountnumber(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.

NamaJenisDeskripsi
goalSecondsnumberJumlah detik yang harus berlalu untuk menyelesaikan tugas.
startImmediatelyboolJika tugas harus mulai menghitung waktu segera setelah dibuka, bukan hanya setelah dimulai.
includesOfflineTimeboolJika 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.

NamaJenisDeskripsi
repeatDelaySecondsnumber(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:

  1. Definisikan misi dalam konfigurasi misi Anda.

  2. Tambahkan logika ke pengalaman Anda untuk memperbarui kemajuan tugas atau penghitung yang terkait dengan kemajuan tersebut.

    README

    -- Meningkatkan kemajuan pada misi Melompat dengan tugas Melompat
    Missions.addProgressToTask(player, "Melompat", "Melompat", 1)
    -- Memulai timer pada misi WaktuBergulat dengan tugas WaktuDalamPertarungan
    Missions.startTimedTask(player, "WaktuBergulat", "WaktuDalamPertarungan")
    -- Menghentikan timer pada misi WaktuBergulat dengan tugas WaktuDalamPertarungan
    Missions.stopTimedTask(player, "WaktuBergulat", "WaktuDalamPertarungan")
    -- Meningkatkan kemajuan pada semua tugas yang terkait dengan penghitung Melompat
    CounterSystem.addCounter(player, "Melompat", 1)
    -- Memulai timer pada semua tugas berdurasi yang terkait dengan penghitung WaktuDalamPertarungan
    CounterSystem.startTimer(player, "WaktuDalamPertarungan")
    -- Menghentikan timer pada semua tugas berdurasi yang terkait dengan penghitung WaktuDalamPertarungan
    CounterSystem.stopTimer(player, "WaktuDalamPertarungan")
  3. Setel pengendali penyelesaian misi, dan opsi handler pembukaan kunci atau gagal. Gunakan pengendali penyelesaian untuk memberikan imbalan dari misi dalam pengalaman Anda.

    README

    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player} menyelesaikan misi {missionId}`)
    -- Berikan imbalan kepada pemain.
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. Buka misi yang tidak dibuka kuncinya secara otomatis. Logika paket fitur Misi memastikan semua persyaratan misi terpenuhi sebelum misi diselesaikan dan imbalannya dapat dikumpulkan.

    README

    Missions.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.

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.