← 목록

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

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

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 중력 센서 사용하기 [question] | PhysicsRigidbodyComponent의 GravityScale을 0으로 설정하면 자이로스코프 입력으로만 공이 움직일 수 있나요? [answer] | 제공된 참고 문서에는 `PhysicsRigidbodyComponent`의 `GravityScale` 프로퍼티가 0으로 설정되었을 때의 구체적인 동작(예: 중력이 완전히 제거되는지, 다른 물리 엔진의 중력 설정과 어떻게 상호작용하는지 등)에 대한 설명이 없습니다. 문서에서는 활용 예제에서 `TiltBall` 엔티티의 `GravityScale`을 **1**로 설정하는 것만 보여줄 뿐, 이를 **0**으로 변경했을 때 자이로스코프 입력만으로 공이 움직이는지 여부에 대한 기술적 근거나 결과가 포함되어 있지 않습니다. 따라서 주어진 문서 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `MobileGyroscopeService`를 활용해 모바일 기기에서 자이로스코프 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileGyroscopeService `MobileGyroscopeService`를 활용하면 모바일 기기의 중력, 중력 가속도, 회전 가속도 값 등을 측정해 기기가 어디서, 얼마만큼의 힘을 받아 움직였는지 알 수 있습니다. 예를 들어 핸드폰을 위로 던졌을 때 얼마나 위로 올라갔는지 측정할 때 이 서비스를 사용합니다. MobileGyroScopeService는

[task] | two_turn [pass] | ⏳ 미판정 [title] | 아바타 상품 만들기 [question] | 아바타 상품을 등록하고 판매 상태로 전환하기까지의 전체 프로세스와 각 단계의 필수 조건이 어떻게 연결되는지 설명해 주세요 [answer] | 아바타 상품을 등록하고 실제 판매가 시작되기까지의 프로세스는 아이템 등록, 상품 등록, 결제, 그리고 판매 상태 전환이라는 단계로 이어집니다. 각 단계는 이전 단계의 완료 없이는 진행되지 않으며, 최종적인 판매 상태는 설정된 조건에 따라 결정됩니다. ### 1. 아바타 아이템 제작 및 등록 (선행 조건) 상품 등록을 시작하기 전, 반드시 아바타 아이템 자체를 제작하고 시스템에 등록해 두어야 합니다. * **절차:** 아바타 아이템을 제작한 후, '아바타 아이템 등록하기' 과정을 통해 아이템을 등록합니다. * **필수 조건: [followup] | 판매 상태 중 '결제 대기' 상태에서 등록비 결제를 완료하면 바로 '판매 중'이 되나요, 아니면 '판매 대기'를 거치는 건가요? [followup_answer] | '결제 대기' 상태에서 등록비 결제를 완료하면 바로 '판매 중'이 되지는 않으며, 설정된 **판매 기간(시작일)**에 따라 **'판매 대기'** 상태를 거칠 수 있습니다. 구체적인 전환 로직은 다음과 같습니다. 1. **판매 시작일 이전인 경우:** 등록비 결제가 완료되었지만, 현재 시점이 상품에 설정된 **판매 시작일 이전**이라면 **'판매 대기'** 상태가 됩니다. 이 상태에서는 아직 판매가 시작되지 않았으며, 판매 시작일이 도래하면 자동으로 **'판매 중'** 상태로 변경됩니다. 2. **판매 시작일 이후인 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서 크리에이터는 직접 제작한 아바타 아이템을 판매할 수 있습니다. 이번 가이드에서는 제작한 아바타 아이템 판매 방법을 알아봅니다. 판매하기 전에 아바타 아이템을 제작하고 등록하는 방법은 아래 가이드를 참고해 봅시다. ##### 참고 가이드 * [아바타 아이템 제작](/docs/?postId=582) > **더 알아보기** > 아이템 제작, 판매할 때는 [메이플스토리 월드 크리에이터 운영정책](https://maplestoryworlds.nexon.com/legal/policy/699)을

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | IsHWSupported() 체크 없이 Start()를 바로 호출하면 어떤 문제가 발생하나요? [answer] | 제공된 참고 문서에는 `_MobileAccelerometerService:IsHWSupported()` 체크 없이 `Start()`를 바로 호출했을 때 발생하는 구체적인 문제나 오류 사항에 대한 설명이 없습니다. 문서에서는 가속도 센서를 사용하려면 반드시 `IsHWSupported()`를 통해 기기에서 센서를 지원하는지 확인한 뒤, 지원되는 경우에만 `Start()`를 호출하도록 안내하고 있을 뿐, 확인을 생략했을 때의 기술적 결과(예: 예외 발생, 동작 정지, 오류 메시지 등)에 대한 정보는 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | two_turn [pass] | ⏳ 미판정 [title] | 배경음악, 효과음 만들기 [question] | `OnUpdate`에서 `RemainingTime`이 0 이하가 될 때 `EndGame()`이 호출되지만, 이후에도 `OnUpdate`가 계속 실행되어 `RemainingTime`이 음수로 계속 감소하는 것을 방지하려면 어떻게 해야 하나요? [answer] | `OnUpdate`는 엔티티가 활성화(Enable)된 상태라면 매 프레임마다 계속 호출됩니다. 단순히 `EndGame()`에서 UI의 `Enable`을 `false`로 변경해도, 스크립트 컴포넌트 자체의 생명주기(`OnUpdate`)가 멈추지 않으므로 `RemainingTime`이 음수로 계속 감소하는 문제가 발생합니다. 이를 방지하기 위해 `EndGame()` 호출 후 `OnUpdate`의 로직이 더 이상 실행되지 않도록 해야 합니다. 참고 문서에 제공된 코드에서는 이러한 방지 로직이 포함되어 있지 않지만, mLua의 구조상 가 [followup] | `EndGame()` 호출 후 `OnUpdate`의 시간 계산 로직을 중단시키거나, 게임 종료 상태를 관리하여 불필요한 연산을 막는 구체적인 코드 수정 예시를 보여주세요. [followup_answer] | `EndGame()` 호출 후에도 `OnUpdate`가 계속 실행되는 것을 방지하고 불필요한 연산을 중단하려면, 게임이 진행 중인지 여부를 나타내는 상태 변수(보통 `boolean` 타입의 프로퍼티)를 추가하여 `OnUpdate` 내부에서 이 상태를 확인하는 것이 일반적입니다. 참고 문서의 원본 코드에는 이러한 상태 관리 로직이 포함되어 있지 않지만, mLua 스크립트 구조상 가장 표준적이고 안전한 해결 방법은 `IsGameActive` (또는 유사한 이름의) 프로퍼티를 추가하고, 게임 시작 시 `true`, 종료 시 `false [scores] | [judge_reason] | [source_doc] | ```lua Property: [None] Entity CardPairGameUI = /ui/CardPairGameUI [None] number PlayTime = 60 [None] number RemainingTime = 0 Method: [client only] void OnBeginPlay() { self:StartGame() } [client only] void StartGame() { self.CardPairGameUI.Enable = true self.RemainingTime = self

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 중력 센서 사용하기 [question] | 모바일 기기의 자이로스코프 지원 여부를 확인하고 측정 시작하는 `OnBeginPlay` 함수 코드를, 설명은 주석으로만 작성해서 출력하세요. [answer] | ```lua Method: [client only] void OnBeginPlay () { -- 모바일 기기가 자이로스코프 하드웨어를 지원하는지 확인합니다. if _MobileGyroscopeService:IsHWSupported() then -- 자이로스코프 측정을 시작하고 활성화 여부를 반환받습니다. local enabled = _MobileGyroscopeService:StartAndWait() if enabled then -- 측정 성공 시 사용자 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **GyroscopeLogic**을 생성합니다. 2. Property를 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileGyroscopeService:IsHWSupported()`를 활용해 기기에서 자이로스코프 센서를 지원하는지 확인한 후, 값

[task] | code [pass] | ⏳ 미판정 [title] | 머티리얼 활용하기 [question] | SpriteRendererComponent 의 MaterialID 가 참조하는 머티리얼의 셰이더가 'UVEffect' 계열인지 아닌지를 구분하여, 해당 엔티티에 적용된 머티리얼 정보가 유효한지 검증하는 스크립트를 작성해줘 [answer] | 제시된 참고 문서에는 `SpriteRendererComponent`의 `MaterialID` 프로퍼티가 참조하는 머티리얼의 **셰이더 타입(Shader Type)을 스크립트(mLua)에서 직접 조회하거나 문자열로 비교하는 API가 존재하지 않습니다.** 문서에 따르면 셰이더 타입(Default, Outline, ColorEffect, UVEffect 등)은 에디터의 프로퍼티 에디터에서 지정하고 조절하는 항목이며, mLua 코드 예제에서는 `sprite:ChangeMaterial("material://EntryID")` 또는 `sp [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 머티리얼(Material)은 다양한 프로퍼티를 통해 엔티티가 렌더링될 방법을 나타내는 객체입니다. 엔티티의 프로퍼티는 엔티티를 렌더링하는 코드에 따라 변경됩니다. 셰이더(Shader)란 물체를 렌더링할 때 사용할 코드(또는 스크립트)입니다. 셰이더의 프로퍼티 및 코드는 동적으로 변경될 수 없기 때문에, 셰이더마다 표현하는 효과가 다르게 나타납니다. 메이플스토리 월드에서는 다양한 셰이더를 제공합니다. 크리에이터는 머티리얼을 생성하고 원하는 의도에 맞게 셰이더 프로퍼티를 조절할 수 있습니다. # 머티리얼 생성하기

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 진동 기능 활용 [question] | 문서에 언급된 MobileVibratorService의 테스트 환경 제한 사항과 실제 테스트 방법을 2문장 이내로 요약하세요. [answer] | MobileVibratorService는 모바일에서만 정상 작동하므로 메이커에서 테스트하면 기능이 수행되지 않습니다. 따라서 비공개로 출시한 뒤 모바일 기기에서 직접 버튼을 눌러 진동이 울리는지 확인해야 합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 모바일 기기에서 진동을 울려 월드를 이용하는 유저에게 피드백을 줄 수 있습니다. # MobileVibratorService `MobileVibratorService`를 활용하면 모바일 기능에서 진동을 울릴 수 있습니다. 이 서비스는 모바일에서만 테스트와 활용이 가능하므로 메이커에서 테스트한다면 정상적으로 작동하지 않습니다. # 활용 예제 버튼을 누를 때마다 진동과 함께 토스트 알림창이 나오게 만들어 봅시다. 1. **UI 에디터 - ui - DefaultGroup - Create Entity - C

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | PhysicsRigidbodyComponent가 없는 일반 Entity에 ApplyForce를 호출하면 어떤 오류가 나나요? [answer] | 제공된 참고 문서에는 `PhysicsRigidbodyComponent`가 없는 Entity에 `ApplyForce`를 호출했을 때 발생하는 구체적인 오류 메시지나 예외 동작에 대한 정보가 포함되어 있지 않습니다. 문서에는 `self.BallEntityRef.PhysicsRigidbodyComponent:ApplyForce(...)` 형태로 컴포넌트를 직접 접근하여 힘을 가하는 예제만 제시되어 있을 뿐, 해당 컴포넌트가 존재하지 않을 경우의 처리나 오류 유형에 대해서는 언급하고 있지 않습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 진동 기능 활용 [question] | MobileVibratorService의 하드웨어 지원 확인 및 진동 실행 로직을 포함하는 HandleButtonClickEvent 코드만 출력하고, 설명은 주석으로 작성하세요. [answer] | ```lua Event Handler: [entity] (/ui/DefaultGroup/UIButton_Vib) HandleButtonClickEvent (ButtonClickEvent event) { local Entity = event.Entity -- 모바일 기기의 하드웨어 진동 지원 여부를 확인합니다. if _MobileVibratorService:IsHWSupported() then -- 하드웨어 지원 시 기기를 진동시킵니다. _MobileVibratorServic [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 모바일 기기에서 진동을 울려 월드를 이용하는 유저에게 피드백을 줄 수 있습니다. # MobileVibratorService `MobileVibratorService`를 활용하면 모바일 기능에서 진동을 울릴 수 있습니다. 이 서비스는 모바일에서만 테스트와 활용이 가능하므로 메이커에서 테스트한다면 정상적으로 작동하지 않습니다. # 활용 예제 버튼을 누를 때마다 진동과 함께 토스트 알림창이 나오게 만들어 봅시다. 1. **UI 에디터 - ui - DefaultGroup - Create Entity - C

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 월드코인 환불하기 [question] | 구매 정보 기록 예제 코드만 출력하고, 각 줄의 역할은 주석으로만 설명해 주세요. [answer] | ```lua -- 구매자의 상품 구매 요청에 대한 콜백 함수 등록 _WorldShopService:SetProcessPurchaseCallback(function(purchaseInfo) -- 구매에 대한 처리가 완료되면 관련 정보를 기록합니다. _LogStorageService:LogPurchaseInfo(purchaseInfo, "아이템 구매 완료") end) ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저

[task] | two_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 중력 센서 사용하기 [question] | MobileGyroscopeService를 사용해 모바일 기기의 자이로스코프 센서 지원 여부를 확인하고 값을 측정하는 기본 원리는 무엇인가요? [answer] | `MobileGyroscopeService`는 모바일 기기의 자이로스코프 센서 데이터를 읽어 중력, 중력 가속도, 회전 가속도 등의 값을 측정하는 데 사용됩니다. 이를 통해 기기가 어느 방향으로, 얼마나 큰 힘을 받아 움직였는지 파악할 수 있습니다(예: 핸드폰을 위로 던졌을 때의 상승량 측정). 이 서비스는 **모바일 기기에서만** 테스트와 활용이 가능하며, 사용 전 반드시 기기가 하드웨어적으로 센서를 지원하는지 확인해야 합니다. ### 기본 원리 및 코드 구조 1. **하드웨어 지원 여부 확인**: `_MobileGyros [followup] | 센서를 지원하지 않는 기기를 사용 중일 때 _UIToast:ShowMessage로 안내하고, 지원되는 기기에서는 StartAndWait와 StopAndWait를 통해 센서 상태를 어떻게 관리해야 하나요? [followup_answer] | 센서 지원 여부를 확인하고, 지원 여부에 따라 안내 메시지를 표시하거나 센서 시작/중지를 토글하는 로직은 다음과 같이 구현합니다. 1. **하드웨어 지원 여부 확인**: `_MobileGyroscopeService:IsHWSupported()`를 호출하여 기기가 자이로스코프 센서를 지원하는지 먼저 확인합니다. 2. **미지원 기기 처리**: 지원하지 않는 기기를 사용 중이라면 `_UIToast:ShowMessage("Failed to start gyroscope")`와 같은 안내 메시지를 표시하여 사용자에게 알립니다. 3. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `MobileGyroscopeService`를 활용해 모바일 기기에서 자이로스코프 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileGyroscopeService `MobileGyroscopeService`를 활용하면 모바일 기기의 중력, 중력 가속도, 회전 가속도 값 등을 측정해 기기가 어디서, 얼마만큼의 힘을 받아 움직였는지 알 수 있습니다. 예를 들어 핸드폰을 위로 던졌을 때 얼마나 위로 올라갔는지 측정할 때 이 서비스를 사용합니다. MobileGyroScopeService는

[task] | single_turn [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | 월드 기준 1분당 5회 업로드 제한에 걸려 스크린샷 업로드가 실패하는 현상을 방지하려면 어떻게 해야 하나요? [answer] | 제공된 문서 정보에 따르면, 스크린샷 업로드 실패를 방지하기 위해 다음과 같은 사항을 준수해야 합니다. 1. **동시 요청 방지**: 여러 클라이언트에서 동시에 업로드 요청을 보내지 않도록 주의해야 합니다. 2. **요청 순서 준수**: 업로드는 한 번에 하나만 요청할 수 있습니다. 이전 요청이 완료되기 전에 다시 요청하면 업로드가 실패하므로, 반드시 이전 요청이 끝난 뒤 다음 요청을 보내야 합니다. 3. **전체 요청량 관리**: 월드 기준 1분 당 5회로 제한되므로, 월드 전체에 너무 많은 요청이 들어오지 않도록 사용자의 요청 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. `CaptureAndUpload()` 함수를 추가하고 아래와 같이 작성합니다. ```lua [client only] void CaptureAndUpload() { local frameRUID = self.FrameEntity.SpriteRendererComponent.SpriteRUID local sprite = _ResourceService:LoadSpriteAndWait(frameRUID) -- frame 엔티티 스프라이트의 가로, 세

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 진동 기능 활용 [question] | 버튼 클릭 시 진동과 토스트 알림을 처리하는 Vibrate 컴포넌트 설정 단계를 4단계 이내의 번호 목록으로 정리하세요. [answer] | 버튼 클릭 시 진동과 토스트 알림을 처리하는 Vibrate 컴포넌트 설정 단계는 다음과 같습니다. 1. UI 에디터에서 `DefaultGroup` 안의 `Create Entity` > `Create Button`을 선택해 `UIButton_Vib`를 배치합니다. 2. 새로운 `Vibrate` 컴포넌트를 생성하여 해당 `UIButton_Vib`에 추가합니다. 3. `Vibrate` 컴포넌트에 `ButtonClickEvent`를 추가하고, entity로 변경한 뒤 `UIButton_vib`로 지정합니다. 4. 비공개로 출시한 뒤 모바 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 모바일 기기에서 진동을 울려 월드를 이용하는 유저에게 피드백을 줄 수 있습니다. # MobileVibratorService `MobileVibratorService`를 활용하면 모바일 기능에서 진동을 울릴 수 있습니다. 이 서비스는 모바일에서만 테스트와 활용이 가능하므로 메이커에서 테스트한다면 정상적으로 작동하지 않습니다. # 활용 예제 버튼을 누를 때마다 진동과 함께 토스트 알림창이 나오게 만들어 봅시다. 1. **UI 에디터 - ui - DefaultGroup - Create Entity - C

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | _ScreenshotService:CaptureFullScreenAsPixelDataAndWait() 로 전체 화면을 촬영하고 _ResourceService:RequestSpriteUploadAsync() 로 업로드하여 self.CanvasEntity.SpriteRendererComponent.SpriteRUID 에 결과를 반영하는 스크립트를 작성해줘 [answer] | ```lua Property: [None] Entity FrameEntity = Entity() Entity CanvasEntity = Entity() Method: [client only] void CaptureAndUpload() { local frameRUID = self.FrameEntity.SpriteRendererComponent.SpriteRUID local sprite = _ResourceService:LoadSpriteAndWait(frameRUID) -- frame 엔티티 스프라이트 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. `CaptureAndUpload()` 함수를 추가하고 아래와 같이 작성합니다. ```lua [client only] void CaptureAndUpload() { local frameRUID = self.FrameEntity.SpriteRendererComponent.SpriteRUID local sprite = _ResourceService:LoadSpriteAndWait(frameRUID) -- frame 엔티티 스프라이트의 가로, 세

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | 클라이언트에서 측정된 가속도 값을 서버로 전달할 때 왜 multicast 대신 server 전용 메서드를 사용해야 하나요? [answer] | 제공된 문서에는 `multicast` 실행 공간의 사용 규칙이나 `server` 전용 메서드와의 비교에 대한 설명이 포함되어 있지 않습니다. 문서에서 확인할 수 있는 사실은 다음과 같습니다. 1. 가속도 값은 클라이언트에서 `_MobileAccelerometerService:GetLastAcceleration()`을 통해 측정됩니다. 2. 이 값을 서버로 보내어 물리 힘(`ApplyForce`)을 적용하기 위해 `Tilt` 메서드는 **`[server]`** 실행 공간으로 선언되어 있습니다. 3. `OnUpdate`는 클라이 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 중력 센서 사용하기 [question] | IsHWSupported()가 true인데 IsEnabled()가 false인 상태가 발생할 수 있는 원인은 무엇인가요? [answer] | `IsHWSupported()`가 `true`이고 `IsEnabled()`가 `false`인 상태는 모바일 기기가 자이로스코프 센서를 하드웨어적으로 지원하는지 확인한 결과, 센서는 존재하지만 현재 자이로스코프 서비스가 활성화되어 있지 않다는 것을 의미합니다. 이 상태가 발생하는 주요 원인은 다음과 같습니다. 1. **서비스가 아직 시작되지 않은 경우**: `MobileGyroscopeService`의 `StartAndWait()` 메서드가 호출되지 않았거나, 호출되었으나 아직 초기화가 완료되지 않은 상태일 수 있습니다. 2. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `MobileGyroscopeService`를 활용해 모바일 기기에서 자이로스코프 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileGyroscopeService `MobileGyroscopeService`를 활용하면 모바일 기기의 중력, 중력 가속도, 회전 가속도 값 등을 측정해 기기가 어디서, 얼마만큼의 힘을 받아 움직였는지 알 수 있습니다. 예를 들어 핸드폰을 위로 던졌을 때 얼마나 위로 올라갔는지 측정할 때 이 서비스를 사용합니다. MobileGyroScopeService는

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | EntityService, ScreenshotService, TimerService를 사용하여 3초 후 전체 화면을 캡처하여 RawImage 형태로 변환하고, 해당 이미지를 World에 업로드한 뒤 발급받은 RUID를 로그로 출력하는 스크립트를 작성해줘 [answer] | 요청하신 기능을 구현하기 위해 `TimerService`, `ScreenshotService`, `ResourceService`를 조합하여 스크립트를 작성합니다. 1. **`OnBeginPlay`**: 서버 또는 클라이언트에서 실행되도록 하며, 여기서는 스크린샷 기능이 클라이언트 전용임을 고려해 클라이언트에서 타이머를 설정하도록 `[client only]` 메서드를 사용합니다. 2. **`_TimerService:SetTimerOnce`**: 3초 후 실행될 함수를 지정합니다. 3. **`_ScreenshotService:C [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드를 제작할 때 스프라이트가 필요하면 메이플스토리 월드에서 제공하는 것을 선택하거나, 크리에이터가 직접 Import 한 것을 사용할 수 있습니다. 이러한 방법 외에도 월드 플레이 도중 생성된 이미지를 월드에 업로드하고 다른 유저와 공유할 수도 있습니다. 이처럼 메이플스토리 월드에서 플레이 도중 생성되는 이미지를 **동적 스프라이트**라고 합니다. **동적 스프라이트**는 **RawImage**라는 데이터 타입에 담아서 월드에 업로드하고 **RUID**를 발급받아 사용할 수 있습니다. 이번 과정에서는 [Sc

[task] | two_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | MobileAccelerometerService를 활용해 모바일 기기의 가속도 센서를 지원 여부를 확인하고 값을 측정하는 기본 방법은 무엇인가요? [answer] | MobileAccelerometerService를 사용하여 모바일 기기의 가속도 센서 지원 여부를 확인하고 값을 측정하는 기본 절차는 다음과 같습니다. 1. **하드웨어 지원 여부 확인**: `_MobileAccelerometerService:IsHWSupported()` 메서드를 호출하여 현재 기기가 가속도 센서를 지원하는지 확인합니다. 2. **센서 상태 확인 및 제어**: - 지원되는 경우, `_MobileAccelerometerService:IsEnabled()`로 현재 센서가 실행 중인지 확인합니다. - 실행 [followup] | IsHWSupported()와 IsEnabled()가 모두 false인 경우, 유저에게 안내를 제공하기 위해 _UIToast:ShowMessage를 호출하는 구체적인 예제 코드를 작성해 주세요. [followup_answer] | `IsHWSupported()`와 `IsEnabled()`의 상태를 확인하여 하드웨어 미지원 또는 센서 비활성화 시 안내 메시지를 표시하는 구체적인 예제 코드는 다음과 같습니다. 참고 문서의 로직에 따르면, 하드웨어를 지원하지 않는 경우(`IsHWSupported()`가 false) 안내를 제공해야 합니다. `IsEnabled()`가 false인 경우는 센서가 아직 시작되지 않았을 수 있으므로, 하드웨어 지원 여부가 우선 확인되어야 합니다. ```lua Method: [client only] void OnBeginPlay () [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 `MobileAccelerometerService` 활용해 모바일 기기에서 가속도 센서 기능을 지원하는지 확인하고, 값을 측정할 수 있습니다. # MobileAccelerometerService `MobileAccelerometerService`를 활용하면 모바일 기기의 기울기를 측정할 수 있습니다. MobileAccelerometerService는 가속도 센서가 있는 모바일 기기에서만 동작합니다. 그러므로 월드에 입장한 유저가 정상적으로 플레이할 수 있는지 확인하고 가속도 센서를 지원하지 않는 기기를 사용

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 월드코인 환불하기 [question] | 월드코인 환불이 의무인 3가지 조건을 표로 정리해서 나열해 주세요. [answer] | 월드코인 환불이 의무인 3가지 조건은 다음과 같습니다. | 구분 | 환불 의무 조건 | | :--- | :--- | | 1 | 이용자가 월드 내에서 구매한 유료 상품(콘텐츠, 아이템 등)을 **미사용**했으며, 구매일로부터 **7일이 지나지 않았을 경우** | | 2 | 크리에이터가 임의로 유료 상품(콘텐츠, 아이템 등)을 **삭제 또는 변경**하여 보유 중인 상품에 중대한 영향을 준 경우 | | 3 | 월드 내 유료 상품(콘텐츠, 아이템 등)의 **섬네일 또는 설명과 실제 지급된 상품이 다를 경우**<br>(크리에이터의 실수로 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저

[task] | single_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | GetLastAcceleration()으로 받은 값의 x, y축 방향이 화면 좌표계와 일치하지 않는다면 어떻게 수정해야 하나요? [answer] | 제공된 문서에는 `GetLastAcceleration()`으로 받은 값의 x, y축 방향이 화면 좌표계와 일치하지 않을 때를 위한 특정 좌표 변환 공식이나 축 반전(Flip) 처리에 대한 설명이 없습니다. 문서에서 확인 가능한 정보는 다음과 같습니다. 1. `GetLastAcceleration()`은 기기의 기울어진 방향에 따른 가속도 값을 반환합니다. 2. 반환된 값의 `x`, `y`를 그대로 `Vector2`로 변환하여 `ApplyForce`에 전달하는 방식만 제시되어 있습니다. 따라서 문서에만 근거하여 답변드리면, **문서 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | `MobileAccelerometerService`에서 기기의 하드웨어 지원 여부 확인 후 측정 시작하는 로직을 코드만 출력하고, 지원 여부를 판단하는 조건문과 시작 호출을 주석으로 설명하세요. [answer] | ```lua Method: [client only] void OnBeginPlay () { -- 기기가 가속도 센서를 하드웨어적으로 지원하는지 확인합니다. if _MobileAccelerometerService:IsHWSupported() then -- 지원되는 경우 가속도 측정을 시작합니다. _MobileAccelerometerService:Start() end } ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | two_turn [pass] | ⏳ 미판정 [title] | 월드코인 환불하기 [question] | _WorldShopService:SetProcessPurchaseCallback 으로 상품 구매 정보를 기록하는 구체적인 코드를 보여주세요 [answer] | `_WorldShopService:SetProcessPurchaseCallback`은 월드 내에서 상품 구매 요청이 발생했을 때 호출되는 콜백 함수를 등록하는 메서드입니다. 이 콜백 내부에서 `_LogStorageService:LogPurchaseInfo` 메서드를 호출하여 구매 정보를 기록할 수 있습니다. 구매 정보 기록을 위한 구체적인 코드는 다음과 같습니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCal [followup] | _LogStorageService:LogPurchaseInfo 의 두 번째 인자 "메시지"에 동적 텍스트를 넣고 싶은데, 구매자 이름이나 상품 ID를 어떻게 변수로 조합해서 전달하나요? [followup_answer] | mLua는 Lua 5.3 기반이므로 문자열 연결 연산자 `..`을 사용하여 동적 텍스트를 조합할 수 있습니다. `purchaseInfo` 객체에는 `UserId`와 `ProductId` 프로퍼티가 포함되어 있으므로, 이를 문자열로 변환하여 연결하면 됩니다. ```lua Method: [server only] void OnBeginPlay() { _WorldShopService:SetProcessPurchaseCallback(self.ProcessPurchase) } [server only] boolean ProcessP [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 자신의 월드에서 상품을 제작해 판매할 수 있습니다. 하지만 여러 가지 이유로 상품을 구매한 유저에게 환불 요청을 받을 수 있습니다. 메이플스토리 월드에서는 크리에이터 편의를 위해 상품 구매 관련 로그를 제공할 예정이나 아직은 로그 조회 시스템을 구축하는 중입니다. 시스템이 완성되기 전까지는 크리에이터가 직접 자신의 월드에 구매 정보를 기록하고 조회하는 스크립트를 추가해두어야 합니다. 이번 시간에는 **월드 내 상품 구매 정보를 기록/조회하는 방법**과 이를 토대로 **유저

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 중력 센서 사용하기 [question] | 자이로스코프 활성화 시 `UIToast` 메시지 표시와 실패 시 `log_error` 호출을 처리하는 코드 블록을, 표(항목, 코드, 역할)로 정리해서 작성하세요. [answer] | 자이로스코프 활성화 처리 시 `UIToast` 메시지 표시와 실패 시 `log_error` 호출을 처리하는 코드는 `[client only]` 실행 공간의 `OnBeginPlay()` 생명주기 메서드에서 수행됩니다. 요청하신 표는 다음과 같습니다. | 항목 | 코드 | 역할 | | :--- | :--- | :--- | | 하드웨어 지원 확인 | `if _MobileGyroscopeService:IsHWSupported() then` | 현재 모바일 기기가 자이로스코프 센서를 하드웨어적으로 지원하는지 확인합니다. | | 센서 시작 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **GyroscopeLogic**을 생성합니다. 2. Property를 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileGyroscopeService:IsHWSupported()`를 활용해 기기에서 자이로스코프 센서를 지원하는지 확인한 후, 값

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | 가속도 센서 데이터를 기반으로 공이 움직이도록 구현하는 `OnUpdate`와 `Tilt` 함수의 코드 블록만 출력하고, `IsEnabled` 체크와 `GetLastAcceleration` 값의 벡터 변환 과정을 주석으로만 작성하세요. [answer] | ```lua void OnUpdate (number delta) { -- 가속도 센서가 활성화되어 있는지 확인합니다. if _MobileAccelerometerService:IsEnabled() then -- 마지막으로 측정된 가속도 값을 가져옵니다. local AccelerationDirection = _MobileAccelerometerService:GetLastAcceleration() -- 가속도 방향을 2차원 벡터로 변환합니다. local directi [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | two_turn [pass] | ⏳ 미판정 [title] | 모바일 기기의 진동 기능 활용 [question] | MobileVibratorService로 모바일 진동 피드백을 구현하려면 어떤 조건과 절차가 필요한가? [answer] | MobileVibratorService를 이용해 모바일 기기에 진동 피드백을 구현하려면 다음 조건과 절차를 준수해야 합니다. ### 1. 필수 조건 * **모바일 기기 전용:** `MobileVibratorService`는 모바일 기기에서만 정상적으로 작동합니다. 메이플스토리 월드 메이커(에디터)에서 테스트하더라도 진동이 울리지 않습니다. * **하드웨어 지원 확인:** 진동을 발생시키기 전, 해당 모바일 기기가 하드웨어적으로 진동을 지원하는지 반드시 확인해야 합니다. ### 2. 구현 절차 1. **UI 버튼 생성:* [followup] | 메이커 에디터에서 테스트 시 진동이 작동하지 않는 이유는 무엇이며, 실제 모바일 기기에서 정상 동작을 확인하기 위한 출시 절차와 `_MobileVibratorService:IsHWSupported()` 체크 로직을 코드에 포함시켜 주세요. [followup_answer] | ### 메이커 에디터에서 진동이 작동하지 않는 이유 `MobileVibratorService`는 모바일 기기에서만 테스트와 활용이 가능한 서비스입니다. 따라서 메이플스토리 월드 메이커(에디터) 환경에서 테스트를 수행하더라도 하드웨어 진동 기능이 정상적으로 작동하지 않습니다. ### 실제 모바일 기기에서 정상 동작을 확인하기 위한 출시 절차 1. **UI 버튼 생성**: UI 에디터에서 `ui` > `DefaultGroup` > `Create Entity` > `Create Button`을 선택해 버튼(예: `UIButton_Vi [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 모바일 기기에서 진동을 울려 월드를 이용하는 유저에게 피드백을 줄 수 있습니다. # MobileVibratorService `MobileVibratorService`를 활용하면 모바일 기능에서 진동을 울릴 수 있습니다. 이 서비스는 모바일에서만 테스트와 활용이 가능하므로 메이커에서 테스트한다면 정상적으로 작동하지 않습니다. # 활용 예제 버튼을 누를 때마다 진동과 함께 토스트 알림창이 나오게 만들어 봅시다. 1. **UI 에디터 - ui - DefaultGroup - Create Entity - C

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | self.FrameEntity.SpriteRendererComponent.SpriteRUID 로 로드된 스프라이트의 Width 와 Height 를 확인하여 스크린샷의 가로, 세로 비율을 계산하는 로직을 포함하는 스크립트를 작성해줘 [answer] | `self.FrameEntity`의 스프라이트 정보를 가져와 스크린샷과 비율을 계산하는 로직은 `CaptureAndUpload()` 함수에 포함되어 있습니다. 요청하신 내용(스프라이트의 Width/Height 확인 및 비율 계산)을 중심으로 해당 로직이 포함된 스크립트를 작성합니다. 참고로, `CaptureAndUpload()`는 클라이언트에서만 실행되어야 하므로 `[client only]` 속성을 붙여야 하며, 스크린샷 촬영(`_ScreenshotService:CaptureFullScreenAsPixelDataAndWait`) [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. `CaptureAndUpload()` 함수를 추가하고 아래와 같이 작성합니다. ```lua [client only] void CaptureAndUpload() { local frameRUID = self.FrameEntity.SpriteRendererComponent.SpriteRUID local sprite = _ResourceService:LoadSpriteAndWait(frameRUID) -- frame 엔티티 스프라이트의 가로, 세

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | ScreenshotService, TimerService를 사용하여 OnUpdate에서 매 프레임마다 10초 간격으로 화면을 캡처하여 RawImage로 변환하고, World에 업로드한 뒤 발급받은 RUID를 테이블에 누적하여 저장하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `ScreenshotService`와 `ResourceService`를 사용하여 스크린샷을 캡처하고 업로드하는 방법은 설명되어 있습니다. 하지만 **`TimerService` API**에 대한 정의나 사용 예시가 문서에 포함되어 있지 않으며, `OnUpdate`에서 프레임 단위로 시간 간격을 관리하는 로직에 대한 구체적인 API 가이드도 문서에 명시되어 있지 않습니다. 따라서 요청하신 내용 중 **`TimerService`를 사용하여 10초 간격으로 캡처**하는 부분에 대해 문서 근거를 바탕으로 정확한 코드를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 월드를 제작할 때 스프라이트가 필요하면 메이플스토리 월드에서 제공하는 것을 선택하거나, 크리에이터가 직접 Import 한 것을 사용할 수 있습니다. 이러한 방법 외에도 월드 플레이 도중 생성된 이미지를 월드에 업로드하고 다른 유저와 공유할 수도 있습니다. 이처럼 메이플스토리 월드에서 플레이 도중 생성되는 이미지를 **동적 스프라이트**라고 합니다. **동적 스프라이트**는 **RawImage**라는 데이터 타입에 담아서 월드에 업로드하고 **RUID**를 발급받아 사용할 수 있습니다. 이번 과정에서는 [Sc

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | self.CanvasEntity.TransformComponent.Scale 을 계산된 horizontalRatio 와 verticalRatio 로 설정하여 프레임 안에 스크린샷이 적합하도록 조절하는 스크립트를 작성해줘 [answer] | 프레임 안에 스크린샷이 적합하도록 크기를 조절하기 위해서는 프레임과 스크린샷의 픽셀 크기를 비교하여 비율을 계산하고, 이를 Canvas 엔티티의 Scale에 적용해야 합니다. 아래 스크립트는 `_ScreenshotService`로 전 화면 스크린샷을 촬영하고, `_ResourceService`로 해당 이미지를 스프라이트로 업로드한 뒤, 계산된 비율을 `self.CanvasEntity.TransformComponent.Scale`에 설정하는 로직을 포함합니다. ```lua Property: [None] Entity CanvasEn [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 11. `CaptureAndUpload()` 함수를 추가하고 아래와 같이 작성합니다. ```lua [client only] void CaptureAndUpload() { local frameRUID = self.FrameEntity.SpriteRendererComponent.SpriteRUID local sprite = _ResourceService:LoadSpriteAndWait(frameRUID) -- frame 엔티티 스프라이트의 가로, 세

[task] | code [pass] | ⏳ 미판정 [title] | 모바일 기기의 가속도 센서 사용하기 [question] | MobileAccelerometerService의 IsHWSupported와 Start 메서드를 사용하여 OnBeginPlay에서 하드웨어 지원 여부를 검사하고 가속도 측정을 시작하는 로직을 작성해줘 [answer] | `MobileAccelerometerService`의 `IsHWSupported()` 메서드를 호출하여 모바일 기기가 가속도 센서 하드웨어를 지원하는지 확인한 뒤, 지원될 경우 `Start()` 메서드를 호출하여 가속도 측정을 시작하는 로직은 다음과 같이 작성할 수 있습니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 Method: [client only] void OnBeginPlay() [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 1. 새로운 **AccelerometerLogic**을 생성합니다. 2. Property를 아래와 같이 추가하고, BallEntityRef에 TiltBall을 지정합니다. ```lua Property: [None] EntityRef BallEntityRef = /maps/map01/TiltBall [None] number ForcePower = 100 ``` 3. `MobileAccelerometerService:IsHWSupported()`를 활용해 기기에서 가속도 센서를 지원

[task] | code [pass] | ⏳ 미판정 [title] | 스크린샷과 동적 스프라이트 [question] | _OnBeginPlay() 에서 _ResourceService:SetSpriteUploadValidationCallback() 을 true 반환하도록 설정하고, _KeyboardService 로 특정 키(예: S 키) 입력 감지 시 스크린샷을 촬영해 Canvas 엔티티에 표시하는 로직을 구현하는 스크립트를 작성해줘. [answer] | 제공된 참고 문서에는 `_ResourceService:SetSpriteUploadValidationCallback()` 함수와 스크립트 프로퍼티 설정(`FrameEntity`, `CanvasEntity`)에 대한 정보만 포함되어 있습니다. 그러나 질문에서 요구하는 **`_KeyboardService`를 이용한 키 입력 감지** 및 **스크린샷 촬영(캡처) 후 Canvas 엔티티에 표시하는 구체적인 API 호출 방법**에 대한 설명이나 예제는 참고 문서에 **존재하지 않습니다.** 따라서 문서에 명시되지 않은 API(`_Keybo [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 특정 키를 눌러 스크린샷을 찍은 뒤 월드의 특정 위치에 보이도록 하는 예제를 살펴봅시다. 1. **Hierarchy - Create Entity - Create Empty**를 클릭해 **EmptyEntity**를 생성합니다. **EmptyEntity**의 이름을 **Frame**으로 지정합니다. 2. **Frame** 엔티티의 프로퍼티 에디터에서 **TransformComponent, SpriteRendererComponent**를 추가합니다. 3. **Frame** 엔티티의 프로퍼티

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