참여 기반 페이아웃

자동 참여 기반 페이아웃 프로그램은 체험의 규모에 관계없이 Premium 회원이 체험에 참여하는 시간에 따라 Robux를 획득할 수 있는 프로그램입니다. 본 페이아웃은 패스와 같은 수익 창출 방법 외에 추가로 지급되는 수입원입니다.

Premium 가입자를 늘리고 참여 기반 페이아웃 지급 가능성을 높이기 위해 Premium 구매 모달을 체험에 직접 추가할 수 있습니다.

페이아웃 데이터에 액세스하기

페이아웃 데이터는 Premium 가입자를 체험으로 이끄는 요소의 이해에 도움을 주는 중요한 피드백을 제공할 수 있습니다.

  1. 크리에이터 대시보드로 이동합니다.

  2. 원하는 체험 위로 마우스를 가져간 다음 아이콘을 클릭하고 개발자 통계를 선택합니다.

    크리에이터 대시보드의 체험 옵션 메뉴에 있는 개발자 통계 옵션
  3. 상단의 탐색 메뉴에서 참여 기반 페이아웃 탭을 클릭합니다.

    크리에이터 대시보드의 개발자 통계 페이지에 있는 참여 기반 페이아웃 탭

Premium 페이아웃

참여 기반 페이아웃 차트는 다음 메트릭을 기반으로 페이아웃 데이터를 추적합니다.

Premium 플레이타임 점수는 Premium 가입자가 하루에 체험에 참여하는 시간입니다. 이 메트릭은 출시하는 새로운 기능의 영향에 대한 즉각적인 피드백을 줄 수 있습니다.

획득한 Premium 플레이타임 Robux는 Premium 가입자 참여로 획득할 수 있는 금액입니다. 이 메트릭은 Premium 가입자가 하루에 체험에서 보낸 시간이 아닌 지난 28일 동안 각 사용자의 행동을 집계한 것입니다. 그러므로 유사한 경향을 보이기는 하지만 이 메트릭은 Premium 플레이타임 점수와 직접적인 수치적 관련성이 없습니다.

참여 기반 페이아웃 데이터를 추적하는 차트 예

Premium 방문 수

Premium 방문 수 차트는 Premium 회원의 방문 횟수를 추적합니다. 드롭 다운 메뉴를 사용하면 Premium 방문 비율, Premium 방문 수 또는 총 방문 수 중 하나를 선택할 수 있습니다.

Premium 회원의 방문 횟수를 추적하는 차트 예

Premium 구매 모달

참여 기반 페이아웃을 늘리는 한 가지 전략은 구매 모달을 통해 Premium 업그레이드를 권장하는 것입니다. 플레이어는 체험 내에서 구매 절차를 모두 완료할 수 있으며 Premium 멤버십 및 Robux 최초 지급 모두를 즉시 받게 됩니다.

체험 내 Premium 구매 모달
체험 내 Premium 구매 모달

Premium 멤버십이 체험을 즐기기 위한 '요구 사항'이 되어서는 안 됩니다. Premium 회원을 위한 인센티브를 구현할 때는 다음의 모범 사례를 따르는 것이 좋습니다.

  • 체험의 설명 란에 업그레이드의 혜택을 정직하고 정확하게 설명하세요.
  • Robux 또는 직접 운영하지 않는 체험 외부의 기타 보상을 약속하지 마세요.
  • Premium 비회원이 체험에 입장할 때 모달을 '페이월'로 표시하지 마세요.
  • Premium 회원에게 독점적인 굿즈을 제공하는 것을 고려하되, Premium 비회원이 따라갈 수 없는 초강력 무기 제공과 같은 전술적인 게임 플레이의 이점을 제공하지 마세요.

멤버십 확인

Premium 멤버십 또는 모달 트리거와 관련된 로직을 스크립팅하기 전에 사용자의 MembershipType 속성을 ​​확인하여 기존의 가입 여부를 확인하세요.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Premium 회원을 위한 특별 조치를 취하세요
end

모달 트리거하기

PromptPremiumPurchase() 메서드를 사용하여 구매 모달을 트리거할 수 있습니다. 예를 들어, 다음 코드는 Script가 포함된 부분에 캐릭터가 닿을 때 사용자에게 Premium을 구매하라는 메시지를 표시합니다(예: 특별 영역에 대한 액세스를 허용하는 텔레포터).


local Players = game:GetService("Players")
local teleporter = script.Parent
local showModal = true
local TELEPORT_POSITION = Vector3.new(1200, 200, 60)
-- 캐릭터를 특별 지역으로 텔레포트
local function teleportPlayer(player)
-- 대상 위치 주변의 스트리밍 요청
player:RequestStreamAroundAsync(TELEPORT_POSITION)
-- 캐릭터 텔레포트
local character = player.Character
if character and character.Parent then
local currentPivot = character:GetPivot()
character:PivotTo(currentPivot * CFrame.new(TELEPORT_POSITION))
end
end
-- 텔레포터에 닿는 캐릭터 파트 감지
teleporter.Touched:Connect(function(otherPart)
local player = Players:GetPlayerFromCharacter(otherPart.Parent)
if not player then return end
if not player:GetAttribute("CharacterPartsTouching") then
player:SetAttribute("CharacterPartsTouching", 0)
end
player:SetAttribute("CharacterPartsTouching", player:GetAttribute("CharacterPartsTouching") + 1)
if player.MembershipType == Enum.MembershipType.Premium then
-- 사용자가 Premium을 보유 중. 체험 내 특별 지역으로 캐릭터 텔레포트
teleportPlayer(player)
else
-- 디바운스를 사용하여 최대 몇 초에 한 번씩 표시하는 구매 모달 표시
if not showModal then return end
showModal = false
task.delay(5, function()
showModal = true
end)
MarketplaceService:PromptPremiumPurchase(player)
end
end)
-- 텔레포터에서 나오는 캐릭터 파트 감지
teleporter.TouchEnded:Connect(function(otherPart)
local player = Players:GetPlayerFromCharacter(otherPart.Parent)
if player and player:GetAttribute("CharacterPartsTouching") then
player:SetAttribute("CharacterPartsTouching", player:GetAttribute("CharacterPartsTouching") - 1)
end
end)
-- 멤버십 변경 이벤트 처리
Players.PlayerMembershipChanged:Connect(function(player)
warn("User membership changed; new membership is " .. tostring(player.MembershipType))
-- 회원 유형이 Premium이고 캐릭터가 텔레포터에 있는 경우 캐릭터 텔레포트
if player.MembershipType == Enum.MembershipType.Premium and player:GetAttribute("CharacterPartsTouching") > 0 then
teleportPlayer(player)
end
end)