시즌 패스 기능 패키지는 상자 밖으로 기능을 제공하여 플레이어가 제한된 시간 동안 퀘스트 기반 진행 시스템을 만들 수 있도록 하고, 미리 정의된 기간 동안만 사용할 수 있는 보상을 획득할 수 있습니다.패키지의 사용자 지정 옵션을 사용하여 모든 시즌 패스를 개인화하여 대상 그룹에 새로운 콘텐츠를 제공하고, 플레이어 유지율을 촉진하고, 수익을 창출할 수 있습니다.

패키지 가져오기
크리에이터 스토어는 Roblox와 Roblox 커뮤니티가 제작한 모든 자산을 찾을 수 있는 도구 상자의 탭 으로, 모델, 이미지, 메쉬, 오디오, 플러그인, 비디오 및 폰트 자산을 포함하여 프로젝트 내에서 사용할 수 있는 모든 자산을 찾을 수 있습니다.크리에이터 스토어를 사용하여 기능 패키지를 포함하여 개방형 경험에 직접 하나 이상의 자산을 추가할 수 있습니다!
모든 기능 패키지는 적절하게 작동하려면 코어 기능 패키지가 필요하며, 시즌 패스 패키지는 시즌의 미션을 정의하기 위해 미션 기능 패키지가 필요합니다.세 패키지 자산이 모두 인벤토리에 있으면 플랫폼의 모든 프로젝트에서 다시 사용할 수 있습니다.
인벤토리에서 경험으로 패키지를 가져오려면:
스튜디오의 인벤토리에 코어 , 미션 , 및 시즌 패스 패키지를 추가하려면 다음 구성 요소의 인벤토리에 추가 링크를 클릭하십시오.
도구 모음에서 보기 탭을 선택합니다.
클릭하십시오 도구 상자 . 도구 상자 창이 표시됩니다.
도구 상자 창에서 인벤토리 탭을 클릭하십시오. 내 모델 정렬이 표시됩니다.
클릭하십시오 기능 패키지 핵심 타일, 미션 기능 패키지 타일, 그리고 시즌 패스 기능 패키지 타일.세 패키지 폴더가 모두 탐색기 창에 표시됩니다.
패키지 폴더를 ReplicatedStorage 로 드래그합니다.
데이터 저장소 호출을 허용하여 패키지로 플레이어 구매를 추적합니다.
- 도구 모음의 홈 탭에서 게임 설정 을 선택합니다.
- 보안 탭으로 이동한 후 API 서비스에 스튜디오 액세스 활성화 를 활성화합니다.
미션 종속성 구성
시즌이 제대로 작동하려면 논리를 추가하여 시즌 패스 기능 패키지가 플레이어 진행도를 추적하고 UI 구성 요소를 업데이트할 수 있도록 해야 합니다.단순화를 위해 아래 예제에서는 미션 기능 패키지를 사용하고 플레이어가 미션을 완료한 후 SeasonPasses.addProgressToSeason()에 호출하지만, 원하는 대로 플레이어 진행률을 추적할 수 있습니다.미션을 정의하든 하지 않든, 시즌 패스 코드가 작동하려면 여전히 미션 기능 패키지를 경험에 추가해야 합니다.
각 미션에는 미션, 구성 옵션 및 선택적 표시 메타데이터를 완료하기 위해 완료해야 하는 작업 세트가 있습니다.임무와 임무의 작업을 구성하는 방법에 대한 자세한 가이드는 임무 정의를 참조하십시오.
시즌에 미션에서 XP 추가
이 예제에서는 미션 기능 패키지를 사용하여 플레이어가 경험(XP)을 얻고 시즌을 진행하기 위해 완료할 수 있는 미션을 정의합니다.정의된 미션을 완료했을 때 플레이어에게 XP를 수여하려면 ReplicatedStorage.Missions.Server.Examples.MissionsExample 서버 스크립트에 논리를 추가하여 시즌 패스 데이터를 가져와 플레이어에게 진행 상황에 따라 보상할 수 있어야 합니다.
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
시즌 티어 보상 아이콘 추가
플레이어가 미션을 완료할 때 XP를 부여하는 것 외에도 시즌 패스 기능 패키지는 미션 기능 패키지를 사용하여 시즌 내에 독특한 보상 티어를 정의합니다.플레이어가 XP가 충분하면 획득할 수 있는 티어 보상의 화면 아이콘을 추가하려면, 각 시즌 티어 보상의 Missions 구성에 자산 ID를 추가하십시오.
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",},},},}
시즌 구성
시즌에 포함하려는 모든 미션을 설정한 후에는 시즌 패스 자체를 구성할 시간입니다.In ReplicatedStorage.SeasonPasses.Configs.Season , 참조를 위한 시즌 구성의 예가 있으며 다음 코드 샘플은 해당 파일에서 나옵니다.
패스 정의
패스는 시즌 패스의 미션과 잠재적 보상에 액세스하기 위해 플레이어에게 일회성 Robux 요금을 청구할 수 있게 해줍니다.고유한 자산ID로 패스를 만든 후, 시즌의 premiumTrack 필드에서 패스의 세부 정보를 설정할 수 있습니다.예를 들어 다음 코드 샘플은 시즌 패스를 나타내기 위해 예제 자산ID가 928192647 인 패스를 정의하고, 시즌 패스에 트랙 이름 "프리미엄 트랙"을 제공합니다.
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
티어 및 보상 구성
시즌 티어는 플레이어가 시즌 내내 보상을 받기 위해 달성해야 하는 목표를 나타냅니다.계층을 오르려면 플레이어가 XP를 획득하기 위해 미션을 완료하고, 충분한 XP를 획득하면 다음 계층으로 진급하고 방금 완료한 계층에 대한 보상을 받습니다.티어에는 upperBoundXP 속성이 있으며, 티어에 대한 보상을 받기 위해 필요한 XP 임계값을 설정합니다.각 티어는 보상 유형 2개를 제공할 수 있습니다:
- 무료 - 시즌 패스를 구매하지 않고도 플레이어가 획득할 수 있는 보상
- 프리미엄 - 플레이어가 시즌 패스를 구매해야만 획득할 수 있는 보상
시연하려면 무료 아이스 랜스 보상과 프리미엄 폭발 방패 보상을 획득하기 위해 100 XP가 필요한 한 티어의 다음 코드 샘플을 검토하십시오.The icon 는 보상에 표시할 UI 이미지의 자산ID이며, The displayName 는 보상의 이름을 표시합니다.UI에 표시되는 displayName 와 달리 rewardId 는 플레이어에게 숨겨져 있으며 주로 데이터 저장소 용도로 사용됩니다.
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
이 스크립트는 한 번에 하나의 티어를 구성하는 방법에 대한 설명 목적이지만, 대부분의 시즌에는 하나 이상의 티어가 포함됩니다.시즌에 대한 여러 티어와 보상을 정의할 때, 각 rewardId 가 숫자이고 증가 순서로 표시되어 티어가 티어 목록에서 정의한 순서대로 표시되도록 하십시오.
시즌 세부 정보 정의
이제 계층과 보상이 있는 시즌 패스가 있으므로 시즌의 세부 정보를 정의할 시간입니다:
- title - 시즌의 이름.
- description - 시즌의 설명.
- startUtc - 조정된 우주 시간의 시즌 시작.
- endUtc - 조정된 우주 시간의 시즌 종료.
- seasonId - 지정된 시즌 내내 플레이어가 획득하는 XP를 추적할 수 있습니다.
패키지는 startUtc 및 endUtc를 사용하여 시즌의 카운트다운을 표시합니다.
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",
서버 논리 통합
서버가 ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample와 상호작용하는 방법을 보여주는 을 살펴보세요 .아래 스니펫은 해당 스크립트에서 나옵니다.
주로 플레이어에게 획득한 보상을 수여하기 위한 처리기 함수를 만들어야 합니다.예를 들어 다음 코드 샘플은 플레이어가 다음 티어로 진행하면 보상을 무료 보상이나 시즌 패스를 구매한 경우 두 가지 보상 모두로 보상하는 rewardClaimedHandlerFunction() 함수를 생성합니다.
목적에 따라 task.wait() 호출을 시즌에서 획득한 보상을 얻을 수 있는 논리로 바꿉니다.이 함수 는 서버가 보상을 부여했는지 여부에 따라 다음과 같이 불리언을 반환해야 합니다: 서버가 보상을 부여하지 않았다면 false, 그렇지 않다면 true입니다.
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
상수 구성
코어 기능 패키지의 상수는 두 곳에서 살아갑니다:
- 공유 상수는 ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants에 살고 있습니다.
- 이 경우 패키지별 상수, 즉 시즌 패스 기능 패키지가 ReplicatedStorage.SeasonPasses.Configs.Constants 살고 있습니다.경험의 디자인 요구 사항을 충족하기 위해 조정할 주요 사항:
- 사운드 자산 ID
- 구매 효과 지속 시간과 파편 색상 외에도 한 위치에 분리된 번역 문자열을 찾을 수 있습니다: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
UI 구성 요소 사용자 지정
색상, 글꼴 및 투명도와 같은 패키지 개체를 수정하여 시즌 패스 프롬프트의 시각적 표현을 조정할 수 있습니다.그러나 계층적으로 개체 중 하나를 이동하면 코드가 찾을 수 없으므로 코드를 조정해야 합니다.
시즌은 다음 고수준 구성 요소로 구성되며, 미션 기능 패키지 UI 구성 요소에 프로그래밍 방식으로 추가됩니다:
- SeasonBottomFrame – 각 트랙에 대한 정보, 계층의 보상 스크롤링 프레임 및 계층 데이터가 포함된 프레임.
- SeasonDescriptionFrame - 시즌 타이틀, 설명 및 카운트다운을 표시하는 헤더의 프레임.
- TierRewardFrame - 티어에 대한 특정 보상을 표시하는 프레임.
- TierProgressFrame - 플레이어가 현재 작업하고 있는 티어에 대해 진행 상황을 표시하는 프레임.
- PurchaseFrame - 플레이어에게 프리미엄 패스를 구매하도록 요청하는 프레임.
- SeasonProgressFrame - 시즌 내내 플레이어의 진행률 바를 표시하는 프레임.
- RewardsButtonFrame - 시즌의 정보를 표시할 수 있는 버튼을 추가하는 프레임입니다. SeasonBottomFrame .