← 목록

mLua · Nemotron SDG 질문-응답 (SFT)

총 21,567개 · 페이지 402/719
🔀 랜덤
불러오는 중…

[task] | code [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | AudioClip 카테고리에서 bgm 하위 카테고리의 음원 RUID를 검색한 후, 재생할 때 사용할 수 있도록 프로퍼티에 저장하는 스크립트를 작성해줘 [answer] | 메이플스토리 월드 리소스 스토리지에서 `AudioClip` 카테고리 > `bgm` 하위 카테고리를 선택하고 원하는 음원을 찾은 후, **[RUID 복사]** 버튼을 눌러 RUID 값을 확인합니다. 이 값을 스크립트의 프로퍼티에 저장하여 음원을 재생할 수 있도록 구성합니다. 아래는 검색한 BGM RUID를 프로퍼티로 선언하고, 터치 이벤트 시 해당 음원을 재생하는 예제 스크립트입니다. ```lua Property: [RUID] string BgmRuid = "여기에_검색한_BGM_RUID_입력" Method: [client on [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | `isvalid` 함수의 매개변수 및 반환 조건을 설명하는 표를 3행으로만 작성하세요. [answer] | | 항목 | 설명 | | :--: | ----------- | | 매개변수 | `entity` : 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | | 반환 조건 (true) | 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. | | 반환 조건 (false) | 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | two_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 6가지 실행 제어 옵션 중 `multicast`와 `server`의 차이점을 서버 실행 및 클라이언트 전송 흐름 관점에서 비교해 주세요. [answer] | `multicast`와 `server` 실행 제어 옵션은 함수가 서버와 클라이언트 양쪽에서 어떻게 실행되고 전송되는지에 따라 명확한 차이를 보입니다. **1. `server` 실행 제어** * **서버에서 호출 시:** 함수는 즉시 서버에서 실행됩니다. * **클라이언트에서 호출 시:** 클라이언트는 해당 함수를 실행하지 않고, 호출 정보를 **서버로 전송**합니다. 서버가 메시지를 수신한 후 서버에서 함수를 실행합니다. * **핵심 특징:** 최종 실행 위치는 항상 **서버**입니다. 클라이언트에서 호출하더라도 서버로 [followup] | `multicast` 함수 내에서 `self`를 참조할 때 서버와 클라이언트 사이에서 상태가 어떻게 동기화되는지, 그리고 `wait()` 함수 사용 시 실행 공간에 따라 발생하는 차이점을 코드를 들어 설명해 주세요. [followup_answer] | 제공된 참고 문서를 근거로 답변드리겠습니다. ### 1. `multicast` 함수 내에서 `self` 참조 및 상태 동기화 참고 문서에는 `multicast` 실행 제어의 **실행 흐름**(서버에서 실행된 이후 클라이언트로 전송하여 클라이언트에서 실행됨)만 정의되어 있으며, **`self`가 참조하는 인스턴스 변수의 값이 서버와 클라이언트 사이에서 어떻게 동기화되는지(데이터 동기화 메커니즘)에 대한 구체적인 설명은 포함되어 있지 않습니다.** 문서에서 언급된 내용으로는 `multicast` 함수가 서버와 클라이언트 양쪽에서 [scores] | [judge_reason] | [source_doc] | 실행 제어의 동작 방식을 이해하기 위해 함수 호출 상황을 살펴봅시다. 특정한 소리 효과를 내는 `PlaySoundEffect` 함수가 있다고 가정합니다. 소리 효과는 개인 PC에서 나야 하므로 클라이언트에서만 사용하는 함수일 것입니다. 만약, 서버에서 특정 타이밍에 소리 효과를 내야 한다면, 서버는 효과음과 연관된 메시지를 생성해 송신하고, 클라이언트는 수신부를 구현해 `PlaySoundEffect` 함수를 호출합니다. | 메시지 전송 흐름 | 참고 이미지 | | --------- | ------ | | 메시지 생성 | | | 메

[task] | code [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService의 ScreenTouchHoldEvent와 ScreenTouchReleaseEvent를 활용하여 터치 시작 시점 좌표와 종료 시점 좌표를 저장하고, 터치를 떼는 순간 두 좌표의 차이를 계산해 이동 거리와 방향을 콘솔에 출력하는 스크립트를 작성해줘. [answer] | `InputService`의 `ScreenTouchHoldEvent`와 `ScreenTouchReleaseEvent`를 사용하여 터치 시작 시점과 종료 시점의 좌표를 저장하고, 두 좌표의 차이를 계산하는 방법은 다음과 같습니다. 참고 문서에 따르면 `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 **프레임마다** 발생합니다. 따라서 터치 시작 시점 좌표를 저장하려면, 이벤트가 여러 번 발생해도 처음 한 번만 좌표가 저장되도록 로직을 처리해야 합니다. `ScreenTouchHoldEvent`에서 `TouchP [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 프레임마다 발생합니다. 이벤트가 발생할 때마다 **HandleScreenTouchHoldEvent**가 실행됩니다. `ScreenTouchHoldEvent`가 핸들러의 매개 변수로 전송되며, 터치 중인 위치의 좌표 정보가 포함되어 있습니다. 화면을 터치 중일 때 터치한 위치의 좌표를 콘솔 창에 출력하는 예제입니다. ```lua [service: InputService] HandleScreenTouchHoldEvent(ScreenTouchHoldEvent even

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | `isvalid`와 `_EntityService:IsValid`의 기능적 유사성을 설명하는 단락을 2문장 이내로 작성하세요. [answer] | `isvalid`와 `_EntityService:IsValid`는 모두 전달된 엔티티가 nil이거나 삭제 대기 중, 삭제된 상태인지 확인하여 존재 시 true, 그렇지 않을 경우 false를 반환하는 동일한 기능을 수행합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | 문서 예시의 `OnUpdate` 함수 중 `Destroy` 호출 전후 로그 처리 부분을 제외하고 나머지 로직만 코드 블록으로 출력하세요. [answer] | ```lua [server only] void OnUpdate(number delta) { if isvalid(self.SpawnedEntity) == false then return end if self._T.time == nil then self._T.time = 0 end self._T.time = self._T.time + delta if self._T.time >= 3 then self.SpawnedEntity: [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | two_turn [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService를 활용해 화면 터치 입력을 처리하는 기본 방식과 주요 이벤트의 차이는 무엇인가요? [answer] | InputService를 활용한 화면 터치 입력은 클라이언트 공간에서 처리되며, 터치 동작에 따라 세 가지 주요 이벤트가 발생합니다. 각 이벤트의 발생 시점과 특징은 다음과 같습니다. ### 1. 주요 터치 이벤트의 차이 | 이벤트 이름 | 발생 시점 | 특징 | | :--- | :--- | :--- | | **ScreenTouchEvent** | 터치가 시작되는 순간 1회 발생 | 터치 시작 위치의 좌표와 터치 ID를 제공합니다. | | **ScreenTouchHoldEvent** | 화면을 터치하고 있는 동안 프레임마다 발생 [followup] | ScreenTouchHoldEvent와 ScreenTouchReleaseEvent의 발생 시점 및 각 이벤트 핸들러에서 접근 가능한 TouchPoint 데이터의 구체적인 차이점을 설명해 주세요. [followup_answer] | `ScreenTouchHoldEvent`와 `ScreenTouchReleaseEvent`는 모두 `event.TouchPoint`를 통해 터치 위치 좌표 정보에 접근할 수 있지만, 발생 시점과 해당 좌표가 의미하는 값에 명확한 차이가 있습니다. ### 1. 발생 시점의 차이 * **ScreenTouchHoldEvent**: 화면을 **터치하고 있는 동안 프레임마다** 반복적으로 발생합니다. 즉, 손가락이 화면에서 떨어지지 않는 한 매 프레임마다 핸들러가 실행됩니다. * **ScreenTouchReleaseEvent**: [scores] | [judge_reason] | [source_doc] | `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 프레임마다 발생합니다. 이벤트가 발생할 때마다 **HandleScreenTouchHoldEvent**가 실행됩니다. `ScreenTouchHoldEvent`가 핸들러의 매개 변수로 전송되며, 터치 중인 위치의 좌표 정보가 포함되어 있습니다. 화면을 터치 중일 때 터치한 위치의 좌표를 콘솔 창에 출력하는 예제입니다. ```lua [service: InputService] HandleScreenTouchHoldEvent(ScreenTouchHoldEvent even

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | isvalid 함수와 _EntityService:IsValid 함수의 기능적 차이점이 있나요? [answer] | 네, 기능적 차이점은 없습니다. 두 함수 모두 동일한 유효성 체크를 수행합니다. 매개 변수로 넘겨진 엔티티가 실제로 존재하고 유효한 상태라면 `true`를 반환하며, 엔티티가 `nil`이거나 삭제 대기 중이거나 이미 삭제된 상태라면 `false`를 반환합니다. 따라서 스크립트 작성 시 `isvalid(entity)`와 `_EntityService:IsValid(entity)` 중 어느 것을 사용해도 결과는 동일합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | two_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버와 클라이언트 간 함수 호출 시 실행 공간 설정이 왜 필요한지, 그리고 `PlaySoundEffect` 예시에서 분기문을 사용하지 않고 직접 호출할 수 있는 원리를 설명해 주세요. [answer] | 서버와 클라이언트 간 함수 호출 시 실행 공간 설정이 필요한 이유는 메이플스토리 월드의 컴포넌트가 서버와 클라이언트 양쪽에서 공용으로 사용되기 때문입니다. 특정 기능(예: 소리 효과 재생)은 반드시 클라이언트에서만 실행되어야 하지만, 트리거나 로직은 서버에서 처리되는 경우가 많습니다. 만약 실행 공간 설정이 없다면, 개발자는 서버에서 클라이언트 함수를 호출할 때마다 `isClient`와 `isServer`를 검사하는 분기문을 직접 작성해야 합니다. 이는 코드의 가독성을 떨어뜨리고, 반복적인 불필요한 조건 분기로 인해 효율성을 저하시 [followup] | `[server only]`로 선언된 함수를 클라이언트에서 호출하면 어떻게 동작하며, 반대로 `[client only]` 함수를 서버에서 호출할 때의 예외 처리나 로그는 어떻게 되는지 구체적으로 알려 주세요. [followup_answer] | 참고 문서를 기준으로 `[server only]`와 `[client only]` 함수의 동작 방식을 설명하면 다음과 같습니다. ### 1. `[server only]` 함수를 클라이언트에서 호출할 때 문서의 "실행 제어의 종류" 표에 따르면, `[server only]` 설정의 함수는 **클라이언트에서 실행 시 '무시됨'**으로 정의되어 있습니다. 즉, 클라이언트 코드에서 `[server only]`로 선언된 함수를 호출하더라도 해당 함수의 본문 코드가 실행되지 않습니다. 별도의 예외가 발생하거나 에러 로그가 출력되는지에 대한 [scores] | [judge_reason] | [source_doc] | 실행 제어의 동작 방식을 이해하기 위해 함수 호출 상황을 살펴봅시다. 특정한 소리 효과를 내는 `PlaySoundEffect` 함수가 있다고 가정합니다. 소리 효과는 개인 PC에서 나야 하므로 클라이언트에서만 사용하는 함수일 것입니다. 만약, 서버에서 특정 타이밍에 소리 효과를 내야 한다면, 서버는 효과음과 연관된 메시지를 생성해 송신하고, 클라이언트는 수신부를 구현해 `PlaySoundEffect` 함수를 호출합니다. | 메시지 전송 흐름 | 참고 이미지 | | --------- | ------ | | 메시지 생성 | | | 메

[task] | code [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Sprite 카테고리 하위 카테고리 중 monster를 기준으로 검색한 리소스의 RUID를 저장하고, 해당 RUID로 스프라이트를 생성하는 스크립트를 작성해줘 [answer] | 메이플스토리 월드(MSW) 리소스 스토리지에서 `Sprite` 카테고리의 `monster` 하위 카테고리를 선택하고, 원하는 몬스터 스프라이트를 검색한 뒤 **[RUID 복사]** 버튼으로 RUID를 가져와야 합니다. 이 RUID를 스크립트의 프로퍼티로 저장하고, 해당 RUID를 기반으로 엔티티를 생성하는 로직은 아래 코드와 같습니다. 참고로, 문서에는 RUID를 프로퍼티에 저장하고 `_SpawnService`를 통해 리소스를 생성하는 구체적인 함수 시그니처(예: `SpawnByRUID` 등)가 명시되어 있지 않습니다. 따라서 아 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | 삭제 대기 중인 엔티티의 isvalid 값은 어떻게 되나요? [answer] | 삭제 대기 중인 엔티티의 `isvalid` 값은 **false**입니다. `isvalid` 함수(또는 `_EntityService:IsValid(entity)`)는 엔티티가 실제로 존재하고 접근 가능한 상태인지 확인합니다. 엔티티가 `nil`이거나, 삭제 대기 중이거나, 이미 삭제된 상태라면 `false`를 반환합니다. ```lua Method: [server only] void OnUpdate(number delta) { -- 삭제 대기 중이거나 삭제된 엔티티는 isvalid가 false를 반환합니다. if is [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | code [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService의 ScreenTouchHoldEvent와 ScreenTouchReleaseEvent를 조합하여, 터치 시작과 종료 사이의 터치 이동 경로 데이터를 테이블에 수집하고, 터치를 떼는 시점에 총 이동 거리와 평균 속도를 계산해 출력하는 스크립트를 작성해줘. [answer] | 제시된 참고 문서에는 `ScreenTouchHoldEvent`와 `ScreenTouchReleaseEvent`의 정의 및 매개변수(`TouchId`, `TouchPoint`)는 포함되어 있으나, **이벤트 발생 시점의 시간 정보(타임스탬프)를 제공하는 API나 속성은 문서에 존재하지 않습니다.** 평균 속도를 계산하려면 `거리 / 시간` 공식이 필요하며, 이를 위해 터치 시작 시점과 종료 시점의 시간 차이를 알아야 합니다. 그러나 mLua의 표준 생명주기 메서드(`OnUpdate`의 `delta` 등)나 `InputService` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 프레임마다 발생합니다. 이벤트가 발생할 때마다 **HandleScreenTouchHoldEvent**가 실행됩니다. `ScreenTouchHoldEvent`가 핸들러의 매개 변수로 전송되며, 터치 중인 위치의 좌표 정보가 포함되어 있습니다. 화면을 터치 중일 때 터치한 위치의 좌표를 콘솔 창에 출력하는 예제입니다. ```lua [service: InputService] HandleScreenTouchHoldEvent(ScreenTouchHoldEvent even

[task] | two_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 리소스 스토리지에서 텍스트 검색과 이미지 검색을 수행할 때 RUID를 복사하여 사용하는 구체적인 방법은 무엇인가요? [answer] | 리소스 스토리지에서 RUID를 복사하여 사용하는 구체적인 방법은 다음과 같습니다. **1. 텍스트 검색을 통한 RUID 복사** 1. `MSW 리소스` 검색창에 원하는 리소스를 나타내는 검색어(예: `병아리`)를 입력합니다. 2. 상단 4개 카테고리(Sprite, AnimationClip, AudioClip, AvatarItem) 중 찾으려는 분류를 선택하고 카테고리를 확장하여 원하는 리소스를 찾습니다. 3. 해당 리소스 옆의 **[RUID 복사]** 버튼을 클릭하여 값을 복사합니다. 4. 복사한 RUID 값을 필요한 스크립트 프 [followup] | 이미지 검색 시 '이미지 선택' 버튼 외에 다른 주의사항이 있고, RUID 입력 창 옆의 Resource Picker 버튼은 어떤 상황에서 프로퍼티 에디터 창에서 사용하나요? [followup_answer] | **1. 이미지 검색 시 주의사항** 이미지 검색을 수행할 때 가장 중요한 주의사항은 **`Sprite` 카테고리에서만 사용할 수 있다**는 점입니다. `AnimationClip`, `AudioClip`, `AvatarItem` 카테고리에서는 이미지 검색 기능을 사용할 수 없습니다. **2. Resource Picker 버튼 사용 상황** RUID 값 입력 창 옆의 `Resource Picker` 버튼은 **특정 카테고리에 해당하는 리소스만을 프로퍼티 에디터 창에서 직접 보고 고르고자 할 때** 사용합니다. 즉, RUID 값을 직 [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | SpawnByModelId 호출 후 isvalid(spawnedEntity)가 false로 반환되는 경우, 주로 어떤 상황에서 발생하나요? [answer] | 제공된 참고 문서에는 `isvalid(spawnedEntity)`가 `false`로 반환되는 구체적인 원인이나 발생 상황에 대한 설명이 포함되어 있지 않습니다. 문서에는 `_SpawnService:SpawnByModelId` 호출 후 `isvalid(spawnedEntity) == false`일 경우 "Spawn Failed"라고 로그를 출력하는 예제 코드만 제시되어 있을 뿐, 실패하는 이유(예: 잘못된 Entry ID, 잘못된 위치, 권한 문제 등)에 대한 정보는 찾을 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. **Preset List**에서 원하는 모델의 콘텍스트 메뉴를 연 뒤, **Add to Workspace**를 눌러 **Workspace**에 모델을 추가합니다. 2. 추가한 모델의 콘텍스트 메뉴에서 **Copy Entry ID**를 눌러 **Entry ID**를 클립보드에 복사합니다. 3. **SpawnManager** 컴포넌트를 열고 `SpawnByModelId` 함수를 생성합니다. ```lua void SpawnByModelId() { local id =

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | self.SpawnedEntity가 nil일 때 isvalid를 호출하면 에러가 발생하나요? [answer] | 아니요, 에러가 발생하지 않습니다. `isvalid` 함수는 엔티티가 `nil`인 경우를 포함하여 유효성 검사를 수행하도록 설계되어 있습니다. 매개변수로 넘겨진 엔티티가 `nil`이거나 삭제 대기 중, 또는 이미 삭제된 상태라면 에러 대신 **false**를 반환합니다. 따라서 `self.SpawnedEntity`가 `nil`일 때 `isvalid(self.SpawnedEntity)`를 호출해도 안전하게 `false`를 받을 수 있으며, 이는 스크립트가 실행 중이 아니거나 해당 엔티티가 아직 생성되지 않았음을 의미합니다. `` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Hierarchy [question] | Name과 Component 검색 기준의 차이를 3문장 이내로 설명하세요. [answer] | Name 검색은 Workspace 전 영역에서 이름이 검색어와 일치하는 엔티티를 찾습니다. Component 검색은 검색어에 해당하는 컴포넌트를 포함하고 있는 엔티티를 찾습니다. 따라서 특정 이름의 엔티티를 찾는지, 특정 기능(컴포넌트)을 가진 엔티티를 찾는지 목적에 따라 기준을 선택해야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색 창은 탭 타이틀 바로 아래에 위치합니다. 검색 기준에 따라 다른 결괏값이 나오기에 필요에 따라 선택해 검색합니다.검색 기준은 **Name**과 **Component** 두 가지이며, 다음과 같이 사용합니다. * **Name** : **Workspace**의 전 영역에서 검색한 이름과 맞는 값을 찾을 때 사용합니다. * **Component** : 엔티티 중 검색어에 해당하는 컴포넌트가 포함된 값을 찾을 때 사용합니다. | Name "chat" 검색 | Component "chat" 검색 | | -------------- |

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Hierarchy [question] | map01 엔트리의 콘텍스트 메뉴 목록을 단계별 번호 목록으로 나열하세요. [answer] | map01 엔트리의 콘텍스트 메뉴 목록은 다음과 같습니다. 1. Create New Map 2. Create Entity 3. Create Entity as Child 4. Switch To RectTileMap 5. Switch To SideViewRectTileMap 6. Duplicate 7. Rename 8. Property 9. Go To Entity 10. Add Component 11. Add New Component 12. Copy Entity Path 13. Copy Entity ID [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색 창은 탭 타이틀 바로 아래에 위치합니다. 검색 기준에 따라 다른 결괏값이 나오기에 필요에 따라 선택해 검색합니다.검색 기준은 **Name**과 **Component** 두 가지이며, 다음과 같이 사용합니다. * **Name** : **Workspace**의 전 영역에서 검색한 이름과 맞는 값을 찾을 때 사용합니다. * **Component** : 엔티티 중 검색어에 해당하는 컴포넌트가 포함된 값을 찾을 때 사용합니다. | Name "chat" 검색 | Component "chat" 검색 | | -------------- |

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Hierarchy [question] | World, common, maps, map01, ui 엔트리의 콘텍스트 메뉴 중 'Copy Entity ID'가 없는 항목을 표로 정리하세요. [answer] | 제공된 문서에 따르면, World, common, maps, map01, ui 엔트리 모두 콘텍스트 메뉴에 **'Copy Entity ID'** 항목이 포함되어 있습니다. 따라서 'Copy Entity ID'가 **없는** 항목은 존재하지 않습니다. | 엔트리 이름 | 'Copy Entity ID' 포함 여부 | | :--- | :---: | | World | 있음 | | common | 있음 | | maps | 있음 | | map01 | 있음 | | ui | 있음 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색 창은 탭 타이틀 바로 아래에 위치합니다. 검색 기준에 따라 다른 결괏값이 나오기에 필요에 따라 선택해 검색합니다.검색 기준은 **Name**과 **Component** 두 가지이며, 다음과 같이 사용합니다. * **Name** : **Workspace**의 전 영역에서 검색한 이름과 맞는 값을 찾을 때 사용합니다. * **Component** : 엔티티 중 검색어에 해당하는 컴포넌트가 포함된 값을 찾을 때 사용합니다. | Name "chat" 검색 | Component "chat" 검색 | | -------------- |

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | Entry ID를 복사할 때 model:// 접두어를 붙인 채로 붙여넣으면 스폰이 실패하는 원인이 될까요? [answer] | 네, `model://` 접두어를 붙인 채로 Entry ID를 사용하게 되면 스폰이 실패할 수 있습니다. 참고 문서의 `SpawnByModelId` 함수 사용 예시에서 Entry ID를 설정할 때 **"앞에 `model://`은 제거합니다"**라고 명시하고 있습니다. 따라서 `Copy Entry ID`를 통해 클립보드에 복사된 ID를 스크립트에 붙여넣기 전, `model://` 부분만 잘라내고 나머지 문자열(예: `maplestorymonster$0108737afb9548309c03795430b20c05`)만 `id` 변수에 대 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. **Preset List**에서 원하는 모델의 콘텍스트 메뉴를 연 뒤, **Add to Workspace**를 눌러 **Workspace**에 모델을 추가합니다. 2. 추가한 모델의 콘텍스트 메뉴에서 **Copy Entry ID**를 눌러 **Entry ID**를 클립보드에 복사합니다. 3. **SpawnManager** 컴포넌트를 열고 `SpawnByModelId` 함수를 생성합니다. ```lua void SpawnByModelId() { local id =

[task] | two_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 검색한 리소스를 관리하기 위해 즐겨찾기 기능은 어떻게 작동하며, 이를 통해 RUID 접근성을 어떻게 높일 수 있나요? [answer] | 검색한 리소스를 관리하기 위한 즐겨찾기 기능은 메이커에서 제공하는 리소스 저장 및 빠른 접근 수단입니다. 이 기능을 활용하면 자주 사용하는 리소스의 RUID(RUID: Resource Unique ID)를 효율적으로 관리하고, 스크립트 작성 시 필요한 값을 빠르게 찾아 사용할 수 있습니다. ### 즐겨찾기 기능 작동 방식 1. **등록 방법**: 리소스 검색 결과에서 원하는 리소스 옆에 있는 **별 모양 버튼**을 누르면 해당 리소스가 즐겨찾기에 저장됩니다. 2. **저장 제한**: 최대 **5,000개**의 리소스를 즐겨찾기에 [followup] | 즐겨찾기에 저장할 수 있는 리소스의 최대 개수는 몇 개이며, 별 모양 버튼을 눌러 저장한 후 RUID를 찾는 데 어떤 편의가 제공되나요? [followup_answer] | 즐겨찾기에 저장할 수 있는 리소스의 최대 개수는 **5,000개**입니다. 별 모양 버튼을 눌러 리소스를 즐겨찾기에 저장하면, 나중에 해당 리소스를 다시 검색하지 않고도 쉽게 찾아볼 수 있게 되어 **RUID를 편리하게 찾을 수 있습니다.** 이는 반복적으로 같은 리소스를 검색해야 하는 과정을 줄이고, 필요한 RUID 값을 빠르게 확인하여 스크립트 등에 적용하는 데 도움이 됩니다. [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | OnBeginPlay에서 SpawnByModelId를 호출할 때 [server only] 속성을 붙여야 하는 이유는 무엇인가요? [answer] | `OnBeginPlay`에서 `SpawnByModelId`를 호출할 때 `[server only]` 속성을 붙여야 하는 주된 이유는 **엔티티 생성(스폰) 작업이 서버에서만 수행되어야 하기 때문**입니다. 메이플스토리 월드의 아키텍처에서 월드에 실제 객체(엔티티)를 추가하는 로직은 서버 측에서 처리됩니다. 클라이언트는 주로 렌더링과 사용자 입력 처리를 담당하며, 엔티티의 생성과 같은 상태 변경(state change)은 서버가 권한을 가지고 실행해야 합니다. 참고 문서의 예시를 보면 다음과 같이 명시되어 있습니다. ```lua [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. **Preset List**에서 원하는 모델의 콘텍스트 메뉴를 연 뒤, **Add to Workspace**를 눌러 **Workspace**에 모델을 추가합니다. 2. 추가한 모델의 콘텍스트 메뉴에서 **Copy Entry ID**를 눌러 **Entry ID**를 클립보드에 복사합니다. 3. **SpawnManager** 컴포넌트를 열고 `SpawnByModelId` 함수를 생성합니다. ```lua void SpawnByModelId() { local id =

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | SpawnByEntity와 SpawnByModelId를 사용할 때 각각 어떤 입력값이 필요하며, 둘의 차이점은 무엇인가요? [answer] | `SpawnByEntity`와 `SpawnByModelId`는 모두 `SpawnService`를 통해 엔티티를 생성하는 함수이지만, 생성의 기준이 다르며 요구하는 입력값에도 차이가 있습니다. ### 1. 입력값 비교 **SpawnByEntity** 기존에 맵에 배치되어 있는 특정 엔티티를 복사(클론)하여 새로운 엔티티를 생성합니다. * **entity (Entity, 필수):** 복제할 원본 엔티티를 지정합니다. `_EntityService:GetEntityByPath` 등을 이용해 가져온 엔티티 객체를 넣습니다. * * [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티의 생성과 삭제는 월드를 제작하면서 가장 많이 사용하는 기능입니다. 이번 과정에서는 엔티티 생성과 삭제 방법, 그리고 엔티티 존재 여부를 확인하는 유효성 체크 기능을 살펴봅니다. # 엔티티 생성 **SpawnService**는 엔티티 생성 함수를 제공합니다. 주요 엔티티 생성 함수인 `SpawnByEntity`와 `SpawnByModelId`를 알아보겠습니다. ## SpawnByEntity 엔티티를 바탕으로 새로운 엔티티를 생성합니다. #### 매개 변수 |Parameter |Type |D

[task] | two_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 메이플스토리 월드의 리소스 스토리지에서 내 리소스, MSW 리소스, 즐겨찾기의 차이점이 무엇이며 각각의 용도는 어떻게 다른가요? [answer] | 메이플스토리 월드의 리소스 스토리지(Resource Storage)는 크게 **내 리소스**, **MSW 리소스**, **즐겨찾기** 세 가지 카테고리로 구분되어 있습니다. 각 카테고리의 차이점과 용도는 다음과 같습니다. ### 1. 내 리소스 (My Resources) 크리에이터가 직접 외부에서 불러온 리소스 파일을 저장하고 관리하는 공간입니다. * **용도**: 외부에서 가져온 리소스를 추가하고, 폴더별로 분류하여 관리합니다. * **주요 특징**: * **RUID 부여**: 추가한 리소스는 자동으로 RUI [followup] | 리소스 버전 관리 시 리메이크 허용 여부를 고려하여 리소스를 Workspace - MyDesk와 Resource Storage 중 어디에 추가해야 하는지 판단 기준을 알려주세요. [followup_answer] | 리소스 버전 관리 시 리메이크 허용 여부를 고려하여 리소스를 추가할 위치를 결정하는 판단 기준은 **출시 후 리소스를 변경할 계획이 있는지 여부**입니다. 리소스가 추가된 위치에 따라 리메이크된 월드에 미치는 영향이 다르기 때문에 다음과 같이 구분하여 선택해야 합니다. ### 1. 리소스를 Resource Storage에 추가하는 경우 * **영향 범위**: 리소스 저장소(리소스 스토리지)에 추가한 리소스를 변경하게 되면, **리메이크를 허용한 모든 월드**에 변경 사항이 반영됩니다. * **적합한 상황**: 리메이크를 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | isvalid가 true를 반환하는 조건은 정확히 어떤 상태인가요? [answer] | `isvalid` 함수는 매개 변수로 넘겨진 엔티티가 **실제로 존재하는 상태**일 때 `true`를 반환합니다. 반대로, 엔티티가 `nil`이거나, 삭제 대기 중이거나, 이미 삭제된 상태라면 `false`를 반환합니다. 즉, `isvalid(entity)`가 `true`를 반환하려면 해당 엔티티 객체가 유효하게 살아있어야 합니다. 삭제(`Destroy`)가 호출된 직후에는 해당 엔티티는 더 이상 유효하지 않으므로 `false`가 반환됩니다. 아래 코드는 엔티티 삭제 전후로 `isvalid`의 반환 값이 어떻게 변하는지 보여주 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | code [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Resource Storage의 리소스 버전 관리 정책 중 'Workspace - MyDesk'와 '리소스 저장소'의 차이를 반영하여, 리메이크 허용 여부를 판단할 때 리소스가 추가된 위치에 따라 리메이크된 월드에 미치는 영향(영향 없음 vs 영향 있음)을 반환하는 서비스 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 리소스 버전 관리 정책의 차이에 대한 설명만 포함되어 있으며, 해당 정책을 기반으로 리메이크 영향 여부를 반환하는 특정 서비스 API나 메서드(예: `IsRemakeAffected` 등)가 존재한다는 내용은 없습니다. 또한, `ResourceService`에서 리소스가 `Workspace - MyDesk`에 있는지 `리소스 저장소`에 있는지를 판별하는 API도 문서에 나와 있지 않습니다. 따라서 문서에 없는 API를 지어내지 않기 위해, **실제로 존재하는 API로 구현할 수 없습니다.** 다만, 문서에 명 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | Entity:Destroy와 _EntityService:Destroy를 사용해 엔티티를 삭제할 때 차이점이 있는지 궁금합니다. [answer] | 제공된 문서에 따르면, `Entity:Destroy`와 `_EntityService:Destroy`는 모두 엔티티를 삭제하는 데 사용되지만, 구체적인 기능적 차이점이나 내부 동작 원리에 대한 설명은 포함되어 있지 않습니다. 문서에서는 두 가지 방법 모두 동일한 상황(생성 후 3초 후 삭제)에서 사용 가능한 대안으로 제시하고 있을 뿐입니다. 1. **`_EntityService:Destroy(entity)`**: 서비스 메서드 호출 방식으로 엔티티 인스턴스를 전달하여 삭제합니다. 2. **`entity:Destroy()`**: 엔 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **SpawnService**의 스폰 기능을 통해 엔티티를 생성하고, 생성된 후 3초 후에 제거되도록 합니다. 예제는 위 엔티티 생성에서 사용한 **SpawnManager** 스크립트 컴포넌트를 활용합니다. 1. 프로퍼티를 추가하고, 타입과 이름을 다음과 같이 설정합니다. ```lua Property: [none] any SpawnedEntity = nil ``` 2. `SpawnByModelId` 함수를 다음과 같이 수정합니다. ```lua void SpawnByMode

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 생성과 삭제, 유효성 체크 [question] | 엔티티를 Destroy 한 직후 isvalid를 호출하면 왜 false가 반환되는 건가요? [answer] | 엔티티에 `Destroy`를 호출한 직후 `isvalid` 함수(또는 `_EntityService:IsValid`)를 호출하면 `false`가 반환되는 이유는, 해당 엔티티가 **삭제 대기 중이거나 이미 삭제된 상태**로 처리되기 때문입니다. `isvalid` 함수의 동작 원리는 다음과 같습니다. 1. **존재 확인**: 매개변수로 넘겨진 엔티티가 실제로 존재하는지 확인합니다. 2. **상태 확인**: 엔티티가 `nil`이거나, 삭제 대기 중(pending deletion) 상태이거나, 이미 삭제된 상태인 경우 `false` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | | Parameter | Description | | :--: | ----------- | | entity | 유효성 체크 대상이 되는 엔티티를 넣어줍니다. | #### 반환 값 * 매개 변수로 넘겨진 엔티티가 존재하면 **true**를 반환합니다. * 엔티티가 nil이거나 삭제 대기 중, 또는 삭제된 엔티티라면 **false**를 반환합니다. #### 사용 예시 위 `Destroy` 함수 예제에 이어서 엔티티 삭제 전후로 `isvalid` 함수가 어떤 값을 반환하는지 확인하고 실제 사용법을 살펴봅니다. 1. **Spawn

[task] | code [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService의 ScreenTouchHoldEvent에서 터치 좌표를 실시간으로 추적하여, 화면의 특정 영역(예: 중앙) 안팎으로 진입/이탈하는 순간을 감지하고 해당 상태 변경 시에만 로그를 출력하는 스크립트를 작성해줘. [answer] | `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 프레임마다 발생하므로, 이전 프레임의 터치 좌표와 현재 좌표를 비교하여 특정 영역(예: 화면 중앙)을 넘나드는 순간을 감지할 수 있습니다. 참고 문서에 제공된 API와 정보만 사용하여, 화면 중앙 영역 진입/이탈을 감지하는 스크립트를 작성합니다. 1. **Property**: 이전 터치 좌표(`lastTouchPoint`)와 현재 영역 상태(`isInsideZone`)를 저장할 프로퍼티를 선언합니다. 2. **Event Handler**: `InputSer [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `ScreenTouchHoldEvent`는 화면을 터치하고 있는 동안 프레임마다 발생합니다. 이벤트가 발생할 때마다 **HandleScreenTouchHoldEvent**가 실행됩니다. `ScreenTouchHoldEvent`가 핸들러의 매개 변수로 전송되며, 터치 중인 위치의 좌표 정보가 포함되어 있습니다. 화면을 터치 중일 때 터치한 위치의 좌표를 콘솔 창에 출력하는 예제입니다. ```lua [service: InputService] HandleScreenTouchHoldEvent(ScreenTouchHoldEvent even

[task] | instruction_following [pass] | ⏳ 미판정 [title] | Hierarchy [question] | 부모-자식 구조 생성 방법과 드래그 앤 드롭 시 발생하는 영향 관계(단방향성 포함)를 3문장 이내로 요약하세요. [answer] | 하나의 엔티티 아래에 자식으로 만들 대상 엔티티를 끌어 놓으면 드래그 앤 드롭을 통해 부모-자식 구조가 생성됩니다. 이 구조는 부모가 자식에게만 영향을 미치는 단방향 관계이며, 부모의 TransformComponent를 변경하면 자식 엔티티가 자동으로 함께 변경됩니다. 반면 자식을 선택해 변경하더라도 상위 부모 계층에는 어떠한 영향도 주지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 **Hierarchy** 탭을 이용해 제작 현황을 확인하고, 제작 능률을 높일 수 있습니다. # Hierarchy 소개 **Hierarchy** 탭은 제작 중인 게임 현황을 **계층 구조(부모-자식)**로 볼 수 있는 패널입니다. 복잡하게 구성한 맵에서 원하는 엔티티를 빠르게 찾을 때 사용하거나, 체계적으로 엔티티를 관리할 때 사용합니다. 가장 상위인 **World** 계층 아래에 **common**, **maps**, **ui** 엔트리가 있으며 **maps**와 **ui** 엔트리는 각자 기본 하위 엔트

[task] | two_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 메이플스토리 월드에서 리소스를 검색하고 RUID를 확인하는 기본 절차와 스토리지의 4가지 상위 카테고리 구조는 어떻게 되나요? [answer] | 메이플스토리 월드에서 리소스를 검색하고 RUID를 확인하는 기본 절차와 스토리지의 4가지 상위 카테고리 구조는 다음과 같습니다. ### 1. 리소스 스토리지의 4가지 상위 카테고리 리소스는 크게 **Sprite**, **AnimationClip**, **AudioClip**, **AvatarItem** 4개의 상위 카테고리로 나뉘어 있으며, 각 카테고리 아래에 세부적인 하위 카테고리가 존재합니다. * **Sprite**: 다양하게 활용할 수 있는 스프라이트입니다. * 하위 카테고리: `object`, `footho [followup] | Sprite, AnimationClip, AudioClip, AvatarItem 각각의 하위 카테고리 목록이 무엇이며, 이미지 검색은 어떤 카테고리에서만 가능한가요? [followup_answer] | 각 상위 카테고리의 하위 카테고리 목록과 이미지 검색 가능 범위는 다음과 같습니다. ### 1. 카테고리별 하위 카테고리 목록 * **Sprite** * `object`, `foothold`, `monster`, `npc`, `trap`, `item`, `skill`, `ladder`, `rope`, `portal`, `etc` * **Animation Clip** * `object`, `monster`, `npc`, `trap`, `item`, `skill`, `background`, `portal [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

← → 방향키로 페이지 이동 · 숫자 입력 후 Enter로 점프