← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 메시지 양이 많아질수록 전통적인 방식의 효율이 떨어지는 원인과 실행 제어가 이를 해결하는 방법은 무엇인가요? [answer] | 메시지 양이 많아질수록 전통적인 방식의 효율이 떨어지는 원인은 네트워크 비용의 증가입니다. 메시지 전체를 그대로 전송하는 방식은 데이터 용량이 크기 때문에, 주고받는 메시지의 수가 증가하면 그에 비례하여 네트워크 트래픽이 늘어납니다. 실행 제어는 이러한 문제를 해결하기 위해 메시지 전체를 전송하는 대신, 동일한 의미를 나타내는 '부호'를 전송하는 방식을 사용합니다. 예를 들어, "3초간 춤을 춰!"라는 명령을 보낼 때 메시지 전체 대신 **Code-45**와 **3초**라는 아주 적은 용량의 정보만 전송합니다. 이렇게 하면 송수신 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 클라이언트와 서버의 흐름을 쉽게 제어할 수 있게 하는 실행 제어의 개념과 활용 방법을 알아봅니다. ##### 들어가기에 앞서 본 과정을 이해하기 위해선 다음 가이드 선행 학습이 필요합니다. [서버와 클라이언트](https://mod-developers.nexon.com/docs?postId=207%7B%22target%22:%22\_self%22%7D) # 서버 - 클라이언트 간 데이터 통신 **클라이언트 - 서버** 간의 흐름을 제어하려면 데이터를 전송해야 합니다. 예를 들어, 서버에서 클라이언트로 "3초

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 텍스트 검색과 이미지 검색 시 RUID 값을 복사하기 위한 공통 조작 단계를 단계별 번호 목록으로 작성하세요. [answer] | 텍스트 검색과 이미지 검색 모두에서 RUID 값을 복사하기 위한 공통 조작 단계는 다음과 같습니다. 1. 카테고리에서 원하는 리소스를 찾습니다. 2. 해당 리소스의 **[RUID 복사]** 버튼을 클릭합니다. 3. 복사된 RUID 값을 필요한 곳에 사용합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 실행 제어 함수에서 매개 변수로 사용할 수 없는 타입과, SyncTable의 k 또는 v 타입 제한 조건을 3문장 이내로 설명해 주세요. [answer] | 실행 제어 함수의 매개 변수로는 `any` 타입만 사용할 수 없습니다. `SyncTable< v >` 또는 `SyncTable< k, v >`를 사용할 경우, `k` 또는 `v`의 타입은 문서에 명시된 매개 변수 허용 타입 목록에만 제한됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Sprite와 AnimationClip 카테고리의 주요 차이점은 무엇인가요? [answer] | Sprite와 AnimationClip 카테고리의 주요 차이점은 리소스에 움직임(애니메이션)이 포함되었는지 여부입니다. * **Sprite**: 움직임이 없는 정적인 스프라이트 이미지입니다. * **AnimationClip**: 움직임이 포함된 애니메이션 스프라이트입니다. 이 두 카테고리는 모두 `object`, `monster`, `npc`, `trap`, `item`, `skill`, `portal` 등의 하위 카테고리를 공유하지만, AnimationClip은 Sprite에 없는 `background` 하위 카테고리를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 제작한 월드 불러오기 및 관리 [question] | 리비전 관리 기능 중 개인 월드와 그룹 월드의 되돌리기 절차 차이를 2문장 이내로 설명하세요. [answer] | 개인 월드는 리비전 창에서 해당 리비전을 바로 되돌릴 수 있습니다. 반면, 그룹 월드는 복구 모드를 켠 뒤에 리비전을 되돌려야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 제작한 월드를 불러오고 관리하는 방법을 알아봅니다. # 제작 중인 월드 불러오기 1. 메뉴에서 **[만들기]** 버튼을 클릭합니다. 2. 월드 목록에서 불러올 월드를 선택합니다. 3. 월드 정보에서 **[이어서 만들기]** 버튼을 클릭하면 제작 중인 월드를 불러옵니다. # 리비전 관리 월드를 제작할 때는 리비전을 기록하고 관리하는 과정이 필요합니다. 중요한 변경점이 발생했을 때마다 리비전을 기록해두면 필요한 순간에 예전 리비전으로 월드를 되돌릴 수 있어 안전합니다.

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 표로 정리해서, 문서에 제시된 6가지 실행 제어 설정에 대해 서버와 클라이언트에서 각각 실행될 때의 동작 방식을 나열하세요. [answer] | 메이플스토리 월드의 mLua 스크립트에서 함수별로 설정할 수 있는 6가지 실행 제어 옵션과 각각 서버 및 클라이언트에서 함수가 호출되었을 때의 동작 방식은 다음과 같습니다. | 실행 제어 설정 | 서버에서 실행 시 | 클라이언트에서 실행 시 | | :--- | :--- | :--- | | **사용하지 않음** (기본) | 서버에서 실행됨 | 클라이언트에서 실행됨 | | **client** | 클라이언트로 전송하여 클라이언트에서 실행됨 | 클라이언트에서 실행됨 | | **client only** | 무시됨 | 클라이언트에서 실행됨 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 실행 제어의 동작 방식을 이해하기 위해 함수 호출 상황을 살펴봅시다. 특정한 소리 효과를 내는 `PlaySoundEffect` 함수가 있다고 가정합니다. 소리 효과는 개인 PC에서 나야 하므로 클라이언트에서만 사용하는 함수일 것입니다. 만약, 서버에서 특정 타이밍에 소리 효과를 내야 한다면, 서버는 효과음과 연관된 메시지를 생성해 송신하고, 클라이언트는 수신부를 구현해 `PlaySoundEffect` 함수를 호출합니다. | 메시지 전송 흐름 | 참고 이미지 | | --------- | ------ | | 메시지 생성 | | | 메

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Resource Storage 폴더 구조의 제약 조건(단계 수, Root 폴더 수, 하위 폴더 최대 수)을 표로 정리해서 설명하세요. [answer] | Resource Storage의 '내 리소스' 폴더 구조에 적용되는 제약 조건은 다음과 같습니다. | 항목 | 제약 조건 | | :--- | :--- | | **폴더 단계 수** | 최대 4단계까지 구성 가능합니다. | | **Root 폴더 수** | 최상위 Root 폴더는 **1개**만 존재할 수 있습니다. | | **하위 폴더 수** | 단계별로 최대 **100개**까지 생성할 수 있습니다. | **추가 유의 사항:** * 같은 단계에서 이름이 중복되는 폴더를 만들 수 없습니다. * 폴더 이름에 `/`, `\`, `| [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 기본적으로 실행 제어를 사용하지 않으면 공용 함수가 되는데, 이때 호출하는 공간 기준 동작이 정확히 어떤 의미인가요? [answer] | 기본적으로 실행 제어를 설정하지 않은 함수(공용 함수)의 "호출하는 공간 기준 동작"은 **함수가 호출된 위치(서버 또는 클라이언트)에서 즉시 실행된다는 것**을 의미합니다. 즉, 별도의 네트워크 전송 과정 없이 해당 함수가 실행된 현재 환경에서만 코드가 수행됩니다. * **서버**에서 해당 함수를 호출한 경우: **서버**에서 실행됩니다. * **클라이언트**에서 해당 함수를 호출한 경우: **클라이언트**에서 실행됩니다. 이는 다른 공간(서버↔클라이언트)으로 메시지를 송신하거나 복호화하는 과정을 거치지 않으므로, 같 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 실행 제어의 동작 방식을 이해하기 위해 함수 호출 상황을 살펴봅시다. 특정한 소리 효과를 내는 `PlaySoundEffect` 함수가 있다고 가정합니다. 소리 효과는 개인 PC에서 나야 하므로 클라이언트에서만 사용하는 함수일 것입니다. 만약, 서버에서 특정 타이밍에 소리 효과를 내야 한다면, 서버는 효과음과 연관된 메시지를 생성해 송신하고, 클라이언트는 수신부를 구현해 `PlaySoundEffect` 함수를 호출합니다. | 메시지 전송 흐름 | 참고 이미지 | | --------- | ------ | | 메시지 생성 | | | 메

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 제작한 월드 불러오기 및 관리 [question] | 월드 삭제를 수행하는 3단계 절차를 단계별 번호 목록으로 나열하세요. [answer] | 월드 삭제를 수행하는 3단계 절차는 다음과 같습니다. 1. 월드 목록에서 삭제할 월드를 선택합니다. 2. **[⋯]** 버튼을 클릭합니다. 3. **월드 관리** 팝업 창에서 **[월드 삭제]** 버튼을 누릅니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 제작한 월드를 불러오고 관리하는 방법을 알아봅니다. # 제작 중인 월드 불러오기 1. 메뉴에서 **[만들기]** 버튼을 클릭합니다. 2. 월드 목록에서 불러올 월드를 선택합니다. 3. 월드 정보에서 **[이어서 만들기]** 버튼을 클릭하면 제작 중인 월드를 불러옵니다. # 리비전 관리 월드를 제작할 때는 리비전을 기록하고 관리하는 과정이 필요합니다. 중요한 변경점이 발생했을 때마다 리비전을 기록해두면 필요한 순간에 예전 리비전으로 월드를 되돌릴 수 있어 안전합니다.

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버에서 클라이언트로 특정 행동을 시키기 위해 전체 메시지를 보내는 방식과 부호(코드)를 전송하는 방식의 차이점이 무엇인가요? [answer] | 서버에서 클라이언트로 특정 행동을 시키기 위해 데이터를 전송하는 방식은 전체 메시지 전송과 부호(코드) 전송으로 나뉩니다. 두 방식의 차이점은 다음과 같습니다. **1. 전체 메시지 전송 방식** * **원리:** 서버가 요청할 내용을 그대로 문자열 등으로 만들어 클라이언트로 전송합니다. (예: "3초간 춤을 춰!") * **장점:** 구현과 이해가 직관적입니다. * **단점:** 처리해야 할 메시지의 양이 많아질수록 네트워크 비용이 증가하여 효율이 떨어집니다. **2. 부호(코드) 전송 방식** * **원리:** [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 클라이언트와 서버의 흐름을 쉽게 제어할 수 있게 하는 실행 제어의 개념과 활용 방법을 알아봅니다. ##### 들어가기에 앞서 본 과정을 이해하기 위해선 다음 가이드 선행 학습이 필요합니다. [서버와 클라이언트](https://mod-developers.nexon.com/docs?postId=207%7B%22target%22:%22\_self%22%7D) # 서버 - 클라이언트 간 데이터 통신 **클라이언트 - 서버** 간의 흐름을 제어하려면 데이터를 전송해야 합니다. 예를 들어, 서버에서 클라이언트로 "3초

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버에서 클라이언트로 "3초간 춤을 춰!"라고 요청할 때 필요한 통신 단계는 어떤 순서로 진행되나요? [answer] | 서버에서 클라이언트로 "3초간 춤을 춰!"라고 요청할 때 필요한 통신 단계는 다음과 같은 순서로 진행됩니다. 1. **메시지 생성**: 서버가 "3초간 춤을 춰!"라는 내용을 메시지 형태로 생성합니다. 2. **메시지 송신**: 생성된 메시지를 클라이언트로 전송합니다. 3. **메시지 수신**: 클라이언트가 해당 메시지를 수신합니다. 4. **행동/결과**: 클라이언트가 수신한 메시지를 해석하여 "3초간 춤추기"라는 행동을 수행합니다. 메시지 전체를 전송하는 대신 효율성을 높이기 위해 **부호화** 방식을 사용할 수도 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 클라이언트와 서버의 흐름을 쉽게 제어할 수 있게 하는 실행 제어의 개념과 활용 방법을 알아봅니다. ##### 들어가기에 앞서 본 과정을 이해하기 위해선 다음 가이드 선행 학습이 필요합니다. [서버와 클라이언트](https://mod-developers.nexon.com/docs?postId=207%7B%22target%22:%22\_self%22%7D) # 서버 - 클라이언트 간 데이터 통신 **클라이언트 - 서버** 간의 흐름을 제어하려면 데이터를 전송해야 합니다. 예를 들어, 서버에서 클라이언트로 "3초

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 제작한 월드 불러오기 및 관리 [question] | 출시 여부에 따른 월드 삭제 가능 여부 및 출시된 월드에서 보이는 버튼 목록을 표로 정리하세요. [answer] | 출시 여부에 따른 월드 삭제 가능 여부와 출시된 월드에서 보이는 버튼은 다음과 같습니다. | 구분 | 삭제 가능 여부 | 월드 관리 팝업 창에서 보이는 버튼 | | :--- | :--- | :--- | | 출시하지 않은 월드 | 가능 | 월드 삭제 | | 출시한 월드 | 불가 | 리비전, 크리티컬 리포트 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 제작한 월드를 불러오고 관리하는 방법을 알아봅니다. # 제작 중인 월드 불러오기 1. 메뉴에서 **[만들기]** 버튼을 클릭합니다. 2. 월드 목록에서 불러올 월드를 선택합니다. 3. 월드 정보에서 **[이어서 만들기]** 버튼을 클릭하면 제작 중인 월드를 불러옵니다. # 리비전 관리 월드를 제작할 때는 리비전을 기록하고 관리하는 과정이 필요합니다. 중요한 변경점이 발생했을 때마다 리비전을 기록해두면 필요한 순간에 예전 리비전으로 월드를 되돌릴 수 있어 안전합니다.

[task] | two_turn [pass] | ⏳ 미판정 [title] | 서버와 클라이언트 [question] | 스크립트에서 서버와 클라이언트 간 실행제어와 데이터 동기화의 차이가 무엇이며, 각 함수의 실행 공간 설정이 이 과정에 어떤 영향을 미치는가? [answer] | 서버와 클라이언트 간 통신은 크게 **데이터 동기화**와 **실행제어** 두 가지로 나뉩니다. 1. **데이터 동기화**: 서버와 클라이언트 간에 데이터의 전달(값의 동기화)을 의미합니다. 2. **실행제어**: 공간에 정의된 "액션"(스크립트에서의 함수)을 한 쪽에서 다른 쪽으로 요청하고 수행하는 과정입니다. 예를 들어, 클라이언트가 유저의 입력을 받아 서버에게 "몬스터 공격"이라는 액션을 요청하면, 서버는 해당 요청에 따라 "몬스터 공격" 함수를 수행하게 됩니다. ### 함수의 실행 공간 설정이 미치는 영향 스크립트에서 [followup] | 함수 B의 실행 공간을 클라이언트로, 함수 C의 실행 공간을 서버로 설정했을 때, 서버에서 클라이언트로 요청하고 수행하는 구체적인 코드 구조와 호출 흐름은 어떻게 되는가? [followup_answer] | 참고 문서에 따르면, 서버에 선언된 함수 B의 실행 공간을 클라이언트로 설정하면 함수 B는 서버 내 다른 함수에서 호출이 가능하지만, 실제 실행은 클라이언트에서 이루어집니다. 즉, 서버에서 호출할 수 있는 클라이언트 함수처럼 사용 가능합니다. 문서에는 "MethodB의 실행 공간을 클라이언트, MethodC의 실행 공간을 서버로 설정했을 때의 요청과 수행"이라는 제목의 예시가 언급되어 있으나, 해당 섹션의 **구체적인 코드 블록이나 호출 흐름의 상세 설명이 제공된 문서 본문에 포함되어 있지 않습니다.** 문서에 명시된 정보만을 [scores] | [judge_reason] | [source_doc] | 서버와 클라이언트 간 통신에는 데이터의 전달, 즉 동기화 외에도 공간에 정의된 "액션"을 요청하고 수행하는 과정도 필요합니다. 위의 레벨업 처리 과정을 예시로 들면, 클라이언트가 유저의 입력을 받으면, 서버에게 "몬스터 공격"이라는 "액션"을 요청하게 되고, 서버는 클라이언트의 요청에 따라 "몬스터 공격"이라는 "액션"을 수행하게 되는데요, 이렇듯 각 공간에 정의된 액션을 서로 요청하여 수행케 하는 것을 실행제어라고 합니다. 실행제어는 제작자의 의도에 따라 설정할 수 있습니다. 위에 말한 "액션"은 결국 스크립트에서는 "함수"라 할

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 원하는 리소스의 이름이 생각나지 않을 때 어떻게 빠르게 찾을 수 있나요? [answer] | 원하는 리소스의 이름이나 용어가 떠오르지 않을 때는 **이미지 검색** 기능을 활용하면 빠르게 찾을 수 있습니다. 이 기능은 **Sprite** 카테고리에서만 사용할 수 있으며, 원하는 리소스와 유사한 이미지를 업로드하면 시스템이 비슷한 이미지를 찾아 보여줍니다. 사용 방법은 다음과 같습니다: 1. 메이커의 리소스 검색 화면에서 **이미지 선택** 버튼을 눌러 검색하려는 이미지를 추가합니다. 2. 카테고리를 확장하여 검색 결과에서 원하는 리소스를 찾습니다. 3. 찾은 리소스의 **[RUID 복사]** 버튼을 클릭하여 값을 복사한 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | 리소스의 4가지 상위 카테고리(Sprite, AnimationClip, AudioClip, AvatarItem)와 각 카테고리의 특징을 표로 정리하세요. [answer] | 메이플스토리 월드의 리소스는 Sprite, AnimationClip, AudioClip, AvatarItem의 4가지 상위 카테고리로 분류됩니다. 각 카테고리의 특징은 다음과 같습니다. | 카테고리 | 특징 | | :--- | :--- | | **Sprite** | 다양하게 활용할 수 있는 스프라이트가 카테고리별로 분류되어 있습니다. | | **AnimationClip** | 움직임이 포함된 애니메이션 스프라이트가 카테고리별로 분류되어 있습니다. | | **AudioClip** | 다양하게 이용할 수 있는 음원이 카테고리별로 분류 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 검색한 리소스를 즐겨찾기에 등록해 편리하게 RUID를 찾을 수 있습니다. 별 모양 버튼을 누르면 즐겨찾기에 저장됩니다. 최대 5,000개의 리소스를 즐겨찾기에 저장할 수 있습니다. # 리소스 카테고리 구분 리소스는 4개의 상위 카테고리 **Sprite, AnimationClip, AudioClip, AvatarItem** 아래에 하위 카테고리로 분류되어 있습니다. 4개의 카테고리 중 찾으려는 분류를 선택해 검색합니다. | 카테고리 | 설명 | | --- | --- | | Sprite | 다양하게 활용할 수 있는 스프라이트

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 실행 공간이 Client인 함수에서 특정 클라이언트에만 응답을 보내기 위해 마지막 매개 변수로 지정해야 하는 값과, 이 기능의 사용 예시를 참고할 수 있는 문서 제목을 표로 정리해 주세요. [answer] | 실행 공간이 Client인 함수에서 특정 클라이언트에만 응답을 보내기 위해 마지막 매개 변수로 지정해야 하는 값은 **보내려는 UserId**입니다. 이 기능의 사용 예시를 참고할 수 있는 문서 제목은 **Effective MSW 1**입니다. 요청하신 내용을 표로 정리하면 다음과 같습니다. | 구분 | 내용 | | :--- | :--- | | **마지막 매개 변수로 지정할 값** | 보내려는 UserId | | **사용 예시 참고 문서 제목** | Effective MSW 1 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | client only와 server only 설정은 각각 서버와 클라이언트에서 호출 시 어떤 동작을 하는지 차이가 있나요? [answer] | `client only`와 `server only` 설정은 함수가 호출된 공간에 따라 동작 방식이 명확히 다릅니다. **`client only`** * **클라이언트에서 호출 시:** 해당 공간인 클라이언트에서 정상적으로 실행됩니다. * **서버에서 호출 시:** 호출이 무시됩니다. 즉, 서버에서 이 함수를 호출해도 아무 동작이 일어나지 않습니다. **`server only`** * **서버에서 호출 시:** 해당 공간인 서버에서 정상적으로 실행됩니다. * **클라이언트에서 호출 시:** 호출이 무시됩니다. 즉, [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 실행 제어의 동작 방식을 이해하기 위해 함수 호출 상황을 살펴봅시다. 특정한 소리 효과를 내는 `PlaySoundEffect` 함수가 있다고 가정합니다. 소리 효과는 개인 PC에서 나야 하므로 클라이언트에서만 사용하는 함수일 것입니다. 만약, 서버에서 특정 타이밍에 소리 효과를 내야 한다면, 서버는 효과음과 연관된 메시지를 생성해 송신하고, 클라이언트는 수신부를 구현해 `PlaySoundEffect` 함수를 호출합니다. | 메시지 전송 흐름 | 참고 이미지 | | --------- | ------ | | 메시지 생성 | | | 메

[task] | two_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버와 클라이언트 간 통신에서 메시지 전체 전송 대신 부호화(예: Code-45)를 사용하는 방식의 효율적 이점과 mLua 실행 제어가 이를 어떻게 단순화하는지 설명해 주세요. [answer] | 서버와 클라이언트 간 통신에서 메시지 전체 전송 대신 부호화를 사용하는 방식의 효율적 이점과 mLua 실행 제어가 이를 어떻게 단순화하는지 설명해 드리겠습니다. ### 1. 부호화(코딩) 방식의 효율적 이점 전통적인 방식에서 서버가 클라이언트에게 "3초간 춤을 춰!"라는 요청을 하려면 메시지 전체를 생성하고 전송해야 합니다. 하지만 메시지 양이 많아질수록 네트워크 비용이 증가하여 효율이 떨어집니다. 이를 해결하기 위해 **부호화(코딩)** 방식을 사용합니다. * **원리**: 서로 약속된 부호(예: `Code-45`)와 필 [followup] | mLua에서 서버가 클라이언트로 특정 동작(예: 3초간 춤 추기)을 명령하기 위해 실행 제어를 설정하는 구체적인 코드 예시와, 부호화/복호화 과정이 스크립트 내에서 어떻게 처리되는지 보여 주세요. [followup_answer] | 제공된 참고 문서에는 mLua에서 서버가 클라이언트로 특정 동작(예: 3초간 춤 추기)을 명령하기 위한 구체적인 코드 예시나, 부호화/복호화 과정이 스크립트 내에서 어떻게 처리되는지 보여주는 실제 코드 snippet이 포함되어 있지 않습니다. 문서에서는 다음 사항만 설명하고 있습니다: 1. **개념 설명**: 서버-클라이언트 간 통신이 "메시지 생성 → 송신 → 수신 → 행동" 또는 부호화 방식을 사용할 경우 "부호화 → 송신 → 수신 → 복호화 → 행동"의 흐름을 가진다는 것입니다. 2. **실행 제어의 역할**: "실행 제 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 클라이언트와 서버의 흐름을 쉽게 제어할 수 있게 하는 실행 제어의 개념과 활용 방법을 알아봅니다. ##### 들어가기에 앞서 본 과정을 이해하기 위해선 다음 가이드 선행 학습이 필요합니다. [서버와 클라이언트](https://mod-developers.nexon.com/docs?postId=207%7B%22target%22:%22\_self%22%7D) # 서버 - 클라이언트 간 데이터 통신 **클라이언트 - 서버** 간의 흐름을 제어하려면 데이터를 전송해야 합니다. 예를 들어, 서버에서 클라이언트로 "3초

[task] | code [pass] | ⏳ 미판정 [title] | 제작한 월드 불러오기 및 관리 [question] | 제시된 문서는 메이플스토리 월드 메이커의 UI 조작(로드, 리비전 관리, 삭제) 절차만을 다루고 있으며, mLua 스크립트 언어의 API, 컴포넌트, 또는 서비스 명세가 포함되어 있지 않습니다. 따라서 해당 문서의 정보만으로 해결할 수 있는 mLua 코딩 과제를 생성할 수 없습니다. [answer] | 제시된 참고 문서는 메이플스토리 월드 메이커의 UI 기반 작업(월드 불러오기, 리비전 기록 및 관리, 월드 삭제) 절차만을 다루고 있습니다. mLua 스크립트 언어의 API, 컴포넌트 구조, 서비스 명세(`_EntityService`, `_TimerService` 등)에 대한 기술적 설명이나 코드 예제가 해당 문서에 포함되어 있지 않으므로, 이 문서의 정보만으로 mLua 코딩 과제를 해결하거나 생성할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 제작한 월드를 불러오고 관리하는 방법을 알아봅니다. # 제작 중인 월드 불러오기 1. 메뉴에서 **[만들기]** 버튼을 클릭합니다. 2. 월드 목록에서 불러올 월드를 선택합니다. 3. 월드 정보에서 **[이어서 만들기]** 버튼을 클릭하면 제작 중인 월드를 불러옵니다. # 리비전 관리 월드를 제작할 때는 리비전을 기록하고 관리하는 과정이 필요합니다. 중요한 변경점이 발생했을 때마다 리비전을 기록해두면 필요한 순간에 예전 리비전으로 월드를 되돌릴 수 있어 안전합니다.

[task] | code [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService의 KeyDownEvent 이벤트 핸들러와 _EntityService를 이용하여 키 입력 시 특정 엔티티를 찾아 선택 상태 토글을 수행하는 스크립트를 작성해줘 [answer] | `InputService`의 `KeyDownEvent` 이벤트 핸들러와 `_EntityService`를 사용하여 특정 엔티티를 찾고 선택 상태를 토글하는 스크립트입니다. 참고 문서에 명시된 API 중 `Entity`의 선택 상태를 직접 제어하는 프로퍼티(예: `IsSelected`)나 메서드가 존재하지 않습니다. 따라서 아래 코드는 **선택 상태 토글을 위한 로직(선택/해제)을 수행하는 구조**로 작성되었으며, 실제 시각적 피드백(색상 변경, 효과 등)을 위해서는 해당 엔티티에 추가된 다른 컴포넌트의 프로퍼티를 조작하는 코드가 필 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 모든 게임은 유저의 입력과 입력에 대한 피드백으로 게임이 진행됩니다. 메이플스토리 월드에서는 InputService를 통해 유저의 입력에 대한 액션을 제어할 수 있습니다. 이번 과정에서는 유저의 입력이 발생했을 때의 액션을 추가하는 방법을 알아보겠습니다. # 참고 가이드 [Event System](https://mod-developers.nexon.com/docs?postId=73) [Entity Event System](https://mod-developers.nexon.com/docs?postId=176

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버에서 클라이언트 함수를 호출하여 메시지를 전달하는 코드만 출력하고, 실행 제어 속성 및 매개 변수 전달 과정은 주석으로만 설명해 주세요. [answer] | ```lua Method: [server only] void OnUpdate(number delta) { local users = _UserService.UserEntities local message = "Out of bounds" -- 모든 플레이어를 체크하며 플레이어가 특정 좌표 밖으로 나갔을 때 메시지 출력 for id, user in pairs(users) do local posX = user.TransformComponent.Position.x if posX > 100 the [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Resource Storage에서 폴더를 4단계까지 구성할 때 최상위 Root 폴더와 하위 폴더의 생성 제한은 어떻게 다른가요? [answer] | Resource Storage의 폴더 구조는 총 4단계로 구성되며, 최상위 Root 폴더와 하위 폴더의 생성 제한은 다음과 같이 다릅니다. 1. **최상위 Root 폴더**: 1개만 존재할 수 있습니다. 2. **하위 폴더**: 각 단계별로 최대 100개까지 생성할 수 있습니다. 또한, 같은 단계에서 이름이 중복되는 폴더를 만들 수 없으며, 폴더 이름에 `/`, `\`, `|` 기호를 사용할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Resource Storage의 내 리소스 폴더를 삭제하면 어떤 결과가 발생하며, 폴더 이름에 사용할 수 없는 특수 기호는 무엇인가요? [answer] | Resource Storage의 **내 리소스** 폴더를 삭제하면 해당 폴더 안에 포함된 모든 리소스가 함께 삭제됩니다. 또한 상위 폴더를 삭제할 경우, 그 하위에 있는 모든 하위 폴더와 포함된 리소스까지 함께 삭제됩니다. 폴더 이름에 사용할 수 없는 특수 기호는 다음과 같습니다. * `/` * `\` * `|` 또한 같은 단계에서 중복되는 이름의 폴더를 만들 수 없으며, 폴더는 4단계까지 구성할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | SyncTable 타입을 실행 제어 함수의 매개 변수로 사용할 때 왜 '제한적 사용 가능'으로 표시되는지, 어떤 타입만 가능한가요? [answer] | SyncTable< v > 또는 SyncTable< k, v > 타입을 실행 제어 함수의 매개 변수로 사용할 때 '제한적 사용 가능'으로 표시되는 이유는, SyncTable 내부의 값(v)이나 키(k)로 사용할 수 있는 타입이 제한되어 있기 때문입니다. 구체적으로, SyncTable의 v 또는 k 타입은 다음 목록에 포함된 타입만 사용할 수 있습니다: - string - integer - number - boolean - table - Vector2 - Vector3 - Vector4 - Color - Entity - Compon [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 실행 제어 아이콘 중 Client와 ClientOnly의 차이점이 무엇이며, 각각 어떤 경우에 사용해야 하나요? [answer] | 제시된 참고 문서에는 실행 제어 아이콘 목록에 **Client**와 **ClientOnly**가 모두 포함되어 있지만, 두 설정의 **구체적인 차이점**이나 **사용 시나리오(어떤 경우에 각각 사용해야 하는지)** 에 대한 설명은 포함되어 있지 않습니다. 문서에는 다음과 같은 정보만 확인됩니다: 1. 실행 제어 설정 아이콘 중 하나를 선택하면 해당 함수에 아이콘이 표시됩니다. 2. 서로 다른 공간(예: 서버와 클라이언트)의 함수를 호출할 때 매개 변수를 통해 데이터를 전송할 수 있습니다. 3. 예제로 `[server only]` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | MSW 리소스 카테고리에 있는 리소스를 내 리소스로 저장하는 것이 불가능한 이유는 무엇인가요? [answer] | MSW 리소스 카테고리에 있는 리소스를 '내 리소스'로 저장할 수 없는 이유는, 메이플스토리 월드에서 제공하는 MSW 리소스는 원본 파일을 직접 저장하는 것이 아니라 **RUID 값**만 제작에 활용하도록 설계되어 있기 때문입니다. 따라서 '내 리소스'에 추가하는 행위 자체가 불가능하며, 해당 MSW 리소스를 사용하려면 Resource Storage에서 해당 리소스의 RUID를 확인하고, 이 RUID 값을 스크립트나 컴포넌트 설정에 직접 참조하는 방식으로만 활용할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 실행 제어 [question] | 서버 함수에서 클라이언트 함수를 호출할 때 매개 변수로 any 타입을 전달하면 왜 에러가 나는가요? [answer] | 실행 제어 함수(서버와 클라이언트 간 호출)에서 매개 변수로 데이터를 전송할 때 `any` 타입은 사용할 수 없기 때문입니다. 실행 제어 함수의 매개 변수로 사용할 수 있는 타입 목록에서 `any`는 명시적으로 "사용 불가"로 지정되어 있습니다. 이는 서로 다른 실행 공간(서버 ↔ 클라이언트) 사이에서 데이터를 안전하게 직렬화하고 전송하기 위해 타입이 명확하게 정의되어야 하기 때문이며, `any`처럼 타입이 정해지지 않은 값은 이 프로세스에서 처리할 수 없습니다. 따라서 서버 함수에서 클라이언트 함수를 호출할 때 `any` 타입 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 스크립트 함수의 실행 제어 설정을 아이콘으로 표시합니다. 아이콘은 다음과 같습니다. | Icon | 실행 제어 설정 | | ---- | -------- | | 없음 | 사용하지 않음 | | | Client | | | ClientOnly | | | Server | | | ServerOnly | | | Multicast | 실행 제어가 설정된 함수에는 실행 제어 아이콘이 표시됩니다. 실행될 수 없는 함수는 아이콘이 표시됩니다. # 실행 제어 함수의 매개 변수 서로 다른 공간의 함수를 실행할 때 매개 변수를 통해 다른

[task] | code [pass] | ⏳ 미판정 [title] | InputService를 활용한 입력과 액션 [question] | InputService의 HandleKeyHoldEvent와 HandleKeyReleaseEvent를 조합하여 KeyboardKey.T 키를 누르고 있는 동안은 로그를 출력하고, 키를 떼면 로그 출력을 중단하는 로직을 구현한 스크립트를 작성해줘 [answer] | `HandleKeyHoldEvent`와 `HandleKeyReleaseEvent`는 각각 키가 눌려 있는 동안(프레임마다)과 키를 떼는 순간(1회)에 실행되는 별개의 이벤트 핸들러입니다. 질문하신 "키를 떼면 로그 출력을 중단하는" 로직은 `HandleKeyHoldEvent`의 동작 원리상 **자동으로** 처리됩니다. `KeyHoldEvent`는 키가 눌려 **있는 동안**에만 발생하므로, 사용자가 키를 놓는 순간 이벤트가 더 이상 발생하지 않아 로그 출력도 자연스레 중단됩니다. 따라서 `HandleKeyReleaseEvent`에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | KeyHoldEvent는 키보드의 키가 눌려있는 동안 프레임마다 발생하며, 이벤트가 발생할 때마다 HandleKeyHoldEvent 역시 매번 실행됩니다. KeyHoldEvent가 핸들러의 매개 변수로 전송되며, 다른 이벤트와 마찬가지로 유저가 입력한 키 정보가 포함되어 들어옵니다. 다음은 키를 누르는 동안 로그를 출력하는 예제입니다. ```lua [service: InputService] HandleKeyHoldEvent(KeyHoldEvent event) { --------------- Native Event Sende

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Preset List에 없는 리소스를 검색하고 싶을 때 Resource Storage를 어떻게 열 수 있나요? [answer] | Preset List에 없는 리소스를 검색하려면 **Resource Storage**를 사용해야 합니다. Resource Storage를 여는 방법은 다음과 같습니다. 1. **기본 위치**: 메이플스토리 월드 에디터에서 **Scene** 탭 옆에 있는 Resource Storage 아이콘을 클릭합니다. 2. **창을 닫은 경우**: 상단 내비게이션 메뉴에서 **Panels** > **Resource Storage**를 클릭하여 다시 열 수 있습니다. 이 창을 통해 **내 리소스**, **MSW 리소스**, **즐겨찾기** 카테 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

[task] | single_turn [pass] | ⏳ 미판정 [title] | 리소스 찾기 [question] | Workspace - MyDesk와 Resource Storage에 리소스를 추가했을 때, 리소스 변경 후 리메이크된 월드에 미치는 영향의 차이는 무엇인가요? [answer] | Workspace - MyDesk와 Resource Storage에 리소스를 추가했을 때, 리소스 변경 후 리메이크된 월드에 미치는 영향은 다음과 같이 다릅니다. 1. **Workspace - MyDesk에 추가한 경우** - 월드를 출시한 이후 해당 리소스를 변경하더라도, 리메이크된 월드는 영향을 받지 않습니다. 2. **Resource Storage에 추가한 경우** - 리소스 저장소에 추가한 리소스를 변경하게 되면, 리메이크된 모든 월드가 영향을 받습니다. 따라서 리메이크를 허용하면서 리소스를 변경할 계획이 있 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 방대한 리소스 속에서 크리에이터에게 필요한 리소스만 골라 활용할 수 있습니다. 또한 크리에이터가 제작한 리소스를 추가해 제작에 활용할 수도 있습니다. # 리소스 스토리지 소개 메이플스토리 월드에서는 많은 리소스를 **Preset List**로 제공하지만, 모든 리소스가 **Preset List**에 있는 것은 아닙니다. 보다 방대한 데이터에서 원하는 리소스를 검색할 때는 **Resource Storage**를 활용해 봅시다. **Resource Storage**의 기본 위치는 **Scene** 탭 옆입니다

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