플레이어 초대 프롬프트

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

일반적인 홍보 방법 외에도, 게임 내부에 초대 프롬프트를 직접 구현하여 플레이어들이 친구들을 초대하고 공동 경험 게임 플레이를 증가시키도록 유도할 수 있습니다.

초대 프롬프트 시스템의 기능은 다음과 같습니다:

  • 동적 초대자 — 플레이어가 선택 목록에서 여러 친구를 초대하거나 특정 친구 한 명을 초대하도록 유도합니다.
  • 발사 데이터 — 초대된 친구가 합류할 때 Player:GetJoinData()를 통해 읽을 수 있는 선택적 발사 데이터를 포함합니다. 예시 사용 사례로는 초대된 친구를 특정 좌표로 라우팅하거나 초대 대상자의 개인화된 게임을 설정할 수 있습니다.
  • 사용자 정의 텍스트초대 프롬프트 메시지와 알림 메시지를 사용자 정의할 수 있습니다. 예를 들어, 플레이어를 위한 초대 프롬프트는 "친구에게 모험에 참여하라고 요청하세요!"일 수 있으며, 초대된 친구들에 대한 알림 메시지는 "{displayName}가 {experienceName}의 모험에 참여하라고 합니다!"으로 표시될 수 있습니다.

또한 친구 초대 보상 시스템을 사용하여 초대한 사람과 초대된 사람을 추적하고 보상할 수 있습니다.

초대 옵션 설정

기본적으로 플레이어의 초대 프롬프트는 초대 버튼이 있는 친구 목록 메뉴를 보여줍니다. 프롬프트 메시지를 사용자 정의하거나 특정 친구를 목표로 하거나 초대에 발사 데이터를 포함하려면 ExperienceInviteOptions 객체를 설정해야 합니다.

속성타입설명
PromptMessagestring발송하는 플레이어에게 표시되는 초대 프롬프트의 사용자 정의 텍스트로, 예를 들어 "친구에게 모험에 참여하라고 요청하세요!"는 다수 친구 초대 프롬프트를 위한 것, "이 친구에게 모험에 참여하라고 초대하세요!"는 특정 친구 초대 프롬프트를 위한 것입니다. 사용자 정의 초대 프롬프트 메시지가 UI의 범위를 넘을 만큼 길 경우, 표시되지 않습니다.
InviteUsernumber초청할 특정 친구의 Roblox UserId; 제공되지 않으면, 플레이어는 친구 목록에서 선택하게 됩니다.
InviteMessageIdstring친구들이 받는 초대 알림의 사용자 정의 문자열을 저장/지역화하기 위한 알림 자산 유형으로 매핑되는 자산 ID입니다. 자세한 내용은 알림 옵션 설정을 참조하세요.
LaunchDatastring친구가 초대 알림을 통해 합류할 때 Player:GetJoinData()에서 매개변수를 설정하는 데 사용됩니다. 최대 200자. 사용 예는 발사 데이터 포함을 참조하세요.
LocalScript - 여러 친구 초대
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- 사용자 정의 프롬프트 메시지로 초대 옵션 구성
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions.PromptMessage = "친구에게 모험에 참여하라고 요청하세요!"

알림 옵션 설정

기본적으로 친구가 받는 초대 알림에는 발송자의 DisplayName, 사용자 이름 및 게임 이름이 포함됩니다. 메시지를 사용자 정의하려면 Creator Dashboard에서 알림 자산을 생성하고 자산 ID를 ExperienceInviteOptions의 매개변수로 포함하면 됩니다.

  1. Creator Dashboard로 이동합니다.

  2. 뱃지와 유사하게, 알림 문자열은 특정 게임과 연결됩니다. 해당 게임의 섬네일을 찾아 클릭합니다.

  3. 왼쪽 열에서 참여 아래의 알림을 클릭합니다.

  4. 중앙 영역에서 알림 문자열 생성 버튼을 클릭합니다.

  5. 식별자 이름(본인에게만 보임)과 사용자 정의 알림 텍스트를 입력합니다. 초대된 친구들을 위한 게임의 이름을 식별하기 위해 **{experienceName}**를 플레이스홀더로 포함해야 하며, 발송자의 DisplayName{displayName} 플레이스홀더를 통해 선택적으로 포함할 수 있습니다.

    예시 알림 문자열:

    • {displayName}가 {experienceName}의 모험에 참여하라고 합니다!
    • {displayName}가 {experienceName}의 여섯 번째 단계를 클리어했습니다. 당신은 할 수 있나요?
  6. 준비가 되면, 알림 문자열 생성 버튼을 클릭합니다.

  7. 알림 페이지에서 알림 목록의 작업 열의 버튼을 클릭하고 자산 ID 복사를 선택합니다.

  8. 초대 프롬프트의 ExperienceInviteOptions 객체에서 InviteMessageId 속성의 값으로 자산 ID를 붙여넣습니다.

    LocalScript - 여러 친구 초대
    local SocialService = game:GetService("SocialService")
    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    -- 친구의 사용자 ID로 초대 옵션 구성
    local inviteOptions = Instance.new("ExperienceInviteOptions")
    inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"

초대 프롬프트

초대를 프롬프트하려면 먼저 플레이어가 초대를 보낼 수 있는지 확인해야 합니다. 이는 플랫폼이나 플레이어에 따라 다를 수 있습니다. 확인이 완료되면 플레이어에게 초대 프롬프트를 표시할 수 있습니다.

  1. SocialService:CanSendGameInviteAsync()를 호출하고, 이는 비동기 네트워크 호출이므로 실패할 가능성이 있으므로 pcall()로 감싸야 합니다.
  2. 초대 가능성이 확인되면, 두 번째 인수로 선택적 초대 옵션 객체를 포함하여 SocialService:PromptGameInvite()를 호출합니다.

초대 프롬프트가 표시되면 플레이어는 여러 친구를 초대하거나 초대 옵션 객체에 정의된 특정 친구를 초대하기 위한 화면 프롬프트를 보게 됩니다. 이후 플레이어가 하나 이상의 친구에 대해 초대 버튼을 클릭하면, 해당 친구들은 발송자의 DisplayName, 사용자 이름 및 경험 이름을 포함한 알림을 받게 됩니다. 알림은 알림 옵션 설정에서 설명된 대로 추가로 사용자 정의할 수 있습니다.

LocalScript - 여러 친구 초대
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- 초대를 보낼 수 있는지 확인하는 함수
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
SocialService:PromptGameInvite(player)
end

발사 데이터 포함

경험 내 협력을 더욱 향상시키거나 플레이어 초대를 유도하기 위해, 초대 프롬프트에 발사 데이터를 포함할 수 있습니다. 이는 초대된 친구를 특정 좌표로 안내하거나 초대한 친구를 위한 개인화된 게임을 세팅하는 데 유용합니다.

  1. 초대 프롬프트 표시 시, 친구가 게임에 합류할 때 사용될 관련 데이터로 ExperienceInviteOptions 객체를 포함합니다. 예를 들어 발송자의 Player.UserId, 친구에게 합류 시 수여할 뱃지의 ID 또는 친구가 생성될 좌표 등을 포함할 수 있습니다. 여러 데이터를 함께 사용할 경우, JSONEncode()를 이용해 데이터를 인코딩합니다.

    LocalScript - 여러 친구 초대
    local HttpService = game:GetService("HttpService")
    local SocialService = game:GetService("SocialService")
    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local data = {
    senderUserID = player.UserId,
    spawnLocation = {12, 48, 205.5}
    }
    local launchData = HttpService:JSONEncode(data)
    -- 발사 데이터로 초대 옵션 구성
    local inviteOptions = Instance.new("ExperienceInviteOptions")
    inviteOptions.LaunchData = launchData
    -- 초대를 보낼 수 있는지 확인하는 함수
    local function canSendGameInvite(sendingPlayer)
    local success, canSend = pcall(function()
    return SocialService:CanSendGameInviteAsync(sendingPlayer)
    end)
    return success and canSend
    end
    local canInvite = canSendGameInvite(player)
    if canInvite then
    SocialService:PromptGameInvite(player, inviteOptions)
    end
  2. 알림을 통해 합류한 친구들은 서버 측에서 Player:GetJoinData()를 통해 발사 데이터를 확인해야 합니다. 초대 프롬프트에 여러 데이터 조각을 JSON으로 인코딩 했다면, JSONDecode()로 디코딩해야 합니다.

    Script - 초대 발사 데이터 사용
    local HttpService = game:GetService("HttpService")
    local Players = game:GetService("Players")
    local ATTEMPT_LIMIT = 10
    local RETRY_DELAY = 1
    local function onPlayerAdded(player)
    local launchData
    for _ = 1, ATTEMPT_LIMIT do
    task.wait(RETRY_DELAY)
    local joinData = player:GetJoinData()
    if joinData.LaunchData ~= "" then
    launchData = joinData.LaunchData
    break
    end
    end
    if launchData then
    local data = HttpService:JSONDecode(launchData)
    print(data.senderUserID)
    print(data.spawnLocation)
    else
    warn("발사 데이터를 수신하지 못했습니다!")
    end
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  3. 발사 데이터가 존재하는 경우, 이를 활용하여 다양한 디자인 시나리오를 처리할 수 있습니다:

    • 발송자가 방금 완료한 도전적인 장애물 코스의 시작 지점에 수신 친구를 스폰합니다. 이는 발사 데이터를 통해 전달된 좌표 위치를 기반으로 합니다.
    • 발송자가 있는 장소를 확인하고, 발사 데이터의 Player.UserId를 기반으로 친구의 캐릭터를 발송자의 캐릭터 근처로 텔레포트합니다.
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.