Paket fitur Pas Musim menawarkan fungsi keluar dari kotak untuk membuat sistem kemajuan waktu terbatas berdasarkan pencarian di mana pemain dapat menyelesaikan tujuan pencarian untuk mendapatkan hadiah yang hanya tersedia selama periode waktu yang ditentukan sebelumnya.Menggunakan opsi kustomisasi paket, Anda dapat menyesuaikan semua pas musim untuk memberikan konten baru kepada audiens Anda, mempromosikan retensi pemain, dan menghasilkan pendapatan.

Dapatkan paket
Toko Pencipta 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 Pencipta untuk menambahkan satu atau lebih aset langsung ke pengalaman terbuka, termasuk paket fitur!
Setiap paket fitur membutuhkan paket fitur Inti untuk berfungsi dengan baik, dan paket Pas Musim membutuhkan paket fitur Misi untuk mendefinisikan misi musim.Setelah semua tiga aset paket ada di inventaris Anda, Anda dapat menggunakannya kembali di proyek apa pun di platform.
Untuk mendapatkan paket dari inventaris Anda ke pengalaman Anda:
Tambahkan Core , Misi , dan Paket Pas Musim ke inventaris Anda di Studio dengan mengklik tautan Tambahkan ke Inventaris dalam set komponen berikut.
Di bilah alat, pilih tab Tampilkan.
Klik Toolbox . Jendela Toolbox ditampilkan.
Di jendela Toolbox , klik tab Inventaris . Tampilan urutan Model Saya ditampilkan.
Klik tombol Paket Fitur Utama , Paket Fitur Misi , lalu tombol Paket Fitur Pas Musim .Semua tiga folder paket ditampilkan di jendela Explorer .
Seret folder paket ke dalam ReplicatedStorage .
Izinkan panggilan penyimpanan data untuk melacak pembelian pemain dengan paket.
- Di tab Rumah di bilah alat, pilih Pengaturan Permainan .
- Navigasikan ke tab Keamanan , lalu aktifkan Aktifkan Akses Studio ke Layanan API .
Konfigurasi dependensi misi
Untuk musim berfungsi dengan benar, Anda harus menambahkan logika sehingga paket fitur Pas Musim dapat melacak kemajuan pemain dan memperbarui komponen UI-nya.Untuk kesederhanaan, contoh di bawah ini menggunakan paket fitur Misi dan memanggil SeasonPasses.addProgressToSeason() setelah pemain menyelesaikan misi, tetapi Anda dapat melacak kemajuan pemain seperti yang Anda inginkan.Entah Anda mendefinisikan misi atau tidak, meskipun, Anda masih harus menambahkan paket fitur Misi ke pengalaman Anda agar kode Pas Musim berfungsi.
Misi masing-masing memiliki serangkaian tugas yang harus diselesaikan untuk menyelesaikan misi, opsi konfigurasi, dan metadata tampilan opsional.Untuk panduan lengkap tentang cara mengonfigurasi misi dan tugasnya, lihat Definisikan misi.
Tambahkan XP dari misi ke musim
Contoh ini menggunakan paket fitur Misi untuk mendefinisikan misi yang dapat diselesaikan pemain untuk mendapatkan pengalaman (XP) dan kemajuan melalui musim.Untuk menghadiahkan pemain XP saat mereka menyelesaikan misi yang didefinisikan, Anda harus menambahkan logika ke skrip server ReplicatedStorage.Missions.Server.Examples.MissionsExample sehingga dapat mengimpor data pas musim dan menghadiahi pemain sesuai dengan kemajuan mereka.
local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} completed mission {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end
Tambahkan ikon hadiah tier musim
Selain memberikan pemain XP saat mereka menyelesaikan misi, paket fitur Pas Musim menggunakan paket fitur Misi untuk mendefinisikan tingkat hadiah unik dalam satu musim.Jika Anda ingin menambahkan ikon di layar untuk hadiah tier yang bisa diperoleh pemain jika mereka memiliki cukup XP, tambahkan assetID di konfigurasi Missions untuk setiap hadiah tier musim.
Tier3Mission = {categoryId = "General",metadata = {displayName = "Tier 3 Mission",description = "Jump 10 times",visibleAfterComplete = true,visibleBeforeUnlocked = true,rewards = {{icon = 16826775737,displayName = "Item",},{icon = 106912146245070,displayName = "Season XP",},},},}
Konfigurasi musim
Setelah Anda menyiapkan setiap misi yang ingin Anda sertakan dalam musim, saatnya untuk mengkonfigurasi pas musim itu sendiri.Di ReplicatedStorage.SeasonPasses.Configs.Season , ada contoh konfigurasi musim untuk referensi Anda, dan sampel kode berikut berasal dari file itu.
Definisikan pas
Pas memungkinkan Anda untuk menagih pemain biaya Robux satu kali untuk mengakses misi dan potensi hadiah pas musim.Setelah Anda membuat pas dengan ID aset unik, Anda dapat mengatur rincian pas di bidang premiumTrack musim Anda.Sebagai contoh, sampel kode berikut mendefinisikan pass dengan asetID contoh 928192647 untuk mewakili pass musim, lalu memberikan pass musim nama trek "Premium Track".
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
Konfigurasi tingkat dan hadiah
Tingkat musim mewakili tonggak yang harus dipenuhi pemain untuk mendapatkan hadiah sepanjang musim.Untuk naik tingkat, pemain menyelesaikan misi untuk mendapatkan XP, dan ketika mereka mendapatkan cukup XP, mereka lulus ke tingkat berikutnya dan menerima hadiah untuk tingkat yang baru saja mereka selesaikan.Tingkat memiliki properti upperBoundXP yang menetapkan ambang batas XP yang diperlukan untuk mengklaim hadiah untuk tingkat.Setiap tingkatan dapat menawarkan dua jenis hadiah:
- Gratis - Hadiah yang bisa diperoleh pemain tanpa membeli pas musim.
- Premium - Hadiah yang pemain hanya bisa dapatkan dengan membeli pas musim.
Untuk menunjukkan, tinjau contoh kode berikut untuk musim dengan satu tingkat yang membutuhkan 100 XP untuk mendapatkan hadiah lance es gratis dan hadiah perisai ledakan premium.The icon adalah assetID dari gambar UI untuk ditampilkan untuk hadiah, dan the displayName menampilkan nama untuk hadiah.Perhatikan bahwa displayName ditampilkan di UI, tetapi rewardId disembunyikan dari pemain dan terutama digunakan untuk tujuan penyimpanan data .
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
Sementara skrip ini untuk tujuan ilustrasi tentang cara mengonfigurasi satu tingkat pada satu waktu, sebagian besar musim termasuk lebih dari satu tingkat.Saat Anda mendefinisikan beberapa tingkat dan hadiah untuk musim, pastikan setiap rewardId adalah numerik dan dalam urutan meningkat sehingga tingkat Anda ditampilkan dalam urutan yang Anda definisikan di daftar tingkat.
Definisikan rincian musim
Sekarang Anda memiliki pas musim dengan tingkat dan hadiah, saatnya untuk mendefinisikan rincian musim Anda:
- title - Nama musim Anda.
- description - Deskripsi musim Anda.
- startUtc - Awal musim dalam waktu universal terkoordinasi.
- endUtc - Akhir musim dalam waktu universal terkoordinasi.
- seasonId - Memungkinkan Anda melacak XP yang diperoleh pemain selama musim yang diberikan.
Paket menggunakan startUtc dan endUtc untuk menampilkan hitung mundur musim.
startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),title = "Season 1",description = "Into Space City",seasonId = "season1",
Integrasikan logika server
Lihatlah ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample , yang menunjukkan bagaimana server Anda akan berinteraksi dengan Paket Fitur Pas Musim .Potongan di bawah ini berasal dari skrip itu.
Anda terutama perlu membuat fungsi penangani untuk memberikan hadiah klaim hadiah kepada pemain Anda.Sebagai contoh, sampel kode berikut membuat fungsi rewardClaimedHandlerFunction() yang melacak ketika pemain maju ke tier berikutnya, lalu menghargai mereka entah hanya hadiah gratis, atau kedua hadiah gratis dan premium jika mereka membeli pas musim.
Untuk tujuan Anda, ganti panggilan task.wait() dengan logika yang memungkinkan pemain mendapatkan hadiah yang telah mereka klaim di musim.Fungsi ini harus return boolean: benar jika server memberikan hadiah, salah jika tidak.
local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end
Konfigurasi konstan
Konstan untuk paket fitur Inti hidup di dua tempat:
- Konstan bersama hidup di ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
- Konstan khusus paket, dalam hal ini paket fitur Pas Musim hidup di ReplicatedStorage.SeasonPasses.Configs.Constants .Hal utama yang mungkin ingin Anda sesuaikan untuk memenuhi persyaratan desain pengalaman Anda:
- AssetID suara
- Durasi efek pembelian dan warna partikel Selain itu, Anda dapat menemukan string untuk terjemahan dibagi ke satu lokasi: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .
Kustomisasi komponen UI
Dengan memodifikasi objek paket, seperti warna, font, dan transparansi, Anda dapat menyesuaikan presentasi visual pas musim Anda.Namun, ingatlah bahwa jika Anda memindahkan salah satu objek di sekitar hierarkis, kode tidak akan dapat menemukannya, dan Anda perlu melakukan penyesuaian pada kode Anda.
Musim terdiri dari komponen tingkat tinggi berikut yang ditambahkan secara programatik ke komponen UI Misi Feature Package :
- SeasonBottomFrame – Frame yang berisi informasi tentang setiap trek, frame gulir hadiah untuk tingkat, dan data tingkat.
- SeasonDescriptionFrame - Frame dalam judul yang menampilkan judul musim, deskripsi, dan hitung mundur.
- TierRewardFrame - Frame yang menampilkan hadiah spesifik untuk tingkat.
- TierProgressFrame - Frame yang menampilkan kemajuan yang dilakukan pemain terhadap tier saat ini yang mereka kerjakan.
- PurchaseFrame - Frame yang meminta pemain untuk membeli pas premium.
- SeasonProgressFrame - Frame yang menampilkan bilah kemajuan pemain sepanjang seluruh musim.
- RewardsButtonFrame - Frame yang menambahkan tombol yang memungkinkan informasi musim ditampilkan melalui SeasonBottomFrame .