참여 보상

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

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

패키지 가져오기

  1. 여기에서 코어참여 보상 패키지를 클릭하여 Studio 내 인벤토리에 추가하여 인벤토리에 추가: 인벤토리에 추가 링크를 클릭하십시오.

  2. Studio에서 보기 탭을 선택합니다.

  3. 클릭 도구 상자 .

    Studio's View tab with the Toolbox tool highlighted.
  4. 도구 상자 창에서 재고 탭을 클릭하십시오.

    Studio's Toolbox window with the Inventory tab highlighted.
  5. 클릭하십시오 기능 패키지 핵심 타일, 그리고 참여 보상 기능 패키지 타일.두 패키지 폴더가 모두 탐색기 창에 표시됩니다.

  6. 폴더를 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만 작업해야 합니다.기능 패키지에는 보상 유형 두 가지가 포함되어 있습니다: TimeDaily.


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 , tabOrderdescription 필드를 알아볼 수 있습니다.또한 ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings에서 UI 문자열을 찾을 수 있습니다.

  • 새로운 보상 배경을 지정하려면 effect 변수를 사용하여 ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames에 프레임을 추가하십시오.그런 다음 프레임의 이름을 Types.RewardEffect 테이블에 추가하십시오. ReplicatedStorage.EngagementRewards.Configs.Types 에서.

  • 더 포괄적인 사용자 지정을 위해 ReplicatedStorage.EngagementRewards.Objects에 있는 개체를 수정하십시오.예를 들어, BackgroundColor3 프레임의 RewardsHudButton.Background 또는 ColorFooterContentFrame.ClaimableUIGradient 를 수정하면 됩니다.

  • 사용자 인터페이스의 입력 지점은 필요한 개체를 가져오고 UI를 초기화하는 ReplicatedStorage.EngagementRewards.Client.UIController 스크립트입니다.상위 수준 개체(자식만 추가하거나 속성만 수정하는 것과 달리)를 추가하거나 이름을 바꾼 경우, 이 폴더에 있는 코드를 업데이트해야 처리할 수 있습니다.