구독을 통해 사용자에게 월간 요금을 내는 정기적인 혜택을 제공할 수 있습니다. 패스와 마찬가지로 구독과 패스의 주요 차이점은 사용자가 월간 요금을 지불할 때 패스의 혜택이 영구적이라는 점입니다. 구독은 Roblox에서 다음과 같은 특성을 가지고 있습니
- 자동 갱신:: 구독은 자동으로 갱신되며 한 번만 구매하는 것이 아니라 로컬 통화로 가격이 책정됩니다.
- Robux 지불: Robux를 받습니다. 자세한 내용은 구독 수입을 참조하십시오.
- 단일 계층: 모든 경험 내의 구독은 사용자가 동시에 소유할 수 있습니다. 서로 다른 구독은 지원되지 않습니다.
사용자는 로블록스 기프트 카드 크레딧 또는 신용 또는 잔액 카드를 사용하여 컴퓨터 사용자 지정 지역의 Roblox 앱 또는 웹 사이트에서 구독을 구매할 수 있습니다. 사용자는 Roblox 계정 설정의 구독 탭에서 구독 구매를 확인할 수 있습니다.
구독은 미래에 더 많은 지역으로 확대됩니다. 사용 불가능한 지역은 다음과 같습니다. 아르헨티나, 콜롬비아, 인도, 인도네시아, 일본, 러시아, 터키, 우크라이나 및 베트남.
구독 가이드라인
구독을 만들기 전에 사용 약관 및 Roblox사용 약관 과 일치하는지 확인하고 지역 법률을 준수하십시오. 사기, 사용자를 오인하려는 시도 또는 그밖의 위반으로 인해 경험이 삭제될 수 있습니다. 또한 다음 가이드라인을 준수하십시오:
- 지우다구분 가능한 구독 옵션 제공: 구독 옵션을 서로 다르게 하는 이름을 짓습니다. 상품 경험에서 구매할 때 각 옵션에 대한 가격 및 기간을 지정합니다.
- 동일한 혜택을 플랫폼 및 장치 간에 제공합니다.: 구독이 어디에서 구매되었든 간에, 사용자가 지정된 구독 계획에 대해 동일한 혜택을 받도록 하십시오.
- 서로 맞는 디자인 구독 및 전반적인 경험 제공: 동일한 슈트의 혜택을 제공하는 티어가 서로 독립적인 경우, 현재 사용할 수 없습니다. 구독이 서로 다른 슈트의 혜택을 나타냅니다.
- 구독 기간 전체에 대한 혜택을 제공합니다. 구독 제공이 활성화되면 설명된 혜택을 수행하고 뒤에서 혜택을 취소하지 마십시오.
- Roblox 앱을 사용하여 사용자를 다른 플랫폼으로 유도하지 마십시오(예: 모바일, 웹, 등) 경험 내에서 사용자를 대화하는 것은 자유롭지만, 다른 플랫폼에서 사용자를 유도하여 다른 곳에서 구매하도록 하는 것은 금지되어 있습니다. * 사용자가 유료후 추가 요구 사항을 통해 구독 혜택을 게이트하지 마십시오. 사용자가 소셜 미디어에 게시하는 등의 추가 작업을 수행하여 지불한 혜택에 액세스하는 것은 금지됩니다. 이 가이드라인은 구매 서브스크립션에 대해 작동하지 않습니다.
구독 생성
구독을 만들기 전에 전화 또는 ID 확인 을 통해야 합니다. 구독을 만들려면:
크리에이터 대시보드의 경험으로 이동하고 수익 창출 제품 > 구독 제품 을 선택합니다. 그런 다음 클릭하십시오 구독 생성.
구독에 대한 덮개 이미지를 업로드하십시오. 이미지는 검열 후 다른 사람들에게 표시됩니다.
고유한 구독 이름을 만듭니다. 경험 내의 두 구독은 동일한 이름을 공유할 수 없습니다. 이 구독 이름은 요금 문서에 나타나는 경험 이름의 축약 버전과 함께 나타납니다. 허용되는 문자는 a-z, a-z, 0-9, 스페이스 및 .,:/
구독 내용을 설명합니다. 구독 구매 결정을 내리는 사용자가 볼 때 이것이 무엇인지 알 수 있습니다. 설명은 구독 제공 혜택을 명확하게 설명해야 합니다. 설명은 1,000자 제한되며 이모티콘을 지원합니다. 구독을 활성화하면 이 이점을 줄일 수 없습니다.
구독 제품 유형 을 선택합니다. 제품 유형은 세 가지입니다:
- 내구성: 획득후 내구적인 항목, 예를 들어 무기와 같은 물리적 항목. 구독에 다양한 유형의 상품이 포함되어 있으면 내구성 을 선택합니다. 검 및 물약과 같은 물리적 항목이 포함된 가치 팩을 선택하면 내구성을 제품 입력선택합니다
- 소모품: 사용 또는 획득 후 사라지는 임시 재구매 가능 아이템, 예를 들어 시간이 지남에 따라 임시 부스트를 제공하는 소모 물약입니다.
- 통화: 사용자가 경험 내에서 아이템을 구매할 수 있는 중간 크기의 거래 수단.
구독 내 가격 을 선택하십시오(미국 달러). Robux는 웹 가격에 따라 획득됩니다. 모바일 앱 구독자는 더 높은 가격을 청구됩니다. 구독자는 로컬 통화에 대해 청구됩니다.
반복 주기는 사용자에게 청구되는 주기를 나타냅니다. 현재 이 값은 항상 월간입니다. 구독 생성 을 클릭하십시오.
세부 정보를 확인하고 생성 을 클릭하십시오.
구독 활성화
구독이 판매 가능한 상태에 도달하면 구독 타일의 오른쪽 상단 모서리에 있는 ⋯ 버튼을 클릭하고 활성화를 선택합니다. 활성화된 구독은 경험 세부 정보 페이지 및 경험 내에서 판매할 수 있습니다.
처음으로 구독을 활성화하기 전에 경험 이름의 약간 더 짧은 버전을 확인해야 합니다. 이 짧은 경험 이름은 사용자가 가입서명할 때 표시되며, 구독 생성에서 만든 구독 이름과 함께 표시됩니다. Roblox 및 App Store 설정에서 구독 관리를 관리하는 경우에도 표시됩니
구독 편집
활성 및 비활성 구독 사이에서 경험당 최대 50개의 구독을 가질 수 있습니다. 구독을 편집하려면 크리에이터 대시보드의 경험으로 이동하고 수익 창출 제품 > 구독을 선택합니다.
구독 이미지, 설명 또는 상태를 편집할 수 있습니다. 이 속성을 더 자세히 편집하려면 원하는 변경 사항으로 구독을 삭제하고 다시 만들어야 합니다.
이미지 변경
구독 이미지를 업데이트하려면:
구독을 선택한 상태에서 변경 버튼을 클릭하십시오.
새 이미지를 선택하고 저장 을 클릭한 다음 변경 사항 저장 을 클릭하십시오. 새 이미지는 조정을 통과한 후 라이브 됩니다.
설명 변경
구독 설명을 변경하려면:
- 구독을 선택한 상태에서 설명 필드를 클릭하십시오.
- 설명을 편집한 다음 변경 사항 저장을 클릭하십시오. 설명은 1,000자를 초과하고 이모티콘을 지원할 수 있습니다.
- 확인 창에서 예, 확인 을 클릭하여 변경 사항을 확인하세요. 설명은 즉시 업데이트됩니다.
상태 변경
구독에는 두 가지 상태가 있습니다.
- 활성 — 활성 구독은 판매 중수 있으며, 구독자는 다음 기간 시작 시 구독을 갱신할 수 있습니다.
- 비활성 — 비활성 구독은 판매할 수 없습니다.
구독 상태를 변경하려면:
- 구독 페이지에서 구독 타일의 오른쪽 상단 모서리에 있는 ⋯ 를 클릭하십시오. 활성화 또는 판매 중지 를 사용하는 대신 ⋯ 를 표시하거나 구독 상태와 함께 일부 옵션을 표시합니다.
- 활성화 또는 판매 해제를 선택하면 구독 상태를 변경할 수 있습니다.
- 판매 제거를 선택하면 기존 구독자가 현재 구독자의 갱신을 허용하거나 미래의 갱신을 취소할 수 있는 옵션이 제공됩니다. 일반적으로 기존 구독자가 영구적으로 경험에서 구독 혜택을 제거하도록 계획하지 않는 한 기존 구독자가 갱신을 허용하는 것이 좋습니다
경험에 구독 통합
이 코드 샘플은 경험에서 구독 감지를 구현하는 방법에 대한 간단한 예입니다.
-- 이 코드를 서버에서 실행하십시오
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- 구독 ID로 대체
local function grantAward(player: Player)
-- 여기에 구독과 관련된 보상을 부여해야 합니다.
end
local function revokeAwardIfGranted(player: Player)
-- 이 메서드는 _not_ 구독이 없는 모든 플레이어에게 호출됩니다
-- 코드가 데이터 저장소에 구독을 저장하거나 해제해야 하는 혜택을 제공하는 경우
-- 이 메서드를 사용하여 취소를 처리해야 합니다.
end
local function checkSubStatus(player)
local success, response = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
warn(`Error while checking if player has subscription: {response}`)
return
end
if response.IsSubscribed then
grantAward(player)
else
revokeAwardIfGranted(player)
end
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubStatus(player)
end
end
Players.PlayerAdded:Connect(checkSubStatus)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
게임 패스를 구독으로 대체
경험에서 구독을 확대하는 하나의 옵션은 기존 Game Pass를 구독으로 대체하는 것입니다. 이것은 새 기능이나 보상을 추가하지 않고 경험에서 구독을 신속하게 구현하려는 경우 좋은 옵션입니다.
게임 패스를 구독으로 교체할 때 두 가지 중요한 고려 사항이 있습니다.
- 게임 패스 보유자는 계속해서 지불한 혜택을 받아야 합니다.
- 게임 패스를 판매해서는 안 되므로 새로운 사용자가 대신 구독을 구매할 수 있습니다.
- 구독을 취소할 수 있으므로 이전에 게임 패스의 혜택을 데이터 상점유지하면 이 혜택을 "취소"해야 합니다. 이 고려는 모든 게임 패스 구현에 적용되지 않지만 더 복잡한 구현에는 적용될 수 있습니다.
다음 코드 샘플에서는 게임 패스를 구독으로 교체하는 방법을 보여줍니다.
-- 이 코드를 서버에서 실행하십시오
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- 구독으로 교체하는 게임 패스의 ID 대체
local SUBSCRIPTION_ID = "EXP-11111111" -- 구독 ID로 대체
local function awardBenefit(player: Player)
-- 여기에 구독을 수여해야 합니다.
end
local function revokeBenefitIfGranted(player: Player)
-- 이 메서드는 _not_ 구독이 없는 모든 플레이어에게 호출됩니다
-- 코드가 데이터 저장소에 구독을 저장하거나 해제해야 하는 혜택을 제공하는 경우
-- 이 메서드를 사용하여 취소를 처리해야 합니다.
end
local function checkSubscriptionStatus(player: Player)
local success, result = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
if result.IsSubscribed then
awardBenefit(player)
else
revokeBenefitIfGranted(player)
end
end
local function onPlayerAdded(player: Player)
local success, result = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, LEGACY_GAME_PASS_ID)
end)
if not success then
print(`Error fetching game pass status: {result}`)
return
end
if result then
-- 플레이어가 유산 게임 패스를 구매했다면 구독 상태를 확인할 필요가 없습니다
-- 생명에 대한 혜택을 부여받은 것과 같이
awardBenefit(player)
return
end
checkSubscriptionStatus(player)
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubscriptionStatus(player)
end
end
local function onPromptGamePassPurchaseFinished(player: Player, purchasedPassID: number, purchaseSuccess: boolean)
if purchaseSuccess and purchasedPassID == LEGACY_GAME_PASS_ID then
awardBenefit(player)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
-- 게임 패스가 여전히 판매 중이라면 게임 내 게임 패스 구매를 계속 들어 주시기를 바랍니다.
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
구독 구매 촉진
사용자는 경험의 게임 세부 정보 페이지에서 직접 구독을 구매할 수 있지만, 게임 내에서 구독을 구매하는 방법을 추가하는 것이 좋습니다.
구독 구매를 요청할 때, Players.UserSubscriptionStatusChanged 가 플레이어가 이미 구독을 소유하고 있는 경우 발생하면 플레이어가 게임 세부 정보 페이지에서 구독을 구매하는 시나리오를 캐치하는 데 도움이 됩니다.
서버구독 구매를 요청할 수 있지만, MarketplaceService.GetUserSubscriptionStatusAsync 를 통해 사용자가 이미 구독을 가지고 있는지 확인해야 합니다.
이 예시에서는 클라이언트가 구독의 상태를 요청할 수 있도록 RemoteFunction 을 만듭니다.
--이 코드는 서버에서 실행해야 합니다
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 클라이언트가 구독 상태를 요청할 수 있는 원격 함수 생성
local getSubscriptionStatusRemote = Instance.new("RemoteFunction")
getSubscriptionStatusRemote.Name = "GetSubscriptionStatus"
getSubscriptionStatusRemote.Parent = ReplicatedStorage
getSubscriptionStatusRemote.OnServerInvoke = function(player: Player, subscriptionId: string)
assert(typeof(subscriptionId) == "string")
return MarketplaceService:GetUserSubscriptionStatusAsync(player, subscriptionId)
end
-- 이 코드는 클라이언트에서 실행해야 합니다
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- 구독 ID로 대체
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- 버튼으로 대체
local function playerHasSubscription()
-- 구독이 게임 패스를 대체하는 경우 여기에 게임 패스가 소유되어 있는지 확인해야 합니다.
local success, result = pcall(function()
return getSubscriptionStatusRemote:InvokeServer(SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
return result.IsSubscribed
end
-- 플레이어가 이미 구독을 가지고 있는 경우 버튼을 숨깁니다.
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- 구독이 등록되는 데 시간이 걸릴 수 있으므로 10초 내에 구매가 완료되었는지 확인합니다.
-- 버튼이 있으면 숨기고
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- 플레이어가 이미 구독을 가지고 있으면 버튼을 표시하지 전체
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- 플레이어가 이미 구독을 가지고 있으면 버튼을 숨깁니다.
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)
다른 유용한 함수
다른 유용한 함수는 MarketplaceService에 있습니다.
구독으로 수익 창출
구독은 로컬 통화로 가격이 책정되지만, Robux는 플랫폼 수수료가 없는 1Robux당 US$0.01에서 1Robux로 획득합니다. Roblox는 플랫폼 수수료가 적용되는 첫 번째 달에 대해서만 30%의 플랫폼 수수료를 부과합니다. 이 수익 분배는
예를 들어, 사용자가 기본 가격인 US$9.99(데스크톱) 또는 $12.99(모바일)에 구독하는 경우:
- 첫 번째 달: 구독 제작자는 999 * .7 = 699 (데스크톱) 또는 1299 * .7 = 909 (모바일)을 받습니다.
- 두 번째 달부터:: 구독 제작자는 999 = 999 (데스크톱) 또는 1299 = 1299 (모바일)을 받습니다.
수익은 30일 보류 대상이며, 구독 기간이 끝난 후 Robux 잔액에 추가됩니다. 사용자가 은행 또는 앱 스토어를 통해 구독료를 요청하면 Robux 잔액에 대한 환불이 수신됩니다. 이 경우 해당 트랜잭션에 대한 수수료가 부과되지 않습니다.
홀드 창 밖에서 받은 환불금은 Robux 잔액에서 공제된 환불금의 지불금으로 결제됩니다. 경험이 그룹 소유인 경우 그룹 잔액에 대한 공제금이 지불되지 않으면 나머지는 그룹 소유자의 Robux 잔액에서 공제됩니다.
사용자가 활성 구독을 취소하고 다시 구독하지 않으면 자동으로 환불되지 않습니다. 사용자는 수동으로 환불을 요청해야 하며, 이는 케이스 별 기반로 처리됩니다. 사용자 구독 환불 프로세스에 대한 자세한 내용은 도움말 센터를 참조하십시오.
구독 수당
페이아웃은 Robux Balance > My Transactions 에서 찾을 수 있습니다.
구독 및 그룹 구독 지불은 수신 Robux 아래에 나타나고, 환불은 0>수신0> Robux 아래에 나타납니다. 구독 및 그룹 구독 하위 항목에는 각각의 카테고리에 대한 자세한 정보가 제공됩니다.
개별 사용자의 환불 정보를 보려면 MarketplaceService:GetUserSubscriptionPaymentHistoryAsync()를 사용하십시오.
구독 분석
구독 분석은 개별 구독의 성공을 측정하고, 동향을 확인하고, 미래의 잠재적 수입을 예측하는 데 도움이 됩니다. 구독은 활성화된 후 구독 분석 페이지에 추가되며, 비활성화되거나 삭제되면 제거됩니다. 크리에이터 대시보드를 통해 사전
크리에이터 대시보드를 통해
크리에이터 대시보드에서 구독 분석에 액세스하려면:
크리에이터 대시보드의 생성 페이지로 이동하고 경험을 선택하세요.
수익 창출 탭으로 이동하고 구독을 선택합니다.
구독 분석은 다음과 같은 메트릭스를 추적합니다.
- 구독: 경험에 있는 총 구독 수.
- 예상 수입: 수수료 후 경험에 대한 순수익. 환불 정보를 포함하지 않습니다.
- 구독자 내역: 다양한 유형의 구독자.
- 새로운 서브스크립션 구매 수는 처음으로 구매한 구독자의 수입니다. 구매 수는 처음으로 구매한 구독자의 수입니다. 구매 수는 처음으로 구매한 구독자의 수입니다. 0> 구매 수는 처음으로 구매한 구독자의 수입니다. 3> 구매 수는 처음으로 구매한 구독자의 수입니다. 6> 구매 수는 처음으로 구매한 구독자의 수입니다. 9> 구매 수는 처음으로 구매한 구
- 갱신됨 : 이전 기간에 구매한 갱신 구독 수.
- 부활한 것은 수신자가 이전에 취소한 사용자의 수입니다. * 취소합니다. : 유효하지 않은 구독 수. 여기에는 모든 구독 취소, 사용자 취소, 크리에이터구독 비활성화 또는 다른 방법으로 구독을 비활성화 할 수 있습니다.
- 취소는 환불과 다릅니다. 취소된 구독은 더 이상 갱신되지 않지만 청구 기간의 나머지에 대해 완전히 지불되는 구독입니다. 반면 환불은 사용자에게 지불된 구독 금액을 반환합니다.
- 플랫폼 구독 : 각 플랫폼에서 구매한 구독 수.
- 플랫폼 수익 : 각 플랫폼에서 구매한 구독을 통해 얻은 순수익입니다.
이 정보는 추세 탭의 날짜 범위 기반 차트 형식과 기록 탭에서 제공하는 포괄적인 목록으로 표시됩니다.
웹 호크를 통해
클라우드 API 웹 후크 기능에는 4가지 구독 이벤트에 대한 트리거가 포함되어 있습니다: 취소, 구매, 환불 및 갱신. 이 알림은 즉시 발생하므로 실시간으로 응답하거나 사용자 정의 분석을 만들 수 있습니다. 웹 후크 설정에 대한 자세한 내용은 웹 후크 알림 을