[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 리소스 종류별 사용 권한 차이를 3문장 이내로 비교하여 서술해 주세요. [answer] | 메이플스토리 월드 리소스는 모든 크리에이터가 자유롭게 사용할 수 있습니다. Workspace 리소스는 해당 월드 내에서만 사용할 수 있는 제한이 있습니다. Resource Storage 리소스는 기본적으로 월드 제작자와 소유자가 일치해야 하지만, 공유 설정 시 모든 유저가 사용할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | code [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체의 "ff" 형식으로 1/100 초 단위의 값을 문자열로 추출하여 로그에 출력하는 스크립트를 작성해줘 [answer] | `TimeSpan` 객체의 1/100 초 단위 값을 문자열로 추출하려면 `ToFormattedString` 메서드에 `"ff"` 형식 지정자를 사용합니다. 0-99 범위의 값이 두 자리 문자열로 출력되며, 100 이하의 값은 앞에 0이 채워집니다. ```lua local timeSpan = TimeSpan(876) log(timeSpan:ToFormattedString("ff")) -- 87 ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "
[task] | code [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체의 "%m" 형식으로 분 수만 문자열로 추출하여 로그에 출력하는 스크립트를 작성해줘 [answer] | `TimeSpan` 객체의 `ToFormattedString` 메서드에 `"%m"` 서식 문자열을 전달하면 분 수만 문자열로 반환됩니다. 분 값이 0에서 9 사이일 경우 한 자리 숫자 문자열을, 10 이상일 경우 두 자리 숫자 문자열을 반환합니다. 단독으로 사용할 때 표준 서식 지정자로 오인되지 않도록 `%` 기호를 함께 사용하는 것이 정확한 사용법입니다. ```lua local timeSpan = TimeSpan(16, 4, 3, 17, 250) local timeSpanString = timeSpan:ToFormattedStr [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | "F" 서식 지정자를 단독으로 사용할 때 "%F"로 표기해야 하는 구체적인 이유는 무엇인가요? [answer] | "F" 서식 지정자를 단독으로 사용할 때 "%F"로 표기해야 하는 구체적인 이유는 표준 서식 지정자로 잘못 해석되지 않도록 방지하기 위해서입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "fff" 사용자 지정 서식 지정자는 밀리초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 문자열로 TimeSpan 객체를 생성할 경우 문자열에는 정확히 소수 세 자리가 포함되어야 합니다. ```lua local timeSpan = TimeSpan(876) log(timeSpan:ToFormattedString("fff")) -- 876 ``` #### "F" "F" 사용자 지정 서식 지정자는 1/10 초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 1/10초 값이 0이라면 결과
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | Resource Storage에서 MSW 리소스를 복제(Duplicate)한 후 피봇을 포함한 메타 정보를 편집하는 과정을 단계별 번호 목록으로 요약해 주세요. [answer] | Resource Storage에서 MSW 리소스를 복제하고 피봇을 포함한 메타 정보를 편집하는 과정은 다음과 같습니다. 1. 원하는 MSW 리소스의 콘텍스트 메뉴에서 **Duplicate**를 선택합니다. 2. 내 리소스 탭 하단의 **duplicated sprite** 폴더에 생성된 복제본을 선택합니다. 3. 복제본의 세부 정보 창에서 이름, 설명 등의 메타 정보를 편집합니다. 4. 스프라이트 슬라이스의 **[편집]** 버튼을 눌러 피봇 등의 정보를 변경합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | code [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체의 "%s" 형식으로 초 수만 문자열로 추출하여 로그에 출력하는 스크립트를 작성해줘 [answer] | TimeSpan 객체의 초 수만 "%s" 형식으로 문자열로 추출하여 로그에 출력하는 스크립트는 다음과 같습니다. ```lua local timeSpan = TimeSpan(16, 4, 3, 17, 250) local timeSpanString = timeSpan:ToFormattedString("%s") log(timeSpanString) ``` 이 코드에서 `TimeSpan(16, 4, 3, 17, 250)`은 일 16, 시간 4, 분 3, 초 17, 밀리초 250을 가지는 TimeSpan 객체를 생성합니다. `ToForma [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "
[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | SpriteRendererComponent의 SpriteRUID를 상태에 따라 IDLE일 때 b871399ae18d41c4b76c2ae79feefa7d, BROKEN일 때 76815f621e354f57b5adb5b9faaf9eb3으로 동적으로 변경하는 스크립트를 작성해줘 [answer] | 참고 문서에는 `StateComponent`와 함께 `OnEnter()`와 `OnConditionCheck()` 메서드를 사용하여 상태를 제어하고, `SpriteRendererComponent`의 `SpriteRUID`를 변경하는 방법을 설명하고 있습니다. 요청하신 **IDLE** 상태와 **BROKEN** 상태에 따라 `SpriteRUID`를 동적으로 변경하는 스크립트는 각 상태의 진입(`OnEnter`) 시점에 해당 상태의 RUID를 설정하는 방식으로 작성할 수 있습니다. ### 1. IDLE 상태 스크립트 (기본 상태) I [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 플레이어의 공격에 상태가 변하는 나무 상자를 만들어봅시다. 기본 상태인 IDLE, DEAD와 크리에이터가 만든 새로운 BROKEN 상태를 함께 활용합니다. 상태마다의 특정 애니메이션, 스프라이트를 추가해 상태 변화를 직관적으로 확인할 수 있습니다. 이 예시는 IDLE → BROKEN → DEAD → IDLE로 상태 전이하며, 상태마다 다른 스프라이트, 애니메이션을 연결해 재생하게 됩니다. >**Tip.** >만들기 - 새로 만들기 - **기본** 템플릿을 사용해 플레이어의 기본 공격, 피격을 구성합니다. 해당 템플릿의 D
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan(7, 45, 16)과 TimeSpan(18, 12, 38)을 더한 값을 "c" 형식으로 출력하면 왜 1.01:57:54로 나타나는 건가요? [answer] | `TimeSpan(7, 45, 16)`과 `TimeSpan(18, 12, 38)`을 더하면 총 시간이 **25시간 57분 54초**가 됩니다. "상수 형식" 지정자 `"c"`의 형식은 `[-][d'.']hh':'mm':'ss['.'fff]`입니다. 여기서 `d`는 일(day) 수를, `hh`는 시간(hour)을 나타냅니다. 25시간은 1일(24시간)과 1시간으로 나뉘기 때문에, 결과 문자열은 일 수 1, 시간 01, 분 57, 초 54가 결합된 `1.01:57:54`로 표시됩니다. ```lua local timeSpan1 = T [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 표준 TimeSpan 형식 문자열은 단일 형식 지정자를 사용하여 서식 지정 작업으로 생성되는 TimeSpan 값의 텍스트 표현을 정의합니다. | 형식 지정자 | 이름 | 설명 | | --- | --- | --- | | "c" | 상수 형식 | 문화권을 구분하지 않으며 [-][d'.']hh':'mm':'ss['.'fff] 형식을 사용합니다. | | "g" | 일반 약식 | 문화권을 구분하며, 필요한 내용을 출력합니다. [-][d':']h':'mm':'ss[.FFF] 형식을 사용합니다. | | "G" | 일반 긴 형식 | 문화권을
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체를 문자열로 생성할 때 밀리초 자릿수를 정확히 세 자리로 맞춰야 하는 이유가 있나요? [answer] | 참고 문서에 따르면, `TimeSpan` 객체를 문자열로 생성할 때 밀리초 자릿수를 정확히 세 자리로 맞춰야 하는 이유는 문서에 명시되어 있지 않습니다. 문서에는 문자열로 `TimeSpan` 객체를 생성할 경우 "문자열에는 정확히 소수 세 자리가 포함되어야 합니다"라고만 기재되어 있으며, 이 규정이 필요한 구체적인 기술적 이유나 배경은 설명하고 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "fff" 사용자 지정 서식 지정자는 밀리초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 문자열로 TimeSpan 객체를 생성할 경우 문자열에는 정확히 소수 세 자리가 포함되어야 합니다. ```lua local timeSpan = TimeSpan(876) log(timeSpan:ToFormattedString("fff")) -- 876 ``` #### "F" "F" 사용자 지정 서식 지정자는 1/10 초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 1/10초 값이 0이라면 결과
[task] | single_turn [pass] | ⏳ 미판정 [title] | 월드 좌표와 스크린 좌표 [question] | UI 좌표 800, 400에 버튼을 배치했는데 16:9 화면에서는 잘 보이다가 19:9 화면에서는 위치가 어긋나는 이유가 뭔가요? [answer] | 16:9 화면에서는 의도한 위치에 보이다가 19:9 화면에서는 위치가 어긋나는 이유는 **스크린 해상도 비율의 차이** 때문입니다. UI 좌표는 기기의 해상도와 Safe Area에 따라 좌표계(원점 위치 및 축의 길이)가 달라집니다. 단순히 `UITransformComponent.Position`에 절대 좌표값(예: 800, 400)을 지정하면, 화면 비율이 다른 기기에서는 동일한 수치가 가리키는 물리적 위치가 바뀌게 되어 UI 요소가 의도하지 않은 곳에 배치됩니다. 이 문제를 해결하고 모든 기기에서 일관된 위치를 유지하려면, [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 기기마다 해상도와 Safe Area가 다르므로 UI 좌표로 UI 위치를 결정할 경우 기기에 따라 UI의 일부가 잘려 보이거나, 보이지 않을 수 있습니다. 모든 기기의 Safe Area를 확인해 UI 위치를 일일이 지정하는 것은 효율적인 제작 방식이 아니므로 UI의 특정 지점을 기준으로 얼마나 떨어져 있을 것인지와 같은 다른 기준으로 UI를 배치해야 합니다. UI 좌표에 맞추어 UI를 배치했을 발생하는 문제를 살펴봅시다. UI는 **스크린 해상도**의 변화에 따라 위치가 달라지게 됩니다. 크리에이터가 버튼 하나를 Anchor를 정
[task] | code [pass] | ⏳ 미판정 [title] | 월드 좌표와 스크린 좌표 [question] | 월드 좌표의 원점이 맵 중앙임을 활용하여, `_EntityService:GetEntityByPath`로 가져온 엔티티의 `TransformComponent.WorldPosition` 값이 (0, 0, 0)에 가장 가까운 엔티티를 찾아 `log`로 출력하는 스크립트를 작성해줘. [answer] | 월드 좌표의 원점은 맵의 중앙입니다. 따라서 `TransformComponent.WorldPosition` 값이 (0, 0, 0)에 가장 가까운 엔티티를 찾으려면, 해당 엔티티의 월드 좌표 벡터의 크기(Magnitude)가 가장 작은 것을 찾아야 합니다. 참고 문서에 포함된 API 및 메서드(`_EntityService`, `TransformComponent.WorldPosition`, `Vector3` 관련 연산)를 활용하여 스크립트를 작성합니다. ```lua Method: [server only] void FindEntity [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드의 월드 공간과 스크린 공간이 존재합니다. 각 공간에서는 서로 다른 좌표계를 사용합니다. 두 공간에서 사용하는 좌표계에 대해 알아봅시다. # 월드 공간 월드 공간이란 Hierarchy - world - map의 공간을 의미합니다. ## 월드 좌표 월드 좌표는 맵에서의 특정 위치 값입니다. 맵에 배치된 엔티티의`TransformComponent.WorldPosition` 값이 월드 좌표입니다. 월드 좌표의 원점은 맵의 중앙입니다. 예를 들어 아래 이미지와 같이 **분수 Entity**는 월
[task] | code [pass] | ⏳ 미판정 [title] | 월드 좌표와 스크린 좌표 [question] | `ScreenTouchEvent`와 `ScreenTouchHoldEvent`를 통해 감지된 터치 위치의 Screen 좌표를 추출하여, `UILogic.ScreenWidth`와 `UILogic.ScreenHeight`를 이용해 화면 좌측 하단 원점 기준으로의 비율(0~1)을 계산하고 `log`로 출력하는 스크립트를 작성해줘. [answer] | 메이플스토리 월드에서 터치 입력을 처리하려면 `InputService`를 구독하여 `ScreenTouchEvent`와 `ScreenTouchHoldEvent` 이벤트를 수신해야 합니다. 이벤트 객체의 `TouchPoint` 프로퍼티는 해당 터치의 Screen 좌표를 제공합니다. Screen 좌표는 기기의 디스플레이 해상도 픽셀 수를 기반으로 하며, 원점은 좌측 하단입니다. 이를 0~1 범위의 비율로 변환하기 위해 `_UILogic.ScreenWidth`와 `_UILogic.ScreenHeight`로 나누면 됩니다. 아래는 요청하 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드의 월드 공간과 스크린 공간이 존재합니다. 각 공간에서는 서로 다른 좌표계를 사용합니다. 두 공간에서 사용하는 좌표계에 대해 알아봅시다. # 월드 공간 월드 공간이란 Hierarchy - world - map의 공간을 의미합니다. ## 월드 좌표 월드 좌표는 맵에서의 특정 위치 값입니다. 맵에 배치된 엔티티의`TransformComponent.WorldPosition` 값이 월드 좌표입니다. 월드 좌표의 원점은 맵의 중앙입니다. 예를 들어 아래 이미지와 같이 **분수 Entity**는 월
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 원작자가 공유 기능을 해제했을 때 리메이크 월드에 미치는 영향을 3문장 이내로 설명하세요. [answer] | 원작자가 리소스의 공유 기능을 해제하면, 해당 리소스를 사용하는 리메이크 월드에서도 리소스를 더 이상 사용할 수 없게 됩니다. 이는 원본 월드에서 리메이크된 월드에도 동일하게 적용되는 제한입니다. 따라서 리메이크 월드의 정상적인 구동을 위해 원작자의 공유 설정 상태에 주의가 필요합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Resource Storage 리소스는 그룹 리소스로 이전하여 사용할 수 있습니다. | 세부 정보에서 이전하기 | 콘텍스트 메뉴로 이전하기 | | :---: | --- | | | | 위와 같이 선택하면 어떤 그룹으로 소유권을 이전할 것인지 결정할 수 있습니다. > **더 알아보기** > 그룹을 만들어 공동 제작하는 방법에 대해 더 알아보고 싶다면 아래 가이드를 참고하세요! > [공동 제작](/docs/?postId=670) ## 리소스 공유 Resource Storage 리소스에 아래와 같이 공유 기능을 설정할 수 있습니
[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | Resource Storage에 직접 등록할 수 있는 리소스 종류와 전용 에디터로 제작해야 하는 리소스 종류는 어떻게 다른가요? [answer] | Resource Storage에 직접 등록할 수 있는 리소스는 **Sprite**와 **Audio Clip**입니다. 이 두 가지 리소스는 유저가 소유하고 있는 파일을 직접 등록하여 사용할 수 있습니다. 반면, **Animation Clip**과 **Avatar Item**은 파일을 직접 등록하는 것이 아니라 전용 에디터로 제작한 후 등록해야 하는 리소스 종류입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 리소스 그룹으로 이전하는 두 가지 방법을 비교하는 표로 정리하세요. [answer] | 리소스 그룹으로 이전하는 두 가지 방법은 다음과 같이 비교할 수 있습니다. | 구분 | 세부 정보에서 이전하기 | 콘텍스트 메뉴로 이전하기 | | :--- | :--- | :--- | | **진행 방식** | 리소스의 세부 정보 화면을 통해 이전 수행 | 리소스 항목에 대한 콘텍스트 메뉴를 통해 이전 수행 | | **후속 단계** | 소유권을 이전할 그룹을 선택 | 소유권을 이전할 그룹을 선택 | 두 방법 모두 최종적으로 소유권을 이전할 대상 그룹을 결정하는 단계가 동일합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Resource Storage 리소스는 그룹 리소스로 이전하여 사용할 수 있습니다. | 세부 정보에서 이전하기 | 콘텍스트 메뉴로 이전하기 | | :---: | --- | | | | 위와 같이 선택하면 어떤 그룹으로 소유권을 이전할 것인지 결정할 수 있습니다. > **더 알아보기** > 그룹을 만들어 공동 제작하는 방법에 대해 더 알아보고 싶다면 아래 가이드를 참고하세요! > [공동 제작](/docs/?postId=670) ## 리소스 공유 Resource Storage 리소스에 아래와 같이 공유 기능을 설정할 수 있습니
[task] | code [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 렉트타일 셋에 추가된 자른 스프라이트를 RectTileMap 컴포넌트에 매핑하고, OnUpdate(number delta) 에서 _TimerService:SetTimerOnce(fn, sec) 를 이용해 1초 간격으로 타일 색상 또는 상태를 변경하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 **RectTileMap 컴포넌트**의 구체적인 API(타일 색상 변경, 상태 변경, 특정 좌표의 타일 접근 방법 등)에 대한 정보가 포함되어 있지 않습니다. 문서에는 "자른 스프라이트를 렉트타일 셋에 추가하는 방법"과 "RectTileMap의 활용은 다른 문서를 참고하라"는 언급만 있을 뿐, `RectTileMap` 컴포넌트를 통해 타일을 조작하는 실제 함수 이름이나 프로퍼티는 정의되어 있지 않습니다. 따라서 요청하신 "타일 색상 또는 상태 변경"을 수행하는 정확한 mLua 코드(`RectTileMap` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData
[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | Resource Storage 리소스의 사용 권한이 '소유자와 일치해야 한다'인데, 공유 기능을 설정하면 어떤 변화가 생기나요? [answer] | Resource Storage 리소스는 기본적으로 해당 월드의 제작자와 Resource Storage의 소유자가 동일한 경우에만 사용할 수 있습니다. 하지만 Resource Storage에서 **공유 기능**을 설정하면, 이 제한이 해제되어 **모든 유저가 자유롭게** 해당 리소스를 사용할 수 있게 됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | "fff" 서식 지정자와 "FFF" 서식 지정자의 기능적 차이가 있나요? [answer] | "fff"와 "FFF" 서식 지정자는 기능적으로 차이가 없습니다. 두 지정자 모두 밀리초(1/1000초) 값을 출력하며, 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 또한 값이 0인 경우 결과 문자열에 포함되지 않는 동작도 동일합니다. 참고로 "F"와 "FF" 지정자는 각각 1/10초와 1/100초를 출력하지만, "fff"와 "FFF"는 모두 밀리초 단위로 동일하게 동작합니다. ```lua local timeSpan = TimeSpan(876) -- "fff"와 "FFF"의 출력 결과는 동일합니다. log(timeSp [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "fff" 사용자 지정 서식 지정자는 밀리초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 문자열로 TimeSpan 객체를 생성할 경우 문자열에는 정확히 소수 세 자리가 포함되어야 합니다. ```lua local timeSpan = TimeSpan(876) log(timeSpan:ToFormattedString("fff")) -- 876 ``` #### "F" "F" 사용자 지정 서식 지정자는 1/10 초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 1/10초 값이 0이라면 결과
[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | Workspace에 등록한 리소스는 왜 다른 월드에서 사용할 수 없나요? [answer] | Workspace에 등록한 리소스는 해당 월드에 귀속되도록 설계되어 있기 때문입니다. Workspace에 등록하는 리소스(이미지 파일(Sprite), 사운드 파일(Audio Clip))는 현재 제작 중인 월드 내에서만 자유롭게 사용할 수 있으며, 다른 월드에서는 사용할 수 없습니다. 이는 리소스의 사용 권한이 '해당 월드에서만'으로 제한되어 있기 때문입니다. 만약 여러 월드에서 공통적으로 사용하려는 리소스라면, Workspace 대신 Resource Storage에 등록하는 것이 좋습니다. Resource Storage에 등록한 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 그룹 월드에서 만든 Resource Storage 리소스를 개인 월드에서 사용하려고 하면 안 되는 이유가 무엇인가요? [answer] | 그룹 월드의 Resource Storage에 등록된 리소스는 **그룹에 귀속**됩니다. 반면, 개인 월드의 Resource Storage에 등록된 리소스는 **계정에 귀속**됩니다. 리소스 사용 권한 규정에 따르면, Resource Storage 리소스를 사용하려면 **월드 제작자와 Resource Storage의 소유자가 같아야** 합니다. 그룹 월드에서 만든 리소스의 소유권은 해당 '그룹'에 있으므로, 개인 월드(개인의 계정 소유)에서 이 리소스를 사용하려면 소유권 주체가 일치하지 않아 사용할 수 없습니다. (참고: Reso [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | two_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | `ToFormattedString`에서 "fff"와 "FFF" 서식 지정자의 주요 차이점과 동작 원리가 무엇인가요? [answer] | `ToFormattedString` 메서드에서 `"fff"`와 `"FFF"` 서식 지정자의 주요 차이점은 **0일 경우의 출력 동작**과 **문자열로 TimeSpan 객체를 생성할 때의 요구 사항**입니다. ### 1. 주요 차이점 | 구분 | `"fff"` | `"FFF"` | | :--- | :--- | :--- | | **출력 내용** | 밀리초를 항상 출력합니다. | 밀리초를 출력하지만, 값이 0이면 문자열에 포함되지 않습니다. | | **0일 때 동작** | `000`과 같이 0이 포함된 문자열을 출력합니다. | 아무것 [followup] | "FFF" 서식 지정자에서 밀리초 값이 0일 때 결과 문자열에 어떻게 반영되는지, 그리고 "fff"와의 출력 차이(예: `TimeSpan(876)`과 `TimeSpan(800)` 비교)에 대한 구체적인 코드 예시를 보여주세요. [followup_answer] | "FFF" 서식 지정자는 밀리초 값을 출력하지만, **밀리초 값이 0인 경우 결과 문자열에 해당 자리가 포함되지 않습니다**(생략됩니다). 반면 "fff"는 밀리초를 항상 3자리로 고정하여 출력합니다. ### "fff"와 "FFF"의 출력 차이 비교 `TimeSpan(876)`과 `TimeSpan(800)`을 기준으로 두 서식 지정자의 차이를 확인하면 다음과 같습니다. | TimeSpan 값 | `"fff"` 출력 | `"FFF"` 출력 | 설명 | | :--- | :--- | :--- | :--- | | `TimeSpan(8 [scores] | [judge_reason] | [source_doc] | "fff" 사용자 지정 서식 지정자는 밀리초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 문자열로 TimeSpan 객체를 생성할 경우 문자열에는 정확히 소수 세 자리가 포함되어야 합니다. ```lua local timeSpan = TimeSpan(876) log(timeSpan:ToFormattedString("fff")) -- 876 ``` #### "F" "F" 사용자 지정 서식 지정자는 1/10 초를 출력합니다. 서식 지정 작업에서 나머지 소수 자릿수는 잘립니다. 1/10초 값이 0이라면 결과
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 유저 리소스가 Workspace와 Resource Storage로 구분되는 기준과 각 리소스의 귀속 주체를 표로 정리해서 설명해 주세요. [answer] | 유저 리소스는 메이커 상에 등록되는 위치에 따라 **Workspace 리소스**와 **Resource Storage 리소스**로 구분됩니다. 두 리소스의 구분 기준과 귀속 주체를 정리하면 다음과 같습니다. | 리소스 구분 | 구분 기준 (등록 위치) | 귀속 주체 | 사용 범위 및 특징 | | :--- | :--- | :--- | :--- | | **Workspace 리소스** | 메이커의 **Workspace**에 이미지(Sprite)나 사운드(Audio Clip) 파일을 등록(Import)한 경우 | **월드** | 등록한 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | MSW 리소스를 내 리소스로 복제했을 때 이름이나 피봇 같은 메타 정보를 어떻게 수정하나요? [answer] | 메이플스토리 월드(MSW) 리소스를 내 리소스로 복제한 뒤 메타 정보를 수정하는 방법은 다음과 같습니다. 1. **복제본 생성** 원하는 MSW 리소스의 컨텍스트 메뉴에서 **Duplicate**를 선택합니다. 이렇게 하면 내 리소스 탭 하단의 `duplicated sprite` 폴더에 복제본이 생성됩니다. 2. **메타 정보(이름, 설명 등) 수정** 생성된 복제본의 **세부 정보 창**을 열어 이름, 설명 등의 정보를 직접 편집할 수 있습니다. 3. **피봇 정보 수정** 스프라이트 슬라이스의 * [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 유저가 메이커에 등록한 리소스를 관리하는 방법에 대해 알아봅시다. # 리소스 구분 메이플스토리 월드에서의 리소스는 프로퍼티 에디터 혹은 스크립트 등에서 사용할 수 있습니다. 그리고 각각의 리소스마다 RUID가 존재합니다. 리소스는 제공자에 따라 **메이플스토리 월드 리소스**와 **유저 리소스**로 나눌 수 있습니다. ## 메이플스토리 월드 리소스 메이플스토리 월드 리소스는 말 그대로 메이플스토리 월드에서 제공하는 리소스를 말합니다. 메이커의 **Resource Storage** 및 [메이플스토리 월드
[task] | code [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 최대 2048*2048px 규격의 아틀라스를 256 조각으로 자른 자원을 Resource Storage 에 저장하고, _EntityService:GetEntityByPath("/maps/map01/obj") 로 특정 엔티티를 찾은 뒤 _SpawnService:SpawnByModelId(id, name, pos, parent) 를 호출해 생성된 엔티티에 자른 스프라이트를 적용하는 스크립트를 작성해줘 [answer] | 참고 문서에서 확인되는 정보에 따르면, 아틀라스 언패커에서 자른 스프라이트를 Resource Storage에 저장하는 과정은 에디터의 UI를 통해 수행되는 작업이며, mLua 스크립트에서 직접 아틀라스를 자르거나 Resource Storage에 이미지를 업로드하는 API는 문서에 명시되어 있지 않습니다. 따라서 "아틀라스를 자르고 Resource Storage에 저장"하는 행위는 스크립트 내에서 수행할 수 없으며, 에디터에서 미리 완료하여 **Model Entry ID** (또는 Resource ID)를 확보한 상태여야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 관리 [question] | 리메이크 허용 시 리소스 버전 변경에 따른 영향을 Workspace와 Resource Storage로 구분해 단계별 번호 목록으로 작성하세요. [answer] | 리메이크 허용 시 리소스 저장 위치(Workspace, Resource Storage)에 따라 원본 월드의 리소스 변경이 리메이크 월드에 미치는 영향은 다음과 같습니다. **1. Workspace 리소스** 1. Workspace에는 동일한 이름의 파일을 다시 import 하면 해당 리소스의 버전이 올라갑니다. 2. 리메이크(파생) 월드의 Workspace 리소스는 원본 월드에서 복제된 상태이므로, 각 월드별로 독립적으로 관리됩니다. 3. 따라서 원본 월드의 Workspace 리소스가 변경되더라도, 이미 생성된 리메이크 월드의 W [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Resource Storage 리소스는 그룹 리소스로 이전하여 사용할 수 있습니다. | 세부 정보에서 이전하기 | 콘텍스트 메뉴로 이전하기 | | :---: | --- | | | | 위와 같이 선택하면 어떤 그룹으로 소유권을 이전할 것인지 결정할 수 있습니다. > **더 알아보기** > 그룹을 만들어 공동 제작하는 방법에 대해 더 알아보고 싶다면 아래 가이드를 참고하세요! > [공동 제작](/docs/?postId=670) ## 리소스 공유 Resource Storage 리소스에 아래와 같이 공유 기능을 설정할 수 있습니
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체를 "c" 형식 지정자로 서식화할 때 일 수가 포함된 경우와 포함되지 않은 경우의 출력 차이가 어떻게 되는지 궁금해요. [answer] | `TimeSpan` 객체를 상수 형식 지정자 `"c"`로 서식화할 때, 일 수(`d`)가 포함된 경우와 포함되지 않는 경우의 출력 차이는 다음과 같습니다. ### 1. 출력 형식 차이 * **일 수 미포함 (24시간 이내):** `hh:mm:ss` 또는 `hh:mm:ss.fff` * 형식: `[-][d'.']hh':'mm':'ss['.'fff]`에서 `d`와 `.`이 생략됩니다. * 예: `07:45:16` * **일 수 포함 (24시간 초과):** `d.hh:mm:ss` 또는 `d.hh:mm:ss.f [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 표준 TimeSpan 형식 문자열은 단일 형식 지정자를 사용하여 서식 지정 작업으로 생성되는 TimeSpan 값의 텍스트 표현을 정의합니다. | 형식 지정자 | 이름 | 설명 | | --- | --- | --- | | "c" | 상수 형식 | 문화권을 구분하지 않으며 [-][d'.']hh':'mm':'ss['.'fff] 형식을 사용합니다. | | "g" | 일반 약식 | 문화권을 구분하며, 필요한 내용을 출력합니다. [-][d':']h':'mm':'ss[.FFF] 형식을 사용합니다. | | "G" | 일반 긴 형식 | 문화권을
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan을 생성할 때 인자로 16, 4, 3, 17, 250을 넣었는데 각각 어떤 단위(일, 시, 분, 초, 밀리초 등)에 해당하는 값인지 어떻게 결정되나요? [answer] | 참고 문서에 제시된 예제 코드 `TimeSpan(16, 4, 3, 17, 250)`에서 각 인자가 어떤 단위에 해당하는지 명시적으로 정의되어 있지 않습니다. 문서에는 `TimeSpan` 생성 시 인자의 개수나 순서(일, 시, 분, 초, 밀리초 등)에 대한 규칙이 설명되어 있지 않으며, 단순히 `TimeSpan(16, 4, 3, 17, 250)`과 같은 형태로 생성하는 것만 예시로 나와 있습니다. 따라서 주어진 참고 문서만으로는 5개 인자 각각이 어떤 시간을 나타내는지 확정할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 일반 긴 서식 지정자 "G"는 항상 일 수와 소수 세 자릿수를 출력하고 문화권을 구분합니다. 형식은 [-]d':'hh':'mm':'ss.fff 입니다. | 기호 | 설명 | | --- | --- | | - | 음수를 나타내는 기호 | | . | 초 소수 구분을 나타냅니다. | | fff | 초의 소수 부분을 나타냅니다. | | ss | "00"부터 "59" 범위의 초를 나타냅니다.| | mm | "00"부터 "59" 범위의 분을 나타냅니다. | | hh | "00"부터 "23" 범위의 시간을 나타냅니다. | | d | 일 수를 나
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | "m"과 "mm" 서식 지정자 중 어떤 것을 써야 앞자리에 0이 채워지는지 궁금해요. [answer] | `mm` 서식 지정자를 사용하면 분 값이 0~9일 때 출력 문자열 앞에 0이 채워집니다. 반면 `m` 서식 지정자는 분 값이 0~9일 때 한 자리 문자열 값을 반환하고, 10~59일 때 두 자리 문자열 값을 반환하므로 앞자리 0 채우기가 되지 않습니다. 예를 들어 분 값이 4인 경우를 비교하면 다음과 같습니다. ```lua local timeSpan = TimeSpan(365, 21, 4, 45) -- mm 사용: 앞자리에 0이 채워짐 (04) log(timeSpan:ToFormattedString("dd'.'hh':'mm' [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan 객체를 문자열로 생성할 때 소수점 자릿수에 따라 "f", "ff" 등 어떤 서식 지정자를 맞춰야 하는지 알려주세요. [answer] | TimeSpan 객체를 문자열로 생성할 때, 소수점 자릿수와 일치하는 서식 지정자를 사용해야 합니다. * **"f"**: 소수점 **1** 자리 (1/10 초)를 나타냅니다. * **"ff"**: 소수점 **2** 자리 (1/100 초)를 나타냅니다. 따라서 문자열에 포함된 소수점 자릿수가 1자리라면 `"f"`, 2자리라면 `"ff"` 서식 지정자를 맞춰서 사용해야 합니다. ```lua -- 소수점 1자리 예시 ("f" 사용) local timeSpan1 = TimeSpan(876) log(timeSpan1:ToForm [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "
[task] | single_turn [pass] | ⏳ 미판정 [title] | TimeSpan으로 시간 표현하기 [question] | TimeSpan(365, 3, 14, 45)처럼 생성한 객체에서 "dd'.'hh':'mm':'ss"로 포맷을 지정하면 어떤 문자열이 출력되나요? [answer] | `TimeSpan(365, 3, 14, 45)`로 생성한 객체에 `"dd'.'hh':'mm':'ss"` 포맷을 지정하면 **`365.03:14:45`** 라는 문자열이 출력됩니다. 각 서식 지정자가 어떻게 적용되는지 설명하면 다음과 같습니다. * `dd`: 일 수(365)를 2자리 이상으로 출력합니다. * `'.'`: 문자 그대로 마침표(.)를 출력합니다. * `hh`: 시간 수(3)를 2자리로 출력하므로 앞에 0이 붙어 `03`이 됩니다. * `':'`: 문자 그대로 콜론(:)을 출력합니다. * `mm`: 분 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | "hh" 사용자 지정 서식 지정자는 시간 수를 나타내는 값을 출력합니다. 시간 값이 0-9라면 출력 문자열 앞에 0이 포함됩니다. 일반적으로 하나의 숫자만 포함하는 문자열은 일 수로 해석됩니다. "hh" 사용자 지정 서식 지정자를 대신 사용하여 숫자 문자열을 시간 수로 해석할 수 있습니다. ```lua local timeSpan = TimeSpan(365, 3, 14, 45) log(timeSpan:ToFormattedString("dd'.'hh':'mm':'ss")) -- 365.03:14:45 ``` #### "m" "