구독

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

경험 내 구독 은 사용자에게 월 요금으로 반복되는 혜택을 제공할 수 있게 해줍니다.패스와 비슷하게 패스 , 구독과 패스의 주요 차이점은 패스의 혜택이 영구적으로 부여되는 반면, 구독의 혜택은 사용자가 월간 요금을 지불하는 것에 달려 있다는 점입니다.Roblox의 구독에는 다음과 같은 특징이 있습니다:

  • 자동 갱신: 구독은 일회성 구매가 아니라 자동으로 갱신되며 지역 통화로 가격이 책정됩니다.
  • Robux 페이아웃: Robux로 구독 수익을 받습니다. 자세한 내용은 구독으로 수익 창출을 참조하십시오.
  • 단일 계층: 경험 내의 모든 구독은 동시에 사용자가 소유할 수 있습니다.상호 배타적 구독은 지원되지 않습니다.

사용자는 Roblox 기프트 카드 크레딧 또는 신용 또는 직불 카드를 사용하여 데스크톱 앱 또는 웹사이트에서 구독을 구매할 수 있으며, 적격 지역의 Apple 및 Google 스토어에서 지불 방법을 통해 구매할 수 있습니다.사용자는 Roblox 계정 설정의 구독 탭에서 구독 구매를 보고 관리할 수 있습니다.

구독은 미래에 더 많은 지역으로 확장됩니다. 사용할 수 없는 지역에는 다음이 포함됩니다. 아르헨티나, 콜롬비아, 인도, 인도네시아, 일본, 러시아, 대만, 터키(터키), UAE, 우크라이나 및 베트남.

구독 가이드라인

구독을 만들기 전에, Roblox의 이용 약관과 일치하고 지역 법률을 준수하는지 확인하십시오.사기에 참여하거나, 잘못된 제안으로 사용자를 오도하거나, 기타 방법으로 커뮤니티 표준을 위반하는 모든 경험은 삭제됩니다.또한 구독이 다음 가이드라인을 준수하도록 하십시오:

  • 지우다구별 가능한 구독 옵션 제공: 구독 옵션을 서로 구분하는 짧고 간결하며 자세히 설명되는 이름을 사용합니다.경험 내에서 상품화할 때 각 옵션의 가격과 기간을 지정합니다.
  • 플랫폼과 장치 간에 동일한 혜택 제공: 구독이 어디에서 구매되었는지에 관계없이 사용자가 지정된 구독 플랜에 대해 동일한 혜택을 받도록 합니다.
  • 서로 맞추고 전체 경험 제공과 함께 디자인 구독: 동일한 혜택 세트를 제공하여 "브론즈", "실버" 및 "골드" 세그먼트를 상호 배타적으로 제공하는 것과 같은 티어링은 현재 사용할 수 없습니다.구독이 서로 다른 혜택 집합을 나타내도록 합니다.
  • 구독 기간 전체에 대한 혜택 제공: 구독 제안이 라이브되면 설명된 혜택을 존중하고 배경에서 혜택을 취소하지 않습니다.
  • 사용자를 다른 플랫폼에서 구매하도록 지시하지 마십시오(예:모바일, 웹 등.) 경험 내: 플랫폼 사용자와 커뮤니케이션할 수 있지만 Roblox 앱을 사용하여 사용자를 다른 곳으로 연결하여 구매하도록 지시하는 것은 금지됩니다.
  • 사용자가 유료후 추가 요구 사항으로 게이트 구독 혜택을 받지 않으십시오: 사용자에게 소셜 미디어에 게시와 같은 추가 작업을 수행하도록 요구하여 지불한 혜택에 액세스하도록 하는 것은 금지되어 있습니다.이 가이드라인은 구독 구매로 만들고 마켓플레이스에서 판매할 수 있는 배틀 패스에 영향을 주지 않습니다.

구독 만들기

구독을 만들기 전에 전화 또는 ID가 확인되어야 합니다. 구독을 만들려면:

  1. 크리에이터 대시보드에서 경험으로 이동하고 수익 창출 제품 > 구독 을 선택하십시오.그런 다음 구독 생성을 클릭하십시오 .

  2. 구독에 대한 커버 이미지를 업로드합니다. 이미지는 조정 후 다른 사람들에게 표시됩니다.

  3. 독특한 구독 이름 을 만듭니다.경험 내의 두 구독은 동일한 이름을 공유할 수 없습니다.이 구독 이름은 청구 문서에서 경험 이름의 짧은 버전과 함께 표시됩니다.허용되는 문자는 a-z, A-Z, 0-9, 공백 및 .,:/!?@#&'입니다.

  4. 구독의 설명 을 작성합니다.구독을 구매하기로 결정할 때 사용자가 보는 것입니다.설명에서는 구독 제공이 제공하는 이점을 명확하게 설명해야 합니다.설명은 1,000자로 제한되며 이모티콘을 지원합니다.구독을 활성화하면 해당 이점을 줄일 수 없습니다.

  5. 구독 제품 유형 을 선택합니다. 세 가지 제품 유형이 있습니다.

    1. 내구성: 물리적 아이템처럼 사용 또는 획득 후에도 지속되는 영구 아이템, 예를 들어 무기.구독에 가치 팩, 검, 물약과 같은 다양한 유형의 상품 번들이 포함되어 있고 그 중 하나 이상이 지속 가능하면 제품 입력 지속 가능 을 선택하십시오.
    2. 소모품: 사용 또는 획득 후 만료되는 일시적으로 재구매할 수 있는 아이템, 시간이 지남에 만료되는 임시 부스트를 부여하는 소모품 포션과 같은 소모품.
    3. 통화: 사용자가 경험 내에서 아이템을 구매할 수 있는 모든 교환 수단.
  6. 구독의 가격 (USD)을 선택합니다.웹 가격에 따라 Robux를 획득합니다.모바일 앱 구독자는 더 높은 가격으로 청구됩니다.구독자는 지역 통화로 청구됩니다.

  7. 반복 주기 는 사용자가 구독에 얼마나 자주 청구되는지를 나타냅니다. 현재 이 값은 항상 월간입니다.클릭 구독 생성 .

  8. 세부 사항을 다시 확인하고 생성 을 클릭하십시오.

구독 활성화

구독이 판매에 들어갈 준비가 되면 구독 타일의 오른쪽 상단 모서리에서 를 클릭하고 활성화 를 선택합니다.활성화된 구독은 경험 세부 정보 페이지와 경험 자체 내에서 판매할 수 있습니다.

처음으로 구독을 활성화하기 전에 경험 이름의 축약된 버전을 확인해야 합니다.이 짧은 경험 이름은 사용자가 가입때 표시되며, 구독 생성에서 만든 구독 이름 옆에 표시됩니다.Roblox와 App Store 설정에서 구독 관리도 가능합니다.

구독 편집

활성 및 비활성 구독 간에 경험당 최대 50개의 구독을 가질 수 있습니다.구독을 편집하려면 크리에이터 대시보드에서 경험으로 이동하고 수익 창출 제품 > 구독 을 선택합니다.

구독의 이미지, 설명 또는 상태를 편집할 수 있습니다.이러한 속성 이상을 편집하려면 원하는 변경 사항으로 구독을 삭제하고 다시 만들어야 합니다.

이미지 변경

구독의 이미지를 업데이트하려면:

  1. 구독이 선택되면 변경 버튼을 클릭하십시오.

  2. 새 이미지를 선택하고 저장 을 클릭한 다음 변경 사항 저장 을 클릭하십시오. 검열을 성공적으로 통과한 후 새 이미지가 라이브로 전환됩니다.

설명 변경

구독 설명을 변경하려면:

  1. 구독이 선택되면 설명 필드를 클릭하십시오.
  2. 설명을 편집한 다음 변경 사항 저장 을 클릭하십시오. 설명은 1,000자로 제한되며 이모티콘을 지원할 수 있습니다.
  3. 확인 창에서 예, 확인 을 클릭하여 변경 사항을 확인하세요. 설명 업데이트가 즉시 반영됩니다.

상태 변경

구독에는 두 가지 상태가 가능합니다:

  • 활성 — 활성 구독은 판매 가능하며, 구독자는 다음 기간 시작 시 구독을 갱신할 수 있습니다.
  • 비활성 — 비활성 구독은 판매할 수 없습니다.

구독 상태를 변경하려면:

  1. 구독 페이지에서 구독 타일의 오른쪽 상단 모서리에서 를 클릭하십시오.구독의 현재 상태에 따라 활성화 또는 판매 중단 디스플레이를 표시하세요, 다른 옵션과 함께.
  2. 상태를 전환하려면 활성화 또는 판매 중단 을 선택하여 구독 상태를 전환하십시오.
    1. 판매 중단을 선택하면 기존 구독자가 갱신하거나 미래의 갱신을 취소할 수 있는 옵션이 제공됩니다.일반적으로 기존 구독자가 해당 경험에서 영구적으로 연관된 구독 혜택을 제거할 계획이 없는 한 기존 구독자의 갱신을 허용하는 것이 좋습니다.

구독을 경험에 통합

이 코드 샘플은 경험에서 구독 검색을 구현하는 간단한 예입니다.


-- 서버에서 이 코드 실행
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)

게임 패스를 구독으로 교체

경험에서 구독을 롤아웃하는 한 가지 옵션은 기존 게임 패스를 구독으로 교체하는 것입니다.새로운 기능이나 보상을 추가하지 않고 경험에 빠르게 구독을 구현하려는 경우 이는 좋은 옵션입니다.

게임 패스를 구독으로 교체할 때 두 가지 중요한 고려 사항이 있습니다.

  • 게임 패스의 기존 보유자는 지불한 혜택을 계속 받아야 합니다.
  • 게임 패스는 새로운 사용자가 구독을 구매할 수 있도록 판매가 중단되어야 합니다.
  • 구독을 취소할 수 있으므로 이전에 게임 패스가 데이터 상점혜택을 유지했다면 이러한 혜택을 "취소"해야 합니다.이 고려 사항은 모든 게임 패스 구현에 적용되지 않지만 더 복잡한 것들에 적용될 수 있습니다.

다음 코드 샘플은 게임 패스를 구독으로 교체하는 방법을 보여줍니다:


-- 서버에서 이 코드 실행
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)

빠른 구독 구매 요청

사용자가 경험의 게임 세부 정보 페이지에서 구독을 직접 구매할 수는 있지만, 게임 내에서 구독을 구매할 수 있는 방법을 추가해야 합니다.

구독 구매를 요청하면 플레이어가 이미 구독을 소유하고 있으면 발생하며, 플레이어가 게임 세부 정보 페이지에서 구독을 구매하는 동안 이미 게임에 있는 시나리오를 캡처할 수 있습니다.

클라이언트에서 구독 구매를 요청할 수는 있지만, 사용자가 이미 구독을 가지고 있는지 여부를 확인하려면 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에서 사용할 수 있습니다.

구독으로 수익 창출

구독은 지역 통화로 가격이 책정되지만, 플랫폼 요금 후에 선택한 기본 플랫폼 가격에 따라 1 Robux당 US$0.01에서 1 Robux의 Robux를 획득합니다.Roblox는 첫 달에만 30%의 플랫폼 수수료를 청구하므로, 두 번째 달부터 전체 구독 수익을 받게 됩니다.이 수익 분할은 모든 플랫폼에서 일관됩니다.

예를 들어, 사용자가 기본 가격인 US$9.99(데스크톱) 또는 US$12.99(모바일)에 구독하면:

  • 첫 달: 구독의 크리에이터는 999 * .7 = 699 (데스크톱) 또는 1299 * .7 = 909 (모바일)을 받습니다.
  • 두 번째 달부터: 구독의 크리에이터는 999 = 999 (데스크톱) 또는 1299 = 1299 (모바일)을 받습니다.

수익은 30일 보류 기간을 거쳐야 하며 구독의 전체 기간이 제공된 후 Robux 잔고에 추가됩니다.사용자가 월 간 보류 기간 내에 은행이나 앱 스토어를 통해 구독 환불을 요청하면 보류가 취소되고 해당 거래에 대한 지불금은 받지 않습니다.

보유 창 외부에서 받은 환불은 환불된 거래의 지불액이 Robux 잔고에서 공제되는 결과로 이어집니다.경험이 그룹에 소유되고 그룹의 잔액이 공제할 금액보다 작으면 나머지는 그룹 소유자의 Robux 잔액에서 공제됩니다.

활성 구독을 취소하고 갱신하지 못하는 사용자는 자동으로 환불되지 않습니다.사용자는 수동으로 환불을 요청해야 하며, 이는 사례별로 처리됩니다.사용자 구독 환불 프로세스에 대한 자세한 정보는 도움말 센터를 참조하십시오.

구독 지불금

지급은 Robux 잔고 > 내 거래 에서 찾을 수 있습니다.

구독그룹 구독 지불은 들어오는 Robux 아래에 표시되고, 환불은 출간 Robux로 그룹화됩니다. 지불 반환은 지불 취소 로 분류됩니다.구독 및 그룹 구독 하위 페이지는 각각의 범주에 대한 추가 정보를 제공합니다.

개별 사용자의 환불 정보를 보려면 MarketplaceService:GetUserSubscriptionPaymentHistoryAsync()를 사용하십시오.

구독 애널리틱스

구독 분석 은 개별 구독의 성공을 측정하고, 동향을 식별하고, 미래의 잠재적 수익을 예측하는 데 도움이 됩니다.구독은 활성화된 후 처음으로 구독 분석 페이지에 추가되며 비활성화되거나 삭제되면 제거되지 않습니다.크리에이터 대시보드를 통해 사전 제작된 분석에 액세스할 수 있거나, 웹훅을 사용하여 실시간으로 구독 업데이트를 캡처할 수 있습니다.

크리에이터 대시보드

크리에이터 대시보드에서 구독 분석에 액세스하려면:

  1. 크리에이터 대시보드의 생성 페이지로 이동하고 경험을 선택하십시오.

  2. 수익 창출 탭으로 이동하고 구독 을 선택합니다.

구독 분석은 다음 메트릭을 추적합니다:

  • 구독: 경험에서 활성 구독의 총 금액.
  • 예상 수익: 수수료 후 경험에 의해 얻은 순수익. 환불 정보를 포함하지 않음.
  • 구독자 분석: 다양한 유형의 구독자.
    • 새로운 : 처음 구독하는 구독자의 구독 구매 수.
    • 갱신됨 : 이전 기간에 구매한 갱신 구독 수.
    • 부활됨 : 이전에 취소한 사용자가 구매한 새 구독 수.
  • 취소 : 갱신되지 않은 구독 수.여기에는 트리거에 관계없이 모든 취소가 포함되며, 사용자 취소, 크리에이터에 의한 구독 비활성화 또는 다른 수단에 의한 취소가 포함됩니다.
    • 취소는 환불과 다릅니다.취소된 구독은 더 이상 갱신되지 않지만 청구 주기의 나머지 기간 동안 전액 지불되는 구독이고, 환불은 사용자에게 지불된 구독 금액을 반환합니다.
  • 플랫폼별 구독 : 각 플랫폼에서 구매한 구독 수.
  • 플랫폼 수익 : 각 플랫폼에서 구매한 구독을 통해 얻은 순수익.

이 정보는 추세 탭의 날짜 범위를 기반으로 한 차트 형태와 역사 탭에서 제공되는 전체 구독 목록의 형태로 표시됩니다.

웹훅을 통해

클라우드 API 웹훅 기능에는 4개의 구독 이벤트에 대한 트리거가 포함되어 있습니다: 취소, 구매, 환불 및 갱신.이러한 알림은 즉시 발생하므로 실시간으로 응답하거나 사용자 지정 애널리틱스수 있습니다.웹훅을 설정하는 방법에 대한 자세한 정보는 웹훅 알림을 참조하십시오.