[task] | instruction_following [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | 이 예제에서 사용한 3개 맵의 목적지 엔티티 경로를 표로 정리하세요. [answer] | | **맵** | **목적지 엔티티 경로** | | --- | ------------ | | map01 | /maps/map01/object-19_1 | | map02 | /maps/map02/object-6_1 | | map03 | /maps/map03/object-42_1 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 특정 시간마다 캐릭터를 다른 맵으로 이동시키는 기능을 만들어 보면서 `TeleportService`의 `TeleportToEntityPath` 함수 사용법을 알아봅시다. ##### 참고 API Reference [TeleportService](/apiReference/Services/TeleportService) # 이동할 맵 만들기 먼저 캐릭터가 이동할 맵을 만듭니다. 1. **Window - Map List** 창을 엽니다. 2. **Map List** 창에서 **[새 맵 만들기]** 버튼을 클릭
[task] | single_turn [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | ChatBalloonComponent에서 BalloonScale과 FontSize 값을 모두 0으로 설정하면 말풍선이 어떻게 표시되나요? [answer] | ChatBalloonComponent에서 `BalloonScale`과 `FontSize` 값을 모두 0으로 설정하면, 해당 값이 커질수록 말풍선과 텍스트 크기도 커진다는 원리(역산)를 적용하면 크기가 0이 되어 말풍선이 보이지 않거나 점 수준으로 축소되어 사실상 표시되지 않게 됩니다. 참고 문서에는 이 두 Property가 "값이 커질수록 크기도 커진다"고만 명시되어 있으며, 값이 0일 때의 구체적인 렌더링 동작(완전히 숨겨지는지, 1px로 표시되는지 등)에 대한 정확한 기술은 없습니다. 따라서 0으로 설정하면 크기가 최소화되어 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Property는 각 Component의 세부사항을 설정합니다. Component에서 예시를 든 피자로 다시 돌아와 볼까요? 세 명의 아이가 페퍼로니 피자를 먹고 싶어 합니다. 철수는 페퍼로니가 2배들어 있는 피자를 원하고, 영희는 들어 있는 치즈가 체다가 아닌 모짜렐라 치즈를 원합니다. 윤후는 사이즈를 조금 더 크게 먹고 싶습니다. 기존에 도우 Component, 페퍼로니 Component, 치즈 Component 가 있습니다. 자, 어떻게 하면 될까요? 철수는 페퍼로니 2배 Component를 추가하고 영희는 모짜렐라 치즈
[task] | code [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | Property 블록에 number 타입의 Speed 속성을 정의하고, Entity의 TransformComponent를 수정하여 OnUpdate에서 속도에 비례해 이동하는 스크립트를 작성해줘 [answer] | 요청하신 `Speed` 속성을 정의하고 `OnUpdate`에서 속도에 비례해 Entity를 이동시키는 mLua 스크립트는 다음과 같습니다. ```lua Property: [None] number Speed = 10 Method: [server only] void OnUpdate(number delta) { local transform = self.Entity.TransformComponent local currentPosition = transform.Position -- 현재 위치의 X 좌표에 S [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 Entity와 Component 그리고 Property에 대해서 개념을 이해합니다. # Entity 엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? 빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. 메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직
[task] | code [pass] | ⏳ 미판정 [title] | 모델 [question] | UserService의 HandleUserEnterEvent 이벤트 핸들러를 구현하여 진입한 유저의 UserId를 log로 출력하는 스크립트를 작성해줘 [answer] | ```lua Event Handler: [service: UserService] HandleUserEnterEvent(UserEnterEvent event) { local UserId = event.UserId log(UserId) } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | single_turn [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | Property는 Entity 전체의 설정을 변경하는 것인지, Component 내부의 세부 동작만 조정하는 것인지 구분이 가능한가요? [answer] | 제공된 문서에 근거할 때, **Property는 Component 내부의 세부 동작과 설정을 조정하는 것**입니다. Entity 전체의 설정을 직접 변경하는 것이 아닙니다. 구체적인 근거와 동작 원리는 다음과 같습니다. 1. **정의**: 문서에서 Property는 "각 Component의 세부사항을 설정"하는 요소라고 명시하고 있습니다. 2. **동작 방식**: 같은 Entity가 동일한 Component를 사용하더라도, 해당 Component에 설정된 Property 값이 다르면 Entity별로 다르게 동작하게 할 수 있 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Property는 각 Component의 세부사항을 설정합니다. Component에서 예시를 든 피자로 다시 돌아와 볼까요? 세 명의 아이가 페퍼로니 피자를 먹고 싶어 합니다. 철수는 페퍼로니가 2배들어 있는 피자를 원하고, 영희는 들어 있는 치즈가 체다가 아닌 모짜렐라 치즈를 원합니다. 윤후는 사이즈를 조금 더 크게 먹고 싶습니다. 기존에 도우 Component, 페퍼로니 Component, 치즈 Component 가 있습니다. 자, 어떻게 하면 될까요? 철수는 페퍼로니 2배 Component를 추가하고 영희는 모짜렐라 치즈
[task] | code [pass] | ⏳ 미판정 [title] | 맵 레이어 [question] | TransformComponent의 Position Z값을 -10으로 변경해 다른 엔티티보다 뒤에 보이도록 조정하는 스크립트를 작성해줘 [answer] | 참고 문서에 명시된 내용을 바탕으로, `TransformComponent`의 `Position` Z값을 변경하는 방법을 설명합니다. 문서에서는 엔티티의 순서가 `Map Layer` > `SpriteRendererComponent`의 `OrderInLayer` > `TransformComponent`의 `Position Z값` 순서로 결정된다고 안내하고 있습니다. 따라서 다른 엔티티보다 뒤에 보이게 하려면 Z값을 더 작은 숫자(예: -10)로 설정하면 됩니다. 아래 스크립트는 특정 엔티티의 `TransformComponent`에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 맵 레이어를 사용해 더욱 입체적으로 게임 화면을 디자인할 수 있습니다. 맵 레이어 창 구성을 살펴보고 활용하는 방법을 알아봅니다. 레이어 순서를 이해하고 레이어를 크리에이터의 게임에 맞게 활용할 수 있습니다. # 맵 레이어 위치 맵 레이어 창은 기본 패널 설정 기준, 중앙 하단에 위치합니다. 작업 편의를 위해 탭을 닫은 후 다시 불러올 때는 **Panels - Map Layer**을 선택해 불러올 수 있습니다. | 메이커 화면 기본 위치 | Panels - Map Layer | | ------------
[task] | two_turn [pass] | ⏳ 미판정 [title] | 컴포넌트 추가와 삭제 [question] | 엔티티에 컴포넌트를 추가하고 삭제하는 기본적인 프로세스가 궁금합니다. [answer] | 엔티티에 컴포넌트를 추가하고 삭제하는 과정은 프로퍼티 에디터 창을 통해 수행됩니다. 컴포넌트는 엔티티의 동작 방식을 결정하는 핵심 요소로, 크리에이터가 제작한 모델에 추가하거나 삭제하여 겉모습은 같지만 다른 동작을 하는 엔티티를 만들 수 있습니다. ### 1. 컴포넌트 추가 1. 프로퍼티 에디터 하단의 **Add component** 버튼을 누릅니다. 2. 검색 기능을 이용해 추가할 컴포넌트를 찾은 후 선택합니다. 3. 프로퍼티 에디터 창에 선택한 컴포넌트가 정상적으로 추가되었는지 확인합니다. ### 2. 컴포넌트 삭제 1. 삭 [followup] | 컴포넌트를 삭제한 후 실수로 초기값으로 되돌리고 싶을 때 Reset All Properties를 어떻게 적용해야 하나요? [followup_answer] | 컴포넌트를 삭제한 후 다시 초기값으로 되돌리고 싶다면, 해당 컴포넌트가 엔티티에 다시 존재해야 합니다. 삭제된 컴포넌트에는 프로퍼티 초기화 명령을 적용할 수 없으므로, 먼저 컴포넌트를 다시 추가한 후 초기화 과정을 진행해야 합니다. 1. 프로퍼티 에디터 하단의 **Add component**를 눌러 삭제했던 컴포넌트를 다시 추가합니다. 2. 추가된 컴포넌트 이름 옆의 콘텍스트 메뉴를 엽니다. 3. 메뉴에서 **Reset All Properties**를 선택하면 컴포넌트의 프로퍼티 값이 초깃값으로 되돌아갑니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 정체성을 불어넣는 방법은 컴포넌트를 이용하는 것입니다. 컴포넌트와 프로퍼티 에디터 창 이용 방법을 알아보겠습니다. # 컴포넌트 구분 컴포넌트는 엔티티의 정체성을 결정하는 역할을 합니다. 컴포넌트는 크리에이터가 제작한 모델에서 몇 가지 컴포넌트를 추가하거나, 삭제해 겉모습은 같지만 다르게 동작하는 엔티티를 제작할 수 있습니다. 프로퍼티 에디터 창에서 컴포넌트는 **Map, UI, Player, Etc** 4가지 항목으로 분류하고 있습니다.각 항목에 맞는 컴포넌트가 들어 있으며, 컴포넌트의 특징은 아
[task] | two_turn [pass] | ⏳ 미판정 [title] | 모델 [question] | 모델이란 무엇이며, 엔티티를 여러 개 배치할 때 왜 모델화를 사용해야 하는지 설명해 주세요. [answer] | **모델(Model)**은 특정 엔티티의 컴포넌트와 프로퍼티 정보를 포함하는 판본입니다. 일상생활에서 여러 번 같은 그림을 그릴 때 쓰는 '도장'에 비유할 수 있으며, 이 도장을 찍으면 동일한 모양의 엔티티가 생성되는 원리입니다. **엔티티를 여러 개 배치할 때 모델화를 사용하는 이유**는 반복 작업을 줄이기 위해서입니다. 만약 나무 엔티티에 특정 컴포넌트(예: `ChatBalloonComponent`)를 추가한 "말하는 나무"를 만들고 싶다면, 모델화를 사용하지 않으면 나무 엔티티를 하나씩 배치하고 매번 컴포넌트를 추가하는 수 [followup] | "말하는 나무" 엔티티를 모델로 변환한 후, 이 모델을 통해 100개의 나무를 배치하는 구체적인 절차와 Workspace - MyDesk에서 모델을 확인하는 방법을 알려주세요. [followup_answer] | "말하는 나무" 엔티티를 모델로 변환하고 이를 활용하여 100개의 나무를 배치하는 절차는 다음과 같습니다. ### 1. "말하는 나무" 엔티티 모델화하기 1. 기존 나무 엔티티에 `ChatBalloonComponent`를 추가하여 "말하는 나무"를 만듭니다. 2. 완성된 "말하는 나무" 엔티티의 **콘텍스트 메뉴(우클릭 메뉴)**에서 **`Create Model From Entity`** 항목을 클릭합니다. 3. 이 작업을 통해 엔티티의 컴포넌트와 프로퍼티 정보가 담긴 모델이 생성됩니다. ### 2. Workspace - [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | code [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | Entity의 TransformComponent를 활용하여 OnUpdate 메서드에서 위치를 주기적으로 변경시켜 직선 이동하는 스크립트를 작성해줘 [answer] | Entity의 `TransformComponent`를 사용하여 `OnUpdate`에서 위치를 주기적으로 변경시켜 직선 이동하는 스크립트를 작성합니다. 참고 문서에 있는 예제처럼 `self.Entity.TransformComponent:Translate(x, y, z)` 메서드를 사용하거나, `Position` 프로퍼티를 직접 조작하여 이동을 구현할 수 있습니다. 아래 예제는 `Translate` 메서드를 사용하여 매 프레임마다 Y축 방향으로 일정 속도만큼 이동하는 직선 이동 스크립트입니다. ```lua Property: [Non [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 Entity와 Component 그리고 Property에 대해서 개념을 이해합니다. # Entity 엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? 빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. 메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | 새 맵을 2개 추가하고 각 맵에 목적지 엔티티를 배치하는 과정을 단계별 번호 목록으로 설명하세요. [answer] | 새 맵을 2개 추가하고 각 맵에 목적지 엔티티를 배치하는 과정은 다음과 같습니다. 1. **Window - Map List** 창을 엽니다. 2. **Map List** 창에서 **[새 맵 만들기]** 버튼을 클릭하여 2개의 새 맵을 추가합니다. 3. 이동했을 때 쉽게 알아볼 수 있도록 각 맵을 특색 있게 꾸밉니다. 4. 각 맵으로 텔레포트했을 때 목적지 역할을 할 엔티티를 하나씩 배치합니다. 5. **Hierarchy**에서 각 엔티티의 콘텍스트 메뉴를 열고 **Copy Entity Path**를 클릭해 경로를 복사한 뒤 따로 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 특정 시간마다 캐릭터를 다른 맵으로 이동시키는 기능을 만들어 보면서 `TeleportService`의 `TeleportToEntityPath` 함수 사용법을 알아봅시다. ##### 참고 API Reference [TeleportService](/apiReference/Services/TeleportService) # 이동할 맵 만들기 먼저 캐릭터가 이동할 맵을 만듭니다. 1. **Window - Map List** 창을 엽니다. 2. **Map List** 창에서 **[새 맵 만들기]** 버튼을 클릭
[task] | code [pass] | ⏳ 미판정 [title] | 모델 [question] | TimerService를 사용해 OnBeginPlay에서 1초 후 실행되는 함수를 등록하고 log를 출력하는 스크립트를 작성해줘 [answer] | `_TimerService:SetTimerOnce` 메서드를 사용해야 합니다. 이 메서드는 주어진 시간(초)이 지난 후 특정 함수를 한 번만 실행하도록 예약합니다. 요구사항에 맞춰 `OnBeginPlay`가 실행될 때 1초 후 로그를 출력하도록 예약하는 스크립트입니다. ```lua Method: [server only] void OnBeginPlay() { _TimerService:SetTimerOnce(function() log("1초 후 실행된 함수입니다.") end, 1) } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | code [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | Entity의 TransformComponent를 사용하여 OnUpdate 메서드에서 현재 위치가 특정 Vector3 값과 일치하는지 확인하여 조건에 맞는 경우 log로 메시지를 출력하는 스크립트를 작성해줘 [answer] | Entity의 `TransformComponent`를 통해 현재 위치(`Position`)를 가져오고, 이를 특정 `Vector3` 값과 비교하여 조건이 일치할 때 `log`로 메시지를 출력하는 스크립트입니다. ```lua Property: [None] Vector3 targetPosition = Vector3(0, 0, 0) Method: [server only] void OnUpdate(number delta) { local currentPosition = self.Entity.TransformComponent.Pos [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 Entity와 Component 그리고 Property에 대해서 개념을 이해합니다. # Entity 엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? 빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. 메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직
[task] | two_turn [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | TeleportService의 TeleportToEntityPath 함수를 사용해 특정 시간마다 캐릭터를 다른 맵으로 이동시키는 기능을 어떻게 구현하나요? [answer] | 제공된 참고 문서에는 `TeleportService`의 `TeleportToEntityPath` 함수를 사용하는 구체적인 코드 예제나 매개변수 정의가 포함되어 있지 않습니다. 문서의 '학습 과정 소개' 부분에서 이 함수의 사용법을 배우는 과정임을 언급하고 있으며, '참고 API Reference'로 `TeleportService` 링크를 제공하고 있지만, 실제 함수 호출 문법이나 인자 구성에 대한 정보가 없습니다. 또한, '특정 시간마다' 반복적으로 실행하기 위한 타이머 설정 관련 API(예: `SetTimer`)에 대한 설명도 [followup] | 3개 맵(map01, map02, map03) 사이를 순환하며 텔레포트하도록 TimerService와 함께 작성한 mLua 스크립트 예제를 보여주세요. [followup_answer] | 제공된 참고 문서에는 `TimerService`에 대한 설명이나 API가 포함되어 있지 않으며, `TeleportService`의 `TeleportToEntityPath` 함수의 구체적인 매개변수(인자) 정보도 없습니다. 문서에서 확인 가능한 정보는 다음과 같습니다: 1. 목적지 엔티티 경로: * map01: `/maps/map01/object-19_1` * map02: `/maps/map02/object-6_1` * map03: `/maps/map03/object-42_1` 2. `Telepo [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 특정 시간마다 캐릭터를 다른 맵으로 이동시키는 기능을 만들어 보면서 `TeleportService`의 `TeleportToEntityPath` 함수 사용법을 알아봅시다. ##### 참고 API Reference [TeleportService](/apiReference/Services/TeleportService) # 이동할 맵 만들기 먼저 캐릭터가 이동할 맵을 만듭니다. 1. **Window - Map List** 창을 엽니다. 2. **Map List** 창에서 **[새 맵 만들기]** 버튼을 클릭
[task] | single_turn [pass] | ⏳ 미판정 [title] | 모델 [question] | 모델을 생성한 후 이 모델을 찾아서 내 월드에 배치하기 위해 확인해야 하는 위치는 어디인가요? [answer] | 모델을 생성한 후 해당 모델을 확인하고 배치하기 위해 살펴봐야 하는 위치는 **Workspace - MyDesk** 입니다. 엔티티를 모델로 변환(모델화)한 뒤에는 이 위치에서 만든 모델(예: "말하는 나무")을 찾아서 나만의 도장처럼 활용할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | single_turn [pass] | ⏳ 미판정 [title] | 컴포넌트 추가와 삭제 [question] | 컴포넌트를 추가했는데 값이 잘못 설정되어서 처음 상태로 되돌리고 싶은데 어떻게 해야 하나요? [answer] | 프로퍼티 에디터 창에서 해당 컴포넌트 이름 옆의 콘텍스트 메뉴를 열고 **Reset All Properties**를 선택하면 컴포넌트의 프로퍼티 값이 초깃값으로 되돌아갑니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 정체성을 불어넣는 방법은 컴포넌트를 이용하는 것입니다. 컴포넌트와 프로퍼티 에디터 창 이용 방법을 알아보겠습니다. # 컴포넌트 구분 컴포넌트는 엔티티의 정체성을 결정하는 역할을 합니다. 컴포넌트는 크리에이터가 제작한 모델에서 몇 가지 컴포넌트를 추가하거나, 삭제해 겉모습은 같지만 다르게 동작하는 엔티티를 제작할 수 있습니다. 프로퍼티 에디터 창에서 컴포넌트는 **Map, UI, Player, Etc** 4가지 항목으로 분류하고 있습니다.각 항목에 맞는 컴포넌트가 들어 있으며, 컴포넌트의 특징은 아
[task] | single_turn [pass] | ⏳ 미판정 [title] | 모델 [question] | 기존에 완성된 엔티티를 모델로 변환하는 작업인 모델화의 정확한 실행 절차는 어떻게 되나요? [answer] | 기존에 완성된 엔티티를 모델로 변환하는 작업인 모델화의 실행 절차는 다음과 같습니다. 1. 변환하려는 대상 엔티티(예: "말하는 나무")를 선택합니다. 2. 해당 엔티티의 콘텍스트 메뉴(우클릭 메뉴)에서 **Create Model From Entity** 옵션을 클릭합니다. 이렇게 하면 엔티티가 모델로 변환되며, 새로 생성된 모델은 **Workspace - MyDesk**에서 확인할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | code [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | ChatBalloonComponent 의 BalloonScale 과 FontSize Property 를 설정하여 Entity 의 크기나 텍스트 크기를 다르게 조절하는 스크립트를 작성해줘 [answer] | ChatBalloonComponent의 `BalloonScale`과 `FontSize` Property를 설정하여 말풍선의 크기와 텍스트 크기를 조절하는 스크립트입니다. ```lua Property: [Sync] number MyBalloonScale = 1.0 [Sync] number MyFontSize = 1.0 Method: [server only] void OnBeginPlay() { local chatBalloon = self.Entity.ChatBalloonComponent if chatBalloon = [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Property는 각 Component의 세부사항을 설정합니다. Component에서 예시를 든 피자로 다시 돌아와 볼까요? 세 명의 아이가 페퍼로니 피자를 먹고 싶어 합니다. 철수는 페퍼로니가 2배들어 있는 피자를 원하고, 영희는 들어 있는 치즈가 체다가 아닌 모짜렐라 치즈를 원합니다. 윤후는 사이즈를 조금 더 크게 먹고 싶습니다. 기존에 도우 Component, 페퍼로니 Component, 치즈 Component 가 있습니다. 자, 어떻게 하면 될까요? 철수는 페퍼로니 2배 Component를 추가하고 영희는 모짜렐라 치즈
[task] | single_turn [pass] | ⏳ 미판정 [title] | 컴포넌트 추가와 삭제 [question] | 컴포넌트를 삭제하려고 하는데 프로퍼티 에디터에서 어디를 눌러야 삭제 메뉴가 나오나요? [answer] | 프로퍼티 에디터에서 컴포넌트명을 마우스 오른쪽 버튼으로 클릭하여 콘텍스트 메뉴를 열고, 해당 메뉴에서 **Remove Component**를 선택하면 컴포넌트가 삭제됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 정체성을 불어넣는 방법은 컴포넌트를 이용하는 것입니다. 컴포넌트와 프로퍼티 에디터 창 이용 방법을 알아보겠습니다. # 컴포넌트 구분 컴포넌트는 엔티티의 정체성을 결정하는 역할을 합니다. 컴포넌트는 크리에이터가 제작한 모델에서 몇 가지 컴포넌트를 추가하거나, 삭제해 겉모습은 같지만 다르게 동작하는 엔티티를 제작할 수 있습니다. 프로퍼티 에디터 창에서 컴포넌트는 **Map, UI, Player, Etc** 4가지 항목으로 분류하고 있습니다.각 항목에 맞는 컴포넌트가 들어 있으며, 컴포넌트의 특징은 아
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | TeleportService의 TeleportToEntityPath 함수를 사용하는 코드를 출력하되, 설명은 주석으로만 작성하세요. [answer] | ```lua Property: [None] string TargetEntityPath = "/maps/map02/object-6_1" Method: [server only] void OnBeginPlay() { -- TeleportService의 TeleportToEntityPath 함수 호출 제한을 설정합니다. _RateLimitService:SetServerFunctionRateLimitForService("TeleportService", "TeleportToEntityPath", 3, 0.1) } Event [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 특정 시간마다 캐릭터를 다른 맵으로 이동시키는 기능을 만들어 보면서 `TeleportService`의 `TeleportToEntityPath` 함수 사용법을 알아봅시다. ##### 참고 API Reference [TeleportService](/apiReference/Services/TeleportService) # 이동할 맵 만들기 먼저 캐릭터가 이동할 맵을 만듭니다. 1. **Window - Map List** 창을 엽니다. 2. **Map List** 창에서 **[새 맵 만들기]** 버튼을 클릭
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | TeleportService의 TeleportToEntityPath 함수를 호출할 때 매개 변수로 전달되는 값 2가지를 코드 식별자만 사용해 나열하세요. [answer] | self.Entity, self._T.destinationTable[destinationNum] [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트를 통해 텔레포트 기능을 만듭니다. 새 스크립트 컴포넌트를 만든 뒤 캐릭터에 추가합니다. 1. **Workspace - MyDesk** 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 컴포넌트를 추가합니다. 2. 컴포넌트 이름을 **Teleport**로 설정합니다. 3. **Workspace - DefaultPlayer**에 **Teleport** 컴포넌트를 추가합니다. 이제 본격적으로 스크립트를 작성해 봅시다.
[task] | instruction_following [pass] | ⏳ 미판정 [title] | 텔레포트 [question] | 문서에 제시된 텔레포트 스크립트에서 _T.teleportCnt 변수가 증가하는 조건과 증가 후 수행되는 계산식을 1문장으로 설명하세요. [answer] | `self._T.accTime`이 3초 이상 누적되면 `self._T.teleportCnt`가 1 증가하고, 증가된 값에 대해 `self._T.teleportCnt % 3 + 1`을 계산하여 목적지 엔티티의 인덱스를 결정합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트를 통해 텔레포트 기능을 만듭니다. 새 스크립트 컴포넌트를 만든 뒤 캐릭터에 추가합니다. 1. **Workspace - MyDesk** 콘텍스트 메뉴에서 **Create Scripts - Create Component**를 클릭해 새 컴포넌트를 추가합니다. 2. 컴포넌트 이름을 **Teleport**로 설정합니다. 3. **Workspace - DefaultPlayer**에 **Teleport** 컴포넌트를 추가합니다. 이제 본격적으로 스크립트를 작성해 봅시다.
[task] | single_turn [pass] | ⏳ 미판정 [title] | 컴포넌트 추가와 삭제 [question] | 컴포넌트는 추가하면 자동으로 켜지는데, 필요할 때만 동작하도록 끄고 싶을 때 체크박스와 메뉴 중 어떤 것을 써야 하나요? [answer] | 컴포넌트는 추가와 동시에 자동으로 활성화됩니다. 필요할 때만 동작하도록 끄고 싶을 때는 다음과 두 가지 방법 중 하나를 사용할 수 있습니다. 1. **체크박스 사용**: 프로퍼티 에디터 창에서 아이콘과 컴포넌트 이름 사이에 있는 체크박스를 선택해 활성(체크) 또는 비활성(미체크) 상태를 변경할 수 있습니다. 2. **콘텍스트 메뉴 사용**: 컴포넌트명 옆에 있는 콘텍스트 메뉴를 열고 **Disable Component**를 선택해 비활성화할 수 있습니다. 두 방법 모두 컴포넌트를 끄는 데 사용 가능하며, 구체적인 상황이나 편의에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 엔티티에 정체성을 불어넣는 방법은 컴포넌트를 이용하는 것입니다. 컴포넌트와 프로퍼티 에디터 창 이용 방법을 알아보겠습니다. # 컴포넌트 구분 컴포넌트는 엔티티의 정체성을 결정하는 역할을 합니다. 컴포넌트는 크리에이터가 제작한 모델에서 몇 가지 컴포넌트를 추가하거나, 삭제해 겉모습은 같지만 다르게 동작하는 엔티티를 제작할 수 있습니다. 프로퍼티 에디터 창에서 컴포넌트는 **Map, UI, Player, Etc** 4가지 항목으로 분류하고 있습니다.각 항목에 맞는 컴포넌트가 들어 있으며, 컴포넌트의 특징은 아
[task] | two_turn [pass] | ⏳ 미판정 [title] | 스크립트 에디터 오리엔테이션 [question] | 스크립트 에디터에서 "Hello Maple World" 로그를 출력하기 위해 `OnBeginPlay` 함수를 작성하고 엔티티에 컴포넌트를 추가하는 전체 과정은 어떻게 되나요? [answer] | 메이플스토리 월드에서 스크립트 에디터를 사용하여 "Hello Maple World" 로그를 출력하는 과정은 컴포넌트 생성, 스크립트 작성, 엔티티에 컴포넌트 부착 순으로 진행됩니다. ### 1. 스크립트 컴포넌트 생성 1. 메이커의 **Workspace** 탭으로 이동합니다. 2. **Workspace - MyDesk - Create Scripts - Create Component**를 클릭하여 새로운 컴포넌트를 생성합니다. 3. 새 컴포넌트의 이름을 **HelloMapleWorld**로 입력합니다. 4. 생성된 **HelloMa [followup] | `HelloMapleWorld` 컴포넌트를 `DefaultPlayer`에 추가한 후 테스트 시 콘솔 창에 로그가 출력되지 않으면 어떤 부분을 먼저 점검해야 하나요? [followup_answer] | 제공된 참고 문서에는 로그가 출력되지 않을 경우의 구체적인 오류 진단 절차나 점검 항목에 대한 내용이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 사실은 다음과 같습니다: 1. 스크립트 컴포넌트가 실행되려면 반드시 엔티티에 추가해야 합니다. 2. `DefaultPlayer`에 `HelloMapleWorld` 컴포넌트를 추가한 후, **Scene** 탭에서 **[시작]** 버튼을 눌러 테스트해야 합니다. 3. 정상적으로 테스트가 진행되면 콘솔 창에 "Hello Maple World" 로그가 출력됩니다. 따라서 문서의 범위 내 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 스크립트 에디터를 사용해 크리에이터가 원하는 컴포넌트나 로직을 만들 수 있습니다. 스크립트 문법은 **Lua Script**를 사용하며 다양한 **API**를 지원합니다. 월드를 만들다 보면, 메이플스토리 월드에서 제공하는 스크립트나 다른 크리에이터가 작성한 스크립트를 수정해야 할 일이 생깁니다. 스크립트를 수정하기 위해서라도 스크립트 에디터 기본 사용법을 익혀두는 것이 좋습니다. 이번 과정에서는 간단하게 스크립트로 로그를 출력하는 방법을 알아보고, 스크립트 에디터의 다양한 편의 기능도
[task] | code [pass] | ⏳ 미판정 [title] | 모델 [question] | EntityService를 사용해 경로 "/maps/map01/obj"의 엔티티를 가져와 TransformComponent의 Position을 수정하는 스크립트를 작성해줘 [answer] | `_EntityService:GetEntityByPath("/maps/map01/obj")`를 호출하여 해당 경로에 있는 엔티티를 가져온 후, `TransformComponent.Position` 프로퍼티에 새로운 좌표를 할당하면 됩니다. 참고로, `TransformComponent`의 `Position`은 `Vector3` 타입입니다. 아래 예제에서는 엔티티의 위치를 `(10, 0, 20)`으로 수정하는 방법을 보여줍니다. ```lua Method: [server only] void OnBeginPlay() { loca [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | single_turn [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | 피자 예시에서처럼 Component의 재사용성을 높이기 위해 Property를 도입해야 하는 구체적인 이유는 무엇인가요? [answer] | 피자 예시를 통해 Component의 재사용성을 높이기 위해 Property를 도입해야 하는 구체적인 이유는 다음과 같습니다. **1. Component 수의 무한 증가 방지 (재사용성 확보)** Property를 사용하지 않으면, Entity(피자)의 세부 설정(철수의 페퍼로니 2배, 영희의 모짜렐라 치즈, 윤후의 큰 사이즈 등)을 반영하기 위해 각각에 맞는 별도의 Component를 새로 만들어야 합니다. 예를 들어 '페퍼로니 2배 Component', '모짜렐라 치즈 Component', '도우 2배 Component' 등을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Property는 각 Component의 세부사항을 설정합니다. Component에서 예시를 든 피자로 다시 돌아와 볼까요? 세 명의 아이가 페퍼로니 피자를 먹고 싶어 합니다. 철수는 페퍼로니가 2배들어 있는 피자를 원하고, 영희는 들어 있는 치즈가 체다가 아닌 모짜렐라 치즈를 원합니다. 윤후는 사이즈를 조금 더 크게 먹고 싶습니다. 기존에 도우 Component, 페퍼로니 Component, 치즈 Component 가 있습니다. 자, 어떻게 하면 될까요? 철수는 페퍼로니 2배 Component를 추가하고 영희는 모짜렐라 치즈
[task] | code [pass] | ⏳ 미판정 [title] | 모델 [question] | SpawnService를 사용해 모델 ID 101의 나무 엔티티를 지정된 위치 10개소에 배치하는 스크립트를 작성해줘 [answer] | 사용자가 요청한 대로 `SpawnService`를 사용하여 모델 ID가 101인 나무 엔티티를 지정된 10개 위치에 배치하는 스크립트를 작성했습니다. 참고 문서에 따르면, `_SpawnService:SpawnByModelId(id, name, pos, parent)` 메서드를 사용하여 모델 ID를 기반으로 엔티티를 스폰할 수 있습니다. 위치 정보는 `Vector3` 타입으로 전달되며, 10개소 배치를 위해 반복문(for loop)을 사용하여 각 위치를 정의하고 스폰합니다. ```lua Property: [None] number [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야
[task] | single_turn [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | 프로퍼티 에디터에서 Component를 관리한다고 하는데, 내가 직접 만든 스크립트 컴포넌트와 시스템에 미리 정의된 내장 컴포넌트(예: TransformComponent)의 차이점은 무엇인가요? [answer] | 제공된 참고 문서에는 "프로퍼티 에디터에서 Component를 관리한다"는 내용과 Entity, Component, Property의 기본 개념 설명만 포함되어 있습니다. 문서에는 **직접 만든 스크립트 컴포넌트**와 **시스템에 미리 정의된 내장 컴포넌트(예: TransformComponent)** 의 구체적인 차이점(구현 방식, 관리 방법, 접근 권한 등)에 대한 설명이 없습니다. 참고 문서의 내용만으로는 두 컴포넌트의 차이를 설명할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 Entity와 Component 그리고 Property에 대해서 개념을 이해합니다. # Entity 엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? 빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. 메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직
[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크립트 에디터 오리엔테이션 [question] | 메이플스토리 월드에서 스크립트 문법으로 사용하는 언어와 지원되는 주요 기능은 무엇인가요? [answer] | 메이플스토리 월드는 스크립트 문법으로 **Lua Script**를 사용합니다. 이 언어를 기반으로 다양한 **API**를 지원하며, 크리에이터는 이를 통해 원하는 컴포넌트나 로직을 직접 만들 수 있습니다. 주요 지원 기능은 다음과 같습니다. 1. **로그 출력 (`log` 함수)** - 스크립트 작성 시 가장 기본적이고 자주 사용되는 함수입니다. - `log` 함수의 매개 변수로 넘겨진 값을 콘솔 창에 출력하여 변수, 프로퍼티 값, 함수 반환 값 등을 확인할 수 있습니다. 2. **스크립트 컴포넌트 생성 및 관리** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 스크립트 에디터를 사용해 크리에이터가 원하는 컴포넌트나 로직을 만들 수 있습니다. 스크립트 문법은 **Lua Script**를 사용하며 다양한 **API**를 지원합니다. 월드를 만들다 보면, 메이플스토리 월드에서 제공하는 스크립트나 다른 크리에이터가 작성한 스크립트를 수정해야 할 일이 생깁니다. 스크립트를 수정하기 위해서라도 스크립트 에디터 기본 사용법을 익혀두는 것이 좋습니다. 이번 과정에서는 간단하게 스크립트로 로그를 출력하는 방법을 알아보고, 스크립트 에디터의 다양한 편의 기능도
[task] | single_turn [pass] | ⏳ 미판정 [title] | Entity, Component, Property [question] | Component를 분리하는 이유가 재사용성이라고 설명되었는데, 실제 제작 시 동일한 Component를 여러 Entity에 적용하는 것이 메모리나 성능에 부담이 되지 않는지 걱정되네요. [answer] | 제시된 참고 문서에는 Component를 분리하는 이유가 재사용성에 있다고 설명되어 있으나, 동일한 Component를 여러 Entity에 적용할 경우 발생하는 메모리 사용량이나 성능 저하에 대한 구체적인 정보나 데이터는 포함되어 있지 않습니다. 따라서 문서의 내용만으로는 해당 걱정이 실제 제작 시 문제가 되는지 여부를 판단할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 Entity와 Component 그리고 Property에 대해서 개념을 이해합니다. # Entity 엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? 빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. 메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직
[task] | single_turn [pass] | ⏳ 미판정 [title] | 모델 [question] | Preset List에서 제공하는 기본 프리셋과 내가 직접 엔티티를 만들어 모델화한 나만의 모델은 어떤 차이가 있나요? [answer] | **Preset List**에서 제공하는 기본 프리셋은 메이플스토리 게임 데이터에 기반하여 미리 만들어져 있는 모델입니다. 반면, 엔티티를 직접 만들어 **모델화**한 나만의 모델은 메이플스토리 리소스나 제작 중인 월드의 데이터를 바탕으로 사용자가 원하는 대로 컴포넌트와 프로퍼티를 수정하여 만든 모델입니다. 구체적인 차이점은 다음과 같습니다. 1. **출처와 기반 데이터**: * **기본 프리셋**: 메이플스토리 데이터 자체를 기반으로 합니다. * **나만의 모델**: 메이플스토리 리소스에서 컴포넌트와 프로퍼티를 변경 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 자주 사용했던 모델의 개념을 정확히 이해합니다. # 원하는 Entity 만들기 원하는 엔티티를 만들려면, 엔티티에 컴포넌트를 추가하고 프로퍼티를 수정해야 합니다. 다음과 같은 나무를 만들어봅시다. 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 알맞게 수정했습니다. 완성이군요! 이렇게 여러 개의 나무를 모아서 숲을 만들고 싶습니다. 어떻게 하면 될까요? 엔티티를 만들고 컴포넌트를 추가하고 프로퍼티를 4번 수정하면 되겠군요. 나무가 100개가 있다면 어떻게 하면 될까요? 그렇습니다. 100번을 해야