미션 패키지

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

미션 기능 패키지는 플레이어가 완료하여 보상을 받고 경험을 진행할 수 있는 미션을 생성할 수 있는 즉시 사용 가능한 기능을 제공합니다. 모든 미션은 ID, 카테고리 및 플레이어가 미션을 완료하기 위해 수행해야 하는 작업 목록을 가져야 합니다. 그러나 작업 목록은 비워둘 수 있어, 미션의 보상을 즉시 클레임할 수 있습니다.

패키지의 사용자 정의 옵션을 사용하여 고유한 게임 플레이 요구 사항을 충족하도록 모든 미션을 개인화할 수 있습니다. 예를 들어:

  • 새로운 플레이어가 당신의 경험에 적응하도록 온보딩하는 미션을 생성하고 D1 유지율을 개선합니다.
  • 중장기 목표와 진행 감각을 추가하여 D7 및 D30 유지율을 목표로 합니다.
  • 게임 내의 다양한 시스템을 드러내고 플레이어가 상호작용할 때 보상을 제공하여 참여도를 증가시킵니다.

패키지 가져오기

크리에이터 스토어는 프로젝트 내에서 사용할 수 있는 Roblox와 Roblox 커뮤니티에서 제작한 모든 자산을 찾을 수 있는 툴박스의 탭입니다. 여기에는 모델, 이미지, 메쉬, 오디오, 플러그인, 비디오, 글꼴 자산이 포함됩니다. 크리에이터 스토어를 사용하여 열린 경험에 하나 이상의 자산을 직접 추가할 수 있으며, 기능 패키지도 포함됩니다!

모든 기능 패키지가 제대로 작동하려면 코어 기능 패키지가 필요합니다. 코어미션 기능 패키지 자산이 귀하의 인벤토리에 있으면 플랫폼의 어떤 프로젝트에서도 재사용할 수 있습니다.

인벤토리에서 패키지를 경험으로 가져오려면:

  1. Studio의 메뉴 또는 탭 툴바에서 툴박스를 엽니다.

  2. 툴박스 창에서 인벤토리 탭을 클릭합니다. 내 모델 정렬이 표시됩니다.

    Studio의 툴박스 창에서 인벤토리 탭이 강조 표시됨.
  3. 기능 패키지 코어 타일을 클릭한 다음 미션 기능 패키지 타일을 클릭합니다. 두 패키지 폴더가 탐색기 창에 표시됩니다.

  4. 패키지 폴더를 ReplicatedStorage로 끌어다 놓습니다.

미션 정의하기

각 완료 가능한 미션은 미션을 완료하기 위해 완료해야 할 작업 세트, 구성 옵션 및 선택적 표시 메타데이터를 포함하며, 이는 ReplicatedStorage.Missions.Configs.Missions 내에서 정의할 수 있습니다. 이와 관련된 유형은 동일 폴더의 Types 스크립트에서 내보낼 수 있습니다.

필수 필드

각 미션에 필요한 필드는 다음과 같습니다.

이름유형설명
missionIdstring주요 미션 테이블 키. 모든 미션은 고유한 문자열로 식별됩니다.
categoryIdstring미션은 카테고리에 속해야 하며, UI에서 카테고리별로 그룹화됩니다.
taskstable플레이어가 미션을 완료하기 위해 완수해야 하는 작업 목록입니다.

잠금 조건

기본적으로 미션은 플레이어에게 자동으로 잠금 해제되며 정확히 한 번만 완료할 수 있습니다. 그러나 다음 선택적 구성 옵션을 사용하여 이 동작을 변경할 수 있습니다.

이름유형설명
prerequisitestable미션이 잠금 해제되기 전에 완료해야 하는 다른 missionIds 목록입니다.
manualOnlybool미션의 자동 잠금 해제를 비활성화합니다. 대신, 미션을 잠금 해제하기 위해서는 함수를 호출해야 합니다. 다른 잠금 조건도 여전히 충족해야 합니다.
availableAfterUtcbool지정된 UTC 시간 이전에는 미션을 잠금 해제할 수 없습니다.
availableBeforeUtcbool지정된 UTC 시간 이후에는 미션을 잠금 해제할 수 없습니다. 이 시간 이전에 잠금 해제되었지만 완료되지 않은 경우, 미션이 실패합니다.
repeatablebool미션이 완료된 후 다시 잠금 해제됩니다.
repeatLimitnumber미션이 반복 가능할 경우, 이 횟수보다 더 반복할 수 없습니다.
repeatCooldownSecondsnumber미션이 반복 가능할 경우, 잠금 해제되기까지 지연 시간이 있습니다.
expireSecondsnumber미션이 잠금 해제되고 지정된 초 내에 완료되지 않으면 실패하게 됩니다.
expireCountOfflinebool미션에 expireSeconds가 있으며, expireCountOffline이 true로 설정된 경우, 플레이어가 경험에 실제로 있지 않을 동안의 시간이 미션 만료에 포함됩니다.

메타데이터

미션은 미션 사용자 인터페이스에 어떻게 표시될지를 명시하는 메타데이터를 가지고 있습니다. 다음 선택적 필드를 사용하여 메타데이터를 사용자 정의할 수 있습니다.

이름유형설명
displayNamestring미션의 missionId 대신 사용자 인터페이스에 표시할 이름입니다.
descriptionstring미션에 대한 추가 정보나 맥락을 제공하는 짧지 않은 텍스트 블록입니다.
visibleAfterCompletebooltrue로 설정하면, 미션이 완료된 후에도 목록에 표시되지만 완료됨으로 표시됩니다.
visibleAfterFailedbooltrue로 설정하면, 미션이 실패한 후에도 목록에 표시되지만 실패됨으로 표시됩니다.
visibleBeforeUnlockedbooltrue로 설정하면, 미션은 잠금 해제 가능하기 전에 목록에 표시되지만 잠겨 있습니다.
invisibleWhileActivebooltrue로 설정하면, 미션이 진행 중에도 보이지 않습니다.
rewardstable보상 표시 정보 목록입니다.
  • assetID (number) - 퀘스트의 보상 아래 미션 UI에 표시되는 이미지 ID입니다. 보상이 있는 경우 필수입니다.
  • displayName (string) - 아이콘 아래 미션 UI에 표시되는 이름입니다.

작업 정의하기

각 미션은 0개 이상의 작업을 가질 수 있습니다. 미션에 작업이 없는 경우, 잠금 해제와 동시에 클레임할 수 있습니다. 미션에 하나 이상의 작업이 있는 경우, 작업이 완료되면 플레이어는 미션과 관련된 보상을 수령할 수 있습니다. 각 작업에는 해당 미션과 관련된 키인 taskId가 있습니다.

작업은 두 가지 유형이 있습니다:

  • 시간 제한 작업 - 작업을 여러 시점에서 시작하고 중지할 수 있습니다. 작업 타이머가 실행되는 동안 특정 시간이 경과해야 하고, 그러면 작업이 완료됩니다.
  • 수량 작업 - 작업의 진행 상황을 추가하거나 설정할 수 있습니다. 진행 상황이 설정된 값에 도달하면 작업이 완료됩니다.

각 작업 유형은 다음 필드를 공유합니다.

이름유형설명
taskTypestring작업 유형이 수량 또는 시간 제한인지 지정합니다.
counterobject(선택 사항) 이 작업이 추적하는 카운터입니다. 카운터는 숫자 또는 타이머에 대한 플레이어 특정의 지속 가능한 저장소입니다. 여러 작업이 단일 카운터를 추적할 수 있습니다. 예를 들어, 여러 작업이 플레이어가 수집한 동전 수를 추적하는 경우, 모두 동일한 "동전" 카운터를 공유할 수 있습니다. 이러한 작업은 독립적으로 새로 수집된 동전을 추적할 수 있으며, 이 경우 0부터 시작하거나 카운터 값에서 계속 세어 나갈 수 있습니다(이미 수집된 모든 동전).
  • counterId (string) - 추적할 카운터의 ID입니다. 이 ID를 사용하여 카운터의 값을 가져오거나 설정합니다.
  • continueFromCounter (선택적 bool) - true로 설정하면 작업 진행 상황이 카운터의 값과 직접 일치합니다.
metadataobject(선택 사항) 작업이 UI에 표시되는 방법에 대한 정보입니다.
  • displayName (string) - UI에 표시될 작업의 이름입니다.
  • numericType (선택적 string) - 작업의 진행 숫자가 표시되는 방식입니다.
    • 분수, 예: 5/10 또는 5k/50k
    • 퍼센트, 예: 50% 또는 10%
    • 긴 분수, 예: 5/10 또는 5000/50000
    • 불리언, 예: 미완료
callToActionobject(선택 사항) 콜백 함수를 트리거하는 버튼입니다.
  • callback (function) - callToAction 버튼에 의해 트리거되는 함수입니다.
  • buttonText (string) - 버튼 UI에 표시되는 텍스트입니다.

수량 작업 필드

수량 작업에는 필수 값이 있습니다. 작업 진행 상황이 이 수치에 도달하면 작업이 완료됩니다.

이름유형설명
goalCountnumber(선택 사항) 작업을 완료하는 데 필요한 진행 상황입니다.

시간 작업 필드

시간 작업에는 소비해야 하는 목표 시간이 있으며 시작하고 정지합니다. 목표 시간이 충족되면 작업이 완료됩니다.

이름유형설명
goalSecondsnumber작업을 완료하기 위해 경과해야 하는 초의 수입니다.
startImmediatelybool작업이 시작된 이후가 아니라 잠금 해제되자마자 시간을 세기 시작해야 하는지 여부입니다.
includesOfflineTimebool플레이어가 경험에 적극적으로 참여하지 않을 때 소비된 시간을 포함해야 하는지 여부입니다.

카테고리 구성

카테고리는 명시적으로 정의할 필요는 없으며, 미션에 대한 카테고리는 기본값이 사용됩니다. 그러나 ReplicatedStorage.Missions.Configs.Categories에서 이러한 값을 구성하여 카테고리에 추가 효과를 추가할 수 있습니다. 카테고리는 고유한 CategoryIds로 식별되며, 이는 미션 구성에서 참조됩니다.

이름유형설명
repeatDelaySecondsnumber(선택 사항) 설정된 경우, 카테고리 내 모든 미션은 지정된 시간이 지날 때마다 리셋되며, 다시 잠금 해제되고 완료되며 보상을 클레임할 수 있습니다. 이는 주어진 카테고리 반복 내에서 반복될 수 있는 반복 가능한 미션과는 별개입니다.

서버 로직 통합

ReplicatedStorage.Missions.Server.Examples.MissionsExample를 확인하여 서버가 미션 기능 패키지와 어떻게 상호작용하는지 확인하십시오.

미션 기능 패키지를 경험에 드래그한 후 주로 네 가지를 연결해야 합니다:

  1. 미션 구성에서 미션을 정의합니다.

  2. 작업 진행 상황이나 해당 진행 상황이 연결된 카운터를 업데이트하는 로직을 경험에 추가합니다.

    README

    -- Jumps 작업으로 Jumping 미션의 진행 상황을 증가시킵니다.
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- TimeInBattle 작업으로 BattlingTime 미션의 타이머를 시작합니다.
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- TimeInBattle 작업으로 BattlingTime 미션의 타이머를 중지합니다.
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Jumps 카운터와 연결된 모든 작업의 진행 상황을 증가시킵니다.
    CounterSystem.addCounter(player, "Jumps", 1)
    -- TimeInBattle 타이머 카운터와 연결된 모든 시간 제한 작업의 타이머를 시작합니다.
    CounterSystem.startTimer(player, "TimeInBattle")
    -- TimeInBattle 타이머 카운터와 연결된 모든 시간 제한 작업의 타이머를 중지합니다.
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. 미션 완료 핸들러 및 선택적으로 잠금 해제 또는 실패 핸들러를 설정합니다. 완수 핸들러를 사용하여 경험에서 미션의 보상을 수여합니다.

    README

    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player}가 미션 {missionId}을 완료했습니다.`)
    -- 플레이어에게 보상을 수여합니다.
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. 자동으로 잠금 해제되지 않은 미션을 잠금 해제합니다. 미션 기능 패키지 로직은 미션이 완료되기 전에 모든 미션 요구 사항이 충족되도록 합니다. 그리고 그 보상을 수령할 수 있습니다.

    README

    Missions.unlockMission(player, "Manual")

상수 구성

코어 기능 패키지의 상수는 두 개의 위치에 있습니다:

  • 공유 상수는 ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants에 존재합니다.

  • 패키지별 상수, 즉 미션 기능 패키지의 경우 ReplicatedStorage.Missions.Configs.Constants에 존재합니다.

추가로, 번역을 위한 문자열은 하나의 위치인 ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings에 나누어져 있습니다.

UI 구성 요소 사용자 정의

패키지 객체(색상, 글꼴 및 투명도 등)를 수정하여 미션 UI의 시각적 프레젠테이션을 조정할 수 있습니다. 예를 들어, ReplicatedStorage.Missions.Configs.Constants에서 SingleTaskMode를 활성화하면 하나의 작업만 있는 미션에 대해 미션 자체에 진행 바를 표시할 수 있습니다.

마지막으로, 경험에 이미 존재하는 UI와 미션 기능 패키지를 통합하고자 하는 경우, 클라이언트 ModuleScript MissionsClient에는 서버에서 플레이어의 미션 정보를 전송하는 데 필요한 모든 기능이 포함되어 있습니다.

©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.