참여 보상 기능 패키지는 일일 로그인 스트릭과 플레이 세션 시간을 포함하여 특정 플레이어 활동에 대한 게임 내 보상을 제공하는 사용자 지정 가능한 프레임워크입니다.클라이언트 및 서버 논리 외에도 패키지에는 보상 진행률, 보상 상태 및 보상 청구를 보기 위한 기본 UI가 포함되어 있습니다.

패키지 가져오기
여기에서 코어 및 참여 보상 패키지를 클릭하여 Studio 내 인벤토리에 추가하여 인벤토리에 추가: 인벤토리에 추가 링크를 클릭하십시오.
Studio에서 보기 탭을 선택합니다.
클릭 도구 상자 .
도구 상자 창에서 재고 탭을 클릭하십시오.
클릭하십시오 기능 패키지 핵심 타일, 그리고 참여 보상 기능 패키지 타일.두 패키지 폴더가 모두 탐색기 창에 표시됩니다.
폴더를 ReplicatedStorage 로 드래그합니다.
패키지 초기화
패키지를 ReplicatedStorage 로 이동하고 경험을 테스트하면 EngagementRewardsExample``ReplicatedStorage.EngagementRewards.Server.Examples 실행됩니다.
이 스크립트는 여러 모듈 스크립트를 요구하고 플레이어에게 최종적으로 보상(들)을 제공하는 rewardClaimedHandlerFunction() 함수를 정의하는 경험에서 패키지를 초기화하는 방법을 보여줍니다.
이 함수는 부울을 반환해야 합니다.예제 스크립트에서 플레이어에게 보상을 주지 않는다는 것을 볼 수 있습니다; 플레이어, 보상 및 수량만 인쇄됩니다.
참여 보상 예시
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- 이 처리기 함수를 자체 보상 획득 처리기 함수로 교체
-- 이 함수는 보상ID로 전달된 보상을 받은 이벤트를 처리해야 합니다
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
이 스크립트를 직접 수정하거나 ServerScriptService 에 이동하여 서버 코드의 기본 위치로 이동할 수 있습니다.그대로, 스크립트는 테스트 목적으로만 유용합니다.
플레이어에게 보상을 주는 방법은 경험에 따라 다릅니다.일부 경험에서는 경험 부스트를 수여하거나 플레이어의 골드 수만 증가시킬 수 있습니다.다른 경험에서는 사용자 지정 인벤토리 시스템이 있을 수 있고, 다른 사람들은 플레이어 백팩에 아이템을 넣을 수 있습니다.그러나 모든 경우에 자체 함수로 rewardClaimedHandlerFunction()를 교체해야 합니다.
보상 및 기준 추가
대부분의 보상 사용자 지정은 ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig 내에 발생합니다. 이 모듈 스크립트는 보상과 잠금 해제에 필요한 요구 사항을 정의합니다.
전체 형식 선언(또는 새 항목 추가)은 ReplicatedStorage.EngagementRewards.Configs.Types에서 볼 수 있지만, 아마도 EngagementRewardsConfig만 작업해야 합니다.기능 패키지에는 보상 유형 두 가지가 포함되어 있습니다: Time 및 Daily.
local engagementRewardsConfig: Types.EngagementRewardsConfig = {[Types.RewardType.Time] = {tabDisplayName = "Time",tabOrder = 1,description = "Keep playing to unlock rewards!",rewards = {MinutesPlayed1 = {icon = 116913478160966,displayName = "Ice Lance",requiredSecondsInGame = 1 * 5,},-- 더 보기[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,effect = Types.RewardEffect.Valuable,},-- more
두 보상 유형 모두 아이콘이 필요하며, 이는 이미지에 대한 Roblox 자산 ID( 아니라 데칼)입니다.UI에서 사용할 표시 이름도 아마 원할 것입니다.1이 아닌 값에 대해 quantity를 지정합니다.또한 보상을 값으로 지정할 수도 있습니다(effect = Types.RewardEffect.Valuable) 및 UI에서 다른 배경 프레임을 제공하여 보상을 더 가치 있게 만들 수 있습니다.
변수 | 유형 | 설명 | 기본 | 필수 :--- | :--- | :--- | :--- | :--- 아이콘 | 숫자 | UI 아이콘에 대한 Roblox 자산 ID.| N/A | 예 displayName | 문자열 | UI에서 사용할 보상의 이름입니다.| The RewardId | 수량 없음 | 숫자 | 보상할 아이템 수.| 1 | 영향 없음 | 보상 효과 | UI에서 사용할 시각 효과.참조 UI 사용자 정의.| Types.RewardEffect.Default | No
시간 보상
Time 보상은 게임 내에서 특정 시간 후에 잠금 해제됩니다.요구 사항을 충족하도록 이러한 숫자를 사용자 정의합니다.쉬운 테스트를 위해 작은 숫자를 사용하고, 게시된 경험에서 10분 후에 보상을 수여하고, 30분 후에 또 다른 보상을 수여하고, 1시간 후에 또 다른 보상을 수여하는 등을 사용할 수 있습니다.
곱셈은 인간이 작업하기 쉬운 숫자를 몇 초 안에 만들기 때문에, 2시간 동안 2 * 60 * 60 대신 7200 을 지정하는 것을 선호할 수 있습니다.
변수 | 유형 | 설명 | 기본 | 필수 :--- | :--- | :--- | :--- | :--- requiredSecondsInGame | 숫자 | 플레이어가 게임에서 보상을 받기 위해 소비해야 하는 초 수(양의 정수)입니다.| N/A | 예
일일 보상
Daily 보상은 일일 연속 로그인의 특정 수 후에 잠금 해제됩니다.예를 들어, 플레이어가 처음 로그인한 첫날, 세 가지 물약이나 시나몬 롤을 줄 수 있습니다.이후 몇 일 동안, 더 가치 있는 소모품을 보상하고 7일 연속 후에 내구성 있는 아이템(새 낚싯대 등)을 보상할 수 있습니다.
변수 | 유형 | 설명 | 기본 | 필수 :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | 숫자 | 플레이어가 보상을 받으려면 경험에 연결해야 하는 연속 일 수입니다.| N/A | 예
일일 보상 구성 옵션 2개가 더 있으며 DailyRewardTabConfig에서 사용할 수 있습니다.
[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",isHiddenOnJoin = true,isAlignedToStreakResetTime = true,rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,},-- more
변수 | 유형 | 설명 | 기본 | 필수 :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | 참여할 때 경험에 자동으로 보상이 표시되지 않습니다.거짓일 경우 플레이어가 획득할 새로운 일일 보상이 있으면 게임에 자동으로 보상이 나타납니다.| 거짓 | isAlignedToStreakResetTime 없음 | 부울 | 참여 시 첫 번째 날 획득할 수 있는 시간으로부터 24시간 후에 2일차 보상을 획득할 수 있습니다.거짓일 경우, 1일 획득 가능 시간 이후 첫 번째 자정에 2일 보상을 획득할 수 있습니다.예를 들어, 플레이어가 11:00 PM(23:00)에 로그인하고 1일 보상을 받으면 진실은 다음 날 11:00 PM까지 1일 보상을 받을 수 없다는 것입니다.거짓은 12:00 AM(00:00)에 하루 2 보상을 청구할 수 있다는 것을 의미합니다.3일 이상의 보상은 항상 이전 날의 청구 가능 시간 후 24시간 동안 사용할 수 있습니다.| false | 아니요
UI 사용자 정의
이전 섹션에서는 사용자 인터페이스의 기본 사용자 지정을 가능하게 하는 tabDisplayName , tabOrder 및 description 필드를 알아볼 수 있습니다.또한 ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings에서 UI 문자열을 찾을 수 있습니다.

새로운 보상 배경을 지정하려면 effect 변수를 사용하여 ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames에 프레임을 추가하십시오.그런 다음 프레임의 이름을 Types.RewardEffect 테이블에 추가하십시오. ReplicatedStorage.EngagementRewards.Configs.Types 에서.
더 포괄적인 사용자 지정을 위해 ReplicatedStorage.EngagementRewards.Objects에 있는 개체를 수정하십시오.예를 들어, BackgroundColor3 프레임의 RewardsHudButton.Background 또는 Color 의 FooterContentFrame.ClaimableUIGradient 를 수정하면 됩니다.
사용자 인터페이스의 입력 지점은 필요한 개체를 가져오고 UI를 초기화하는 ReplicatedStorage.EngagementRewards.Client.UIController 스크립트입니다.상위 수준 개체(자식만 추가하거나 속성만 수정하는 것과 달리)를 추가하거나 이름을 바꾼 경우, 이 폴더에 있는 코드를 업데이트해야 처리할 수 있습니다.