[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | KeyDownEvent 핸들러에서 Z키와 X키가 각각 어떤 타일로 변경되는지 2문장 이내로 설명하세요. [answer] | KeyDownEvent 핸들러에서 Z키를 누르면 현재 타일이 "Grass"로, X키를 누르면 "Rock"으로 변경됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. **Event Handler**에서 **KeyDownEvent**를 추가하고, 내용을 다음과 같이 작성합니다. ```lua Event Handler : [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key --------------------------------------------------------
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | 타일 이름은 스크립트로 타일을 생성할 때 어떻게 사용되는지 궁금해요. [answer] | 제공된 문서에 따르면, 타일 이름은 스크립트에서 특정 타일 정보를 조회하고 해당 타일과 관련된 로직(예: 이동 속도 변경 등)을 처리할 때 사용됩니다. 구체적으로, `RectTileMapComponent`의 `GetTile` 메서드를 통해 특정 좌표에 배치된 타일의 정보를 가져온 후, 반환된 `tileInfo` 객체의 `Name` 프로퍼티를 확인하여 타일 이름이 일치하는지 비교하는 방식으로 활용됩니다. 아래는 타일 이름을 사용해 플레이어가 서 있는 타일에 따라 이동 속도를 조절하는 mLua 스크립트 예시입니다. ```lua M [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새 타일 셋에 원하는 타일을 추가해봅시다. * **RosourceStorage로 타일 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add ResourceStorage Image**를 클릭하면 **Resource Picker**가 열립니다. 2. **Resource Picker** - **MSW 리소스** 탭에서 기본 제공하는 스프라이트를 타일로 추가합니다. * **Workspace의 이미지를 타일로 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add Workspace Im
[task] | two_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMap 컴포넌트를 활용해 플레이어가 위치한 지점의 타일을 변경하는 기본 원리와 KeyDownEvent 처리 방식이 궁금합니다. [answer] | RectTileMap 컴포넌트를 활용해 플레이어가 위치한 지점의 타일을 변경하는 기본 원리는 다음과 같습니다. 1. **타일 변경 메서드 정의**: `ChangeCurrentTile`이라는 메서드를 정의하여, 전달받은 타일 이름(예: "Grass", "Rock")을 RectTileMap 컴포넌트에 적용하도록 로직을 구현합니다. 2. **입력 이벤트 처리**: `InputService`의 `KeyDownEvent` 핸들러를 등록합니다. 3. **키 매핑**: 이벤트 발생 시 `event.key`를 확인하여 특정 키(예: `Ke [followup] | KeyDownEvent에서 Z키와 X키를 구분해 Grass와 Rock 타일로 변경하는 구체적인 mLua 코드 예시를 보여주세요. [followup_answer] | KeyDownEvent에서 Z키와 X키를 구분하여 Grass와 Rock 타일로 변경하는 구체적인 mLua 코드 예시는 다음과 같습니다. ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- if key == KeyboardKey.Z the [scores] | [judge_reason] | [source_doc] | 11. **Event Handler**에서 **KeyDownEvent**를 추가하고, 내용을 다음과 같이 작성합니다. ```lua Event Handler : [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key --------------------------------------------------------
[task] | two_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMap 모드에서 플레이어의 상하좌우 이동을 제어하는 컴포넌트는 무엇이며, MapleTile 모드와 어떻게 다른가? [answer] | RectTileMap 모드에서 플레이어의 상하좌우 이동을 제어하는 컴포넌트는 **KinematicbodyComponent**입니다. **MapleTile 모드와의 차이점**은 다음과 같습니다: 1. **이동 방식**: * **MapleTile**: 메이플스토리 형태의 횡스크롤 맵을 제작하며, 플레이어의 이동을 제어하는 컴포넌트는 **RigidbodyComponent**입니다. * **RectTile**: 탑다운 뷰 맵을 제작하며, 플레이어는 상하좌우로 이동합니다. 이때 이동을 제어하는 컴포넌트는 **Kin [followup] | DefaultPlayer 엔티티에 이미 모든 이동 컴포넌트가 포함되어 있는데, RectTileMap 환경에서 KinematicbodyComponent만 활성화되도록 설정하거나 기존 RigidbodyComponent의 영향을 제거하는 스크립트 예제가 있을까요? [followup_answer] | 제공된 참고 문서에는 `DefaultPlayer`에 `RigidbodyComponent`, `KinematicbodyComponent`, `SideviewbodyComponent`가 모두 포함되어 있으며 맵 모드에 따라 이동 컨트롤의 주체가 달라진다는 사실만 언급되어 있습니다. 하지만 **RectTileMap 환경에서 `KinematicbodyComponent`만 활성화하도록 설정하거나 `RigidbodyComponent`의 영향을 제거하는 구체적인 스크립트 예제나 API 사용 방법은 제공된 문서에 포함되어 있지 않습니다.** [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 RectTileMap 모드를 활용해 횡스크롤이 아닌, 탑다운 뷰의 월드를 제작할 수 있습니다. 이번 시간에는 RectTileMap에 대해 알아봅시다. # RectTileMap과 플레이어 이동 메이플스토리 월드에서는 MapleTile, RectTile, SideViewRectTile 모드로 지형을 만들 수 있습니다. * **MapleTile** * 메이플스토리 형태의 횡스크롤 맵을 만들 수 있습니다. [RigidbodyComponent](/apiReference/Component
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | 타일 셋을 공용으로 사용하는 구조에서 의도치 않은 타일 속성 변경을 방지하기 위한 추천 작업 방식이 있나요? [answer] | 레벨을 추가할 때 기본적으로 이전 타일 셋을 공용으로 사용하게 되므로, 특정 타일의 속성을 변경하면 다른 레이어의 타일 속성까지 함께 변경되는 문제가 발생할 수 있습니다. 이를 방지하기 위해 **레이어별로 서로 다른 타일 셋을 적용**하는 것이 권장됩니다. 다음은 레이어마다 다른 타일 셋을 적용하는 구체적인 작업 순서입니다. 1. **새 타일 셋 추가**: 기존 타일 셋이 있는 상태에서 새로운 타일 셋(예: `TileSetExample2`)을 추가합니다. 이 새 타일 셋에 배치할 타일들을 함께 추가해 줍니다. 2. **새 맵 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 레이어를 추가하면 기본적으로 이전 타일 셋을 공용으로 사용합니다. 그래서 특정 타일의 속성을 변경하면 의도치 않게 다른 레이어의 타일 속성까지 변경하는 경우가 생깁니다. 예를 들어, **레이어 1**에 **타일 셋 1**을 적용 중일 때 **레이어 2**를 생성하면 **레이어 2**에도 **타일 셋 1**이 적용됩니다. **레이어 1**에 배치한 특정 타일의 이미지를 변경하려고 **타일 셋 1**의 타일 속성을 변경하면 **레이어 2**의 타일도 함께 변경됩니다. 이러한 상황을 피하려면 레이어 별로 각각 다른 타일 셋을 적용하는 것
[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | Hierarchy 에서 맵을 RectTileMap 모드로 전환한 후, 해당 맵에 배치된 타일 셋(TileSetExample)이 정상적으로 로드되었는지 확인하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `RectTileMap` 모드 전환 방법(Hierarchy에서 변환 또는 타일 에디터에서 변환)과 타일 셋 생성 절차는 설명되어 있으나, **배치된 타일 셋이 정상적으로 로드되었는지 확인하는 데 사용할 수 있는 API, 프로퍼티, 또는 이벤트 핸들러에 대한 정보는 포함되어 있지 않습니다.** 따라서 요청하신 "타일 셋 로드 여부 확인" 스크립트는 문서에 근거하여 작성할 수 없습니다. 다만, 문서에 명시된 정보에 따르면 `RectTileMap` 모드에서는 플레이어가 상하좌우로 이동하며 `Kinematicbod [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 RectTileMap 모드를 활용해 횡스크롤이 아닌, 탑다운 뷰의 월드를 제작할 수 있습니다. 이번 시간에는 RectTileMap에 대해 알아봅시다. # RectTileMap과 플레이어 이동 메이플스토리 월드에서는 MapleTile, RectTile, SideViewRectTile 모드로 지형을 만들 수 있습니다. * **MapleTile** * 메이플스토리 형태의 횡스크롤 맵을 만들 수 있습니다. [RigidbodyComponent](/apiReference/Component
[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMapComponent의 GridSize를 설정하고, 특정 타일 이름의 이동 가능 여부를 true로 변경하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `RectTileMapComponent`의 `GridSize`를 설정하는 UI 경로(현재 편집 중인 맵 하위의 **RectTileMap 엔티티 - RectTileMapComponent - GridSize**)와 "이동 가능 타일 편집" 체크박스를 통해 타일의 이동 가능 속성을 변경하는 **에디터 UI 절차**가 설명되어 있습니다. 그러나 **mLua 스크립트 API**를 통해 `GridSize`를 직접 설정하거나, 특정 타일 이름의 이동 가능 여부(Movable/Walkable)를 `true`로 변경하는 ** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새 타일 셋에 원하는 타일을 추가해봅시다. * **RosourceStorage로 타일 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add ResourceStorage Image**를 클릭하면 **Resource Picker**가 열립니다. 2. **Resource Picker** - **MSW 리소스** 탭에서 기본 제공하는 스프라이트를 타일로 추가합니다. * **Workspace의 이미지를 타일로 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add Workspace Im
[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMapComponent에서 타일 이름을 변경하고, 해당 타일의 스프라이트 이미지를 새로운 리소스로 교체하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 타일 이름 변경과 스프라이트 이미지 교체는 **에디터 인터페이스(타일 편집 모드)** 를 통해 수행하는 UI 작업으로만 설명되어 있습니다. * **타일 이름 변경**: 타일 하단 텍스트 더블 클릭 * **스프라이트 편집**: '스프라이트 편집' 체크박스 선택 후 '타일 편집' 버튼 클릭 및 Resource Picker에서 선택 문서에는 `RectTileMapComponent` 에서 타일 이름이나 스프라이트 이미지를 **스크립트(mLua)로 변경하는 API(메서드)가 존재한다고 명시되어 있지 않습니다* [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 새 타일 셋에 원하는 타일을 추가해봅시다. * **RosourceStorage로 타일 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add ResourceStorage Image**를 클릭하면 **Resource Picker**가 열립니다. 2. **Resource Picker** - **MSW 리소스** 탭에서 기본 제공하는 스프라이트를 타일로 추가합니다. * **Workspace의 이미지를 타일로 추가** 1. 타일 셋 팔레트 하단의 버튼 클릭 - **Add Workspace Im
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | 아바타 아이템 등록 시 미리보기 단계에서 확인해야 할 사항을 3문장 이내로 정리해 주세요. [answer] | 아바타 동작 목록에서 각 ActionName을 클릭하거나 AutoPlay를 사용해 아이템이 정상적으로 보이는지 확인합니다. [내 아바타 적용] 버튼을 눌러 제작한 아이템을 착용한 내 아바타의 모습을 미리 봅니다. [월드 배경 적용] 버튼을 클릭해 실제 게임 환경에서 어떻게 보일지 간단하게 확인합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서 크리에이터는 직접 아바타 아이템을 제작할 수 있습니다. 아바타 아이템을 만들기 위해서는 **제작**과 **등록** 단계를 진행해야 합니다. 이번 가이드에서는 등록 과정에 대한 내용을 설명하며 제작 과정에 대해서는 아래 가이드를 참고 부탁드립니다. ##### 참고 가이드 * [기본 개념](/docs?postId=588) * [하의 만들기](/docs?postId=584) * [망토 만들기](/docs?postId=585) * [상의 만들기](/docs?postId=586) * [장갑 만들기]
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | Z키와 X키에 해당하는 키보드 키 상수(KeyboardKey)와 호출되는 메서드를 2열 3행 표로 정리하세요. [answer] | Z키와 X키에 해당하는 키보드 키 상수(KeyboardKey)와 호출되는 메서드를 정리한 표는 다음과 같습니다. | 키 | KeyboardKey 상수 | 호출되는 메서드 | | :--- | :--- | :--- | | Z | `KeyboardKey.Z` | `self:ChangeCurrentTile("Grass")` | | X | `KeyboardKey.X` | `self:ChangeCurrentTile("Rock")` | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. **Event Handler**에서 **KeyDownEvent**를 추가하고, 내용을 다음과 같이 작성합니다. ```lua Event Handler : [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key --------------------------------------------------------
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | KeyDownEvent 핸들러 코드 블록만 출력하고, 각 키 입력에 따른 동작은 주석으로만 설명하세요. [answer] | ```lua Event Handler: [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key -------------------------------------------------------- if key == KeyboardKey.Z then -- Z키: Grass 타일 배치 self:ChangeCurrentTile("Grass") else [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. **Event Handler**에서 **KeyDownEvent**를 추가하고, 내용을 다음과 같이 작성합니다. ```lua Event Handler : [service: InputService] HandleKeyDownEvent(KeyDownEvent event) { -- Parameters local key = event.key --------------------------------------------------------
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | 타일 이름이 nil인 경우 ChangeCurrentTile 함수가 즉시 종료되는 이유는 무엇인가요? [answer] | `ChangeCurrentTile` 함수에서 타일 이름(`tileName`)이 `nil`인 경우 즉시 종료하는 이유는, 타일 이름이 없는 상태에서 타일을 배치하려는 시도를 방지하기 위함입니다. 코드를 보면 `tileName == nil`일 경우 `return`을 통해 함수를 바로 끝냅니다. 이는 유효하지 않은 타일 이름으로 `RectTileMapComponent`의 `SetTile` 메서드를 호출하는 것을 막아, 예상치 못한 오류나 잘못된 게임 로직을 방지하는 방어적 프로그래밍 기법입니다. ```lua [server] void [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | AvatarItem Editor에서 PSD 파일을 교체하기 위한 단계별 번호 목록으로 설명해 주세요. [answer] | 참고 문서에는 AvatarItem Editor에서 PSD 파일을 교체하는 구체적인 단계별 번호 목록이 제공되지 않습니다. 문서에는 리소스 저장소에서 아바타 아이템을 수정하는 방법을 설명하고 있으며, 세부 정보 창에서 **[파일 열기]** 버튼을 클릭하면 **AvatarItem Editor** 창이 열리고 PSD 파일 교체 등을 할 수 있다고만 언급되어 있습니다. PSD 파일 교체 자체를 수행하는 상세 단계는 문서에 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서 크리에이터는 직접 아바타 아이템을 제작할 수 있습니다. 아바타 아이템을 만들기 위해서는 **제작**과 **등록** 단계를 진행해야 합니다. 이번 가이드에서는 등록 과정에 대한 내용을 설명하며 제작 과정에 대해서는 아래 가이드를 참고 부탁드립니다. ##### 참고 가이드 * [기본 개념](/docs?postId=588) * [하의 만들기](/docs?postId=584) * [망토 만들기](/docs?postId=585) * [상의 만들기](/docs?postId=586) * [장갑 만들기]
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | `ChangeCurrentTile` 함수에서 `tilemap:GetTile(cellPos)` 호출 후 `tileInfo`가 nil이 아닌 경우에만 타일을 교체하는 로직을 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [server] void ChangeCurrentTile(string tileName) { if tileName == nil then return end local pos = self.Entity.TransformComponent.Position local tilemap = _EntityService:GetEntityByPath("/maps/map01/RectTileMap").RectTileMapComponent -- 월드 공간 좌표를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | code [pass] | ⏳ 미판정 [title] | 기본 개념 [question] | 긴 헤어와 짧은 헤어에 필요한 레이어 수(6종, 3종)가 충족되는지 체크하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 긴 헤어와 짧은 헤어에 필요한 레이어 이름(앞, 뒤, 눌린 헤어, 그림자, 엎드린 헤어, 엎드린 상태에서 눌린 헤어 / 앞, 눌린 헤어, 그림자)이 명시되어 있습니다. 하지만, **mLua 스크립트 언어나 API 문서에는 '아바타 시트(PSD)' 내부의 레이어 구성을 직접 읽거나 검증하는 API가 존재하지 않습니다.** mLua는 게임 런타임(실행 중)의 로직을 제어하는 언어이며, 에디터에서 제작되는 에셋(PSD 파일)의 메타데이터나 레이어 구조를 직접 검사하는 기능은 제공하지 않습니다. 따라서, 요청하신 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아바타의 구성과 로직을 알아봅시다. 개념을 이해하면 아래 참고 가이드를 따라 각종 아이템을 제작하여 착용할 수 있습니다. 아바타 아이템은 Adobe Photoshop를 사용해 제작이 가능하며 제작 시트는 psd 파일로 제공됩니다. ##### 참고 가이드 * [하의 만들기](/docs?postId=584) * [망토 만들기](/docs?postId=585) * [상의 만들기](/docs?postId=586) * [장갑 만들기](/docs?postId=587) * [신발 만들기](/docs?postId=583)
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | _EntityService:GetEntityByPath를 통해 RectTileMap 엔티티를 찾을 때 경로 문자열은 어떻게 작성해야 하나요? [answer] | `_EntityService:GetEntityByPath`를 통해 RectTileMap 엔티티를 찾을 때 경로 문자열은 해당 엔티티가 존재하는 맵의 경로 뒤에 엔티티 이름을 붙여 `/maps/{맵이름}/{엔티티이름}` 형태로 작성합니다. 참고 문서의 예제에서는 맵 이름이 `map01`이고, 해당 맵에 있는 RectTileMap 엔티티의 이름이 `RectTileMap`으로 설정되어 있어 다음과 같이 작성합니다. ```lua local tilemap = _EntityService:GetEntityByPath("/maps/map01/ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | Resource Picker에서 선택한 아바타 아이템이 프로퍼티에 어떤 값으로 기록되는지 한 문장으로 답하세요. [answer] | Resource Picker에서 선택한 아바타 아이템은 프로퍼티에 RUID 값으로 기록됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 크리에이터가 제작한 월드에서 아바타 아이템을 착용할 수 있습니다. 1. **DefaultPlayer**의 **CostumeManagerComponent**에서 착용하고자 하는 아바타 아이템의 프로퍼티를 클릭합니다. 2. 해당 버튼을 클릭하면 **Resource Picker**가 열리고 **내 리소스**에 등록한 아바타 아이템이 나옵니다. 원하는 아바타 아이템을 클릭합니다. 3. 프로퍼티를 확인해보면 다음과 같이 RUID 값이 입력되어 있음을 확인할 수 있습니다. > **더 알아보기** > 직접 제작한 아바타 아이템을 상품
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | SetTile 메서드 호출 시 매개변수로 전달해야 하는 타일 좌표의 형식은 어떤 구조인가요? [answer] | `SetTile` 메서드를 호출할 때 타일 좌표는 **x, y 값을 각각 별도의 매개변수로** 전달해야 합니다. 참고 문서의 예제 코드에서 `tilemap:SetTile(tileName, cellPos.x, cellPos.y)` 형태로 호출하는 것을 확인할 수 있습니다. 즉, 좌표 객체 자체를 하나의 인자로 넘기는 것이 아니라, 변환된 타일 좌표(`cellPos`)의 `.x`와 `.y` 프로퍼티 값을 개별적으로 전달하는 구조입니다. ```lua [server] void ChangeCurrentTile(string tileName [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | single_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | 플레이어가 서 있는 위치의 타일 정보를 가져오기 위해 ToCellPosition 변환 후 어떤 메서드를 호출해야 하나요? [answer] | 플레이어가 서 있는 위치의 타일 정보를 가져오려면, 먼저 `ToCellPosition` 메서드를 사용해 월드 좌표를 타일 좌표로 변환한 뒤, 해당 타일 좌표를 인자로 받아 `GetTile` 메서드를 호출해야 합니다. 다음은 이 과정을 보여주는 mLua 코드 예시입니다. ```lua Method: [server only] void GetPlayerTileInfo() { -- 플레이어의 현재 월드 좌표 가져오기 local pos = self.Entity.TransformComponent.Position [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | 리소스 저장소에서 아바타 아이템을 수정하거나 삭제할 수 있는 콘텍스트 메뉴 옵션을 표로 정리해서 알려주세요. [answer] | 리소스 저장소에서 아바타 아이템을 선택했을 때 사용할 수 있는 콘텍스트 메뉴 옵션은 다음과 같습니다. | 메뉴 이름 | 설명 | | :--- | :--- | | **Rename** | 리소스의 이름을 변경합니다. | | **Delete** | 리소스를 삭제합니다. | | **Copy RUID** | 리소스의 RUID를 클립보드에 저장합니다. | | **Detail Info** | 리소스의 세부 정보를 볼 수 있는 팝업창을 출력합니다. (리소스 아이콘을 더블클릭하면 동일한 동작이 수행됩니다.) | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서 크리에이터는 직접 아바타 아이템을 제작할 수 있습니다. 아바타 아이템을 만들기 위해서는 **제작**과 **등록** 단계를 진행해야 합니다. 이번 가이드에서는 등록 과정에 대한 내용을 설명하며 제작 과정에 대해서는 아래 가이드를 참고 부탁드립니다. ##### 참고 가이드 * [기본 개념](/docs?postId=588) * [하의 만들기](/docs?postId=584) * [망토 만들기](/docs?postId=585) * [상의 만들기](/docs?postId=586) * [장갑 만들기]
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | 직접 제작한 아바타 아이템을 상품으로 등록했을 때의 이점을 두 가지 항목으로 나열하세요. [answer] | 직접 제작한 아바타 아이템을 상품으로 등록했을 때의 이점은 다음과 같습니다. 1. 크리에이터도 해당 상품을 구입해 입을 수 있습니다. 2. 다른 유저에게도 판매할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 크리에이터가 제작한 월드에서 아바타 아이템을 착용할 수 있습니다. 1. **DefaultPlayer**의 **CostumeManagerComponent**에서 착용하고자 하는 아바타 아이템의 프로퍼티를 클릭합니다. 2. 해당 버튼을 클릭하면 **Resource Picker**가 열리고 **내 리소스**에 등록한 아바타 아이템이 나옵니다. 원하는 아바타 아이템을 클릭합니다. 3. 프로퍼티를 확인해보면 다음과 같이 RUID 값이 입력되어 있음을 확인할 수 있습니다. > **더 알아보기** > 직접 제작한 아바타 아이템을 상품
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 애니메이션 만들기 [question] | 애니메이션 클립의 RUID를 복사하고 저장하는 기능의 위치를 2문장 이내로 설명하세요. [answer] | 애니메이션 클립 에디터 우측 상단의 RUID 복사 버튼으로 저장된 클립의 RUID를 복사할 수 있습니다. 같은 위치에 있는 업로드 버튼으로 편집한 애니메이션 클립을 저장합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 애니메이션 클립 에디터를 이용해 기존의 메이플스토리 월드 애니메이션을 편집하거나 직접 제작한 애니메이션을 월드에 활용할 수 있습니다. 애니메이션 클립 에디터의 구성과 사용 방법을 알아봅시다. # 애니메이션 클립 에디터 소개 | 숫자 | 설명 | | --- | --- | | | **[새로 열기]**, **[추가하기]** 버튼으로 불러온 스프라이트가 배치됩니다. | | | 타임라인에 추가한 스프라이트들이 차례로 재생되며 초록 십자선을 기준으로 애니메이션 재생 위치를 확인할 수 있습니다. 상단의 Scale 슬
[task] | two_turn [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | DefaultPlayer의 CostumeManagerComponent를 통해 아바타 아이템을 등록하는 기본 절차는 무엇인가요? [answer] | DefaultPlayer의 `CostumeManagerComponent`를 통해 아바타 아이템을 등록하는 기본 절차는 다음과 같습니다. 1. `DefaultPlayer`의 `CostumeManagerComponent`에서 착용하고자 하는 아바타 아이템에 해당하는 프로퍼티를 선택합니다. 2. 해당 프로퍼티의 버튼을 클릭하면 `Resource Picker`가 열립니다. 3. `Resource Picker`에서 `내 리소스`에 등록되어 있는 아바타 아이템 목록을 확인하고, 원하는 아이템을 클릭합니다. 4. 선택 후 프로퍼티 값을 확인하 [followup] | Resource Picker에서 '내 리소스'에 등록된 아바타 아이템을 선택한 후, 프로퍼티에 RUID 값이 정상적으로 입력되었는지 확인하는 방법은 무엇인가요? [followup_answer] | `Resource Picker`에서 '내 리소스'에 등록된 아바타 아이템을 선택한 후, `DefaultPlayer`의 `CostumeManagerComponent`에서 해당 프로퍼티를 다시 확인하면 됩니다. 정상적으로 선택이 완료된 경우, 해당 프로퍼티에 아바타 아이템의 `RUID` 값이 문자열 형태로 입력되어 있음을 볼 수 있습니다. [scores] | [judge_reason] | [source_doc] | 크리에이터가 제작한 월드에서 아바타 아이템을 착용할 수 있습니다. 1. **DefaultPlayer**의 **CostumeManagerComponent**에서 착용하고자 하는 아바타 아이템의 프로퍼티를 클릭합니다. 2. 해당 버튼을 클릭하면 **Resource Picker**가 열리고 **내 리소스**에 등록한 아바타 아이템이 나옵니다. 원하는 아바타 아이템을 클릭합니다. 3. 프로퍼티를 확인해보면 다음과 같이 RUID 값이 입력되어 있음을 확인할 수 있습니다. > **더 알아보기** > 직접 제작한 아바타 아이템을 상품
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | DefaultPlayer의 CostumeManagerComponent에서 아바타 아이템을 등록하는 3단계 과정을 번호 매긴 목록으로 설명하세요. [answer] | DefaultPlayer의 CostumeManagerComponent에서 아바타 아이템을 등록하는 과정은 다음과 같습니다. 1. **DefaultPlayer**의 **CostumeManagerComponent**에서 착용하고자 하는 아바타 아이템의 프로퍼티를 클릭합니다. 2. 해당 버튼을 클릭하면 **Resource Picker**가 열리며, **내 리소스**에 등록한 아바타 아이템 목록이 표시됩니다. 이 목록에서 원하는 아바타 아이템을 클릭합니다. 3. 프로퍼티 창을 확인하면 선택한 아바타 아이템에 해당하는 RUID 값이 입력되 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 크리에이터가 제작한 월드에서 아바타 아이템을 착용할 수 있습니다. 1. **DefaultPlayer**의 **CostumeManagerComponent**에서 착용하고자 하는 아바타 아이템의 프로퍼티를 클릭합니다. 2. 해당 버튼을 클릭하면 **Resource Picker**가 열리고 **내 리소스**에 등록한 아바타 아이템이 나옵니다. 원하는 아바타 아이템을 클릭합니다. 3. 프로퍼티를 확인해보면 다음과 같이 RUID 값이 입력되어 있음을 확인할 수 있습니다. > **더 알아보기** > 직접 제작한 아바타 아이템을 상품
[task] | two_turn [pass] | ⏳ 미판정 [title] | 장갑 만들기 [question] | guide_character_summary 레이어의 숫자 규칙과 guide_grid의 초록색 선 범위를 고려하여, 장갑을 올바르게 배치해야 하는 구체적인 작업 기준 위치(1~6번)는 어떻게 구분되나요? [answer] | 제공된 문서 내용을 바탕으로 `guide_character_summary` 레이어의 숫자 규칙과 `guide_grid`의 초록색 선 범위를 고려한 장갑 배치 기준 위치(1~6번) 구분 방법은 다음과 같습니다. **1. 기본 원칙** * **작업 범위:** 모든 작업은 `guide_grid` 레이어의 **초록색 선 안쪽**에서만 수행해야 합니다. * **레이어 구분:** * **lGlove**: 왼손 * **rGlove**: 오른손 * **숫자 규칙:** `guide_character_summary` [followup] | 5, 6 위치의 장갑만 그려야 하는 guide_character_summary_24, 47 레이어에서 주의해야 할 점은 무엇인가요? [followup_answer] | `guide_character_summary_24`와 `47` 레이어는 아바타 샘플을 기준으로 **5, 6 위치**에만 장갑을 그려야 하는 레이어입니다. 이 두 레이어를 작업할 때 주의해야 할 점은 다음과 같습니다. 1. **작업 위치 제한**: 1, 2, 3, 4 위치는 제외하고 **오직 5, 6 위치**에만 장갑을 그려야 합니다. 2. **샘플 참고**: 장갑 샘플이 그려진 위치를 반드시 참고하여, 아바타의 손 모양에 정확히 맞춰 그림을 그려야 합니다. 3. **초록색 선 범위 준수**: `guide_grid` 레이어의 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 장갑 제작 방법을 알아봅시다. 기본 장갑 색상을 바꾸고 그 위에 그림을 그릴 수 있습니다. 장갑은 복잡한 구조로 구성되어 있기 때문에 바지나 신발 아이템 제작에 익숙해진 후 작업하는 걸 권장합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Gl
[task] | code [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMap 에서 플레이어의 점프 및 타일 충돌 처리를 담당하는 KinematicbodyComponent 의 상태 변화를 모니터링하여 로그로 출력하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `KinematicbodyComponent`가 RectTileMap 환경에서 플레이어의 상하좌우 이동 및 **점프, 타일과의 충돌**을 지원한다는 사실과, 이 컴포넌트가 플레이어 엔티티에 활성화되어 있어야 한다는 정보만 포함되어 있습니다. 그러나 문서에는 `KinematicbodyComponent`의 구체적인 **API(메서드, 프로퍼티)**, **이벤트 핸들러(예: 충돌 감지 이벤트, 상태 변경 이벤트)**, 또는 **상태 변화를 모니터링할 수 있는 구체적인 방법**이 명시되어 있지 않습니다. mLua 스 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 RectTileMap 모드를 활용해 횡스크롤이 아닌, 탑다운 뷰의 월드를 제작할 수 있습니다. 이번 시간에는 RectTileMap에 대해 알아봅시다. # RectTileMap과 플레이어 이동 메이플스토리 월드에서는 MapleTile, RectTile, SideViewRectTile 모드로 지형을 만들 수 있습니다. * **MapleTile** * 메이플스토리 형태의 횡스크롤 맵을 만들 수 있습니다. [RigidbodyComponent](/apiReference/Component
[task] | instruction_following [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | 문서에 명시된 Sand, Grass, Rock 타일 이름과 스프라이트 대응 관계를 표로 정리해서 작성하세요. [answer] | 제공된 문서에는 Sand, Grass, Rock 타일 이름과 스프라이트 이미지의 구체적인 시각적 대응 관계(어떤 모양의 이미지가 어떤 타일인지)에 대한 설명이 포함되어 있지 않습니다. 문서에 명시된 내용은 다음과 같습니다: * **스프라이트 추가 순서**: Resource Picker에서 이미지를 드래그하여 추가한 후, "추가한 스프라이트를 차례로 선택하면 타일이 추가됩니다."라고만 설명되어 있습니다. * **타일 이름 설정**: 타일 편집 모드에서 추가된 타일의 이름을 **Sand**, **Grass**, **Rock** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | code [pass] | ⏳ 미판정 [title] | 아바타 아이템 등록하기 [question] | 주어진 원문에는 mLua 스크립트 작성에 필요한 API(컴포넌트, 서비스, 메서드) 정보가 전혀 포함되어 있지 않습니다. 원문은 아바타 아이템의 PSD 업로드, 미리보기 확인, 리소스 저장소 관리(이름 변경, 삭제, RUID 복사 등)에 대한 GUI 기반 운영 절차만 설명하고 있으며, 코딩 과제 생성이 불가능합니다. [answer] | 제시된 원문에는 mLua 스크립트 작성에 필요한 API(컴포넌트, 서비스, 메서드) 정보가 포함되어 있지 않습니다. 원문은 아바타 아이템의 PSD 업로드, 미리보기 확인, 리소스 저장소 관리(이름 변경, 삭제, RUID 복사 등)에 대한 GUI 기반 운영 절차만 설명하고 있습니다. 따라서 해당 문서를 근거로 mLua 코드 예제를 생성하거나 설명하는 것은 불가능합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서 크리에이터는 직접 아바타 아이템을 제작할 수 있습니다. 아바타 아이템을 만들기 위해서는 **제작**과 **등록** 단계를 진행해야 합니다. 이번 가이드에서는 등록 과정에 대한 내용을 설명하며 제작 과정에 대해서는 아래 가이드를 참고 부탁드립니다. ##### 참고 가이드 * [기본 개념](/docs?postId=588) * [하의 만들기](/docs?postId=584) * [망토 만들기](/docs?postId=585) * [상의 만들기](/docs?postId=586) * [장갑 만들기]
[task] | two_turn [pass] | ⏳ 미판정 [title] | RectTileMap의 활용 [question] | RectTileMap 컴포넌트를 사용하여 플레이어가 위치한 타일을 동적으로 교체하는 원리를 설명해 주세요 [answer] | RectTileMap 컴포넌트를 사용하여 플레이어가 위치한 타일을 동적으로 교체하는 과정은 다음과 같은 원리로 동작합니다. 1. **RectTileMap 엔티티와 컴포넌트 접근** * 맵이 `RectTileMap` 모드로 설정되어 있어야 하며, 맵 안에 `RectTileMapComponent`가 존재해야 합니다. * 스크립트에서는 `_EntityService:GetEntityByPath("/maps/map01/RectTileMap")`와 같은 경로로 맵 엔티티를 찾아낸 후, `.RectTileMapCompo [followup] | ToCellPosition 메서드로 월드 좌표를 타일 좌표로 변환한 후 GetTile로 현재 타일 정보를 확인하고, SetTile 메서드의 매개변수 순서가 타일 이름, x, y 순인 이유와 nil 체크가 필요한 이유를 알려 주세요 [followup_answer] | 제공된 참고 문서를 근거로 `ToCellPosition`, `GetTile`, `SetTile` 메서드의 매개변수 순서와 nil 체크의 필요성에 대해 설명합니다. **1. SetTile 메서드의 매개변수 순서 (타일 이름, x, y)** 참고 문서의 예제 코드에서 `SetTile` 메서드는 다음과 같이 호출됩니다. ```lua tilemap:SetTile(tileName, cellPos.x, cellPos.y) ``` 이 순서는 `RectTileMapComponent` API가 정의한 호출 규약에 따릅니다. * **첫 번째 매 [scores] | [judge_reason] | [source_doc] | RectTileMap 엔티티의 [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)는 타일을 배치하거나 월드 좌표를 타일 좌표로 변환하는 등 여러가지 기능을 제공합니다. [RectTileMapComponent](/apiReference/Components/RectTileMapComponent)를 활용해 타일을 동적으로 배치해봅시다. **예제 개요** * 맵에는 기본적으로 Sand 타일이 깔려있다. * 플레이어가 Sand 타일 위를 돌아다니며 특정 키를 누를 때
[task] | two_turn [pass] | ⏳ 미판정 [title] | 장갑 만들기 [question] | 아바타 장갑 아이템을 제작할 때 회색 레이어와 노란색 레이어의 차이점 및 각 레이어의 주요 용도는 무엇인가요? [answer] | 아바타 장갑 아이템 제작 시 회색 레이어와 노란색 레이어는 명확한 역할을 나누고 있으며, 각각의 용도와 차이점은 다음과 같습니다. **1. 회색 레이어 (잠김 상태, 수정 금지)** 이미지를 데이터화하고 제작 가이드를 제공하기 위한 레이어로, 모두 잠겨 있어 작업 중 수정할 필요가 없습니다. * **data 폴더**: 아이템을 데이터화하는 데 필요한 폴더입니다. 이미지 제작에는 영향을 주지 않습니다. * `data:origin`: 빨간색 점으로 데이터의 중심을 표시합니다. * `data:type:Glove [followup] | data 폴더 내 zmap 파일이 아바타 이미지 적층 순서에 어떤 영향을 미치는지 구체적으로 설명해 주세요. [followup_answer] | 참고 문서에 따르면, `data:use_zmap_preset1`은 아바타를 구성하는 이미지들이 층층이 쌓여 만들어지는 구조와 관련이 있습니다. 아바타의 다양한 몸동작을 만들기 위해 **몸을 바탕으로 옷, 방패, 무기 순서**로 이미지가 위에 쌓이는 구조이며, zmap 파일은 아이템에 따라 분리된 각 Sprite의 높이가 순서대로 정리된 파일입니다. 즉, zmap 파일은 이러한 적층 구조에서 각 Sprite가 어느 높이(순서)에 배치될지를 정의하여, 몸-옷-방패-무기의 올바른 겹침 순서를 유지하는 데 영향을 미칩니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 장갑 제작 방법을 알아봅시다. 기본 장갑 색상을 바꾸고 그 위에 그림을 그릴 수 있습니다. 장갑은 복잡한 구조로 구성되어 있기 때문에 바지나 신발 아이템 제작에 익숙해진 후 작업하는 걸 권장합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Gl