← 목록

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

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

[task] | code [pass] | ✅ 통과 [title] | RoomService [question] | RoomService의 GetOrCreateInstanceRoom과 MoveUsersToInstanceRoom을 활용해 유저 3명이 모이면 "boss_room" 인스턴스 룸을 생성하고 해당 유저들을 즉시 이동시키는 스크립트를 작성해줘 [answer] | 사용자가 요청한 `GetOrCreateInstanceRoom`과 `MoveUsersToInstanceRoom`을 사용하여 유저 3명이 모이면 "boss_room" 인스턴스 룸을 생성하고 이동시키는 로직을 구현했습니다. 참고로 `MoveUsersToInstanceRoom`은 인스턴스 룸이 이미 존재해야 하므로, `GetOrCreateInstanceRoom`으로 룸을 확보한 후에 이동 처리를 수행하는 것이 안전합니다. 또한, 특정 유저 3명이 모이는 조건을 만족시키기 위해 `UserEnterEvent`를 처리하여 유저 목록을 관리하고 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 제시된 RoomService API(GetOrCreateInstanceRoom, MoveUsersToInstanceRoom)의 시그니처와 반환값, 실행 공간([server only])을 정확히 준수하며, mLua 표준 문법(서비스 호출, 이벤트 핸들러)을 올바르게 적용하여 질문에 대한 완전하고 명확한 해결책을 제공했습니다. [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | single_turn [pass] | ✅ 통과 [title] | ScreenRecordService [question] | ScreenRecordService 사용 시 플랫폼별 지원 여부를 확인해야 하는 가장 중요한 이유는 무엇인가요? [answer] | ScreenRecordService 사용 시 플랫폼별 지원 여부를 확인해야 하는 가장 중요한 이유는 **지원되지 않는 녹화 모드를 선택하면 자동으로 다른 모드로 Fallback(대체)되기 때문**입니다. 이는 개발자가 의도한 대로 특정 오디오 소스(마이크 또는 게임 소리)를 포함해 녹화하지 못할 수 있음을 의미합니다. 구체적인 Fallback 규칙은 다음과 같습니다. * **Android**: `ScreenRecordMode.ScreenAndMic`를 선택하면, 마이크 녹화가 지원되지 않으므로 자동으로 `ScreenAndGa [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 Fallback 규칙과 지원 표를 정확히 인용하여 플랫폼별 확인의 필요성을 명확히 설명했습니다. [source_doc] | # 주의사항 녹화 시 플랫폼별로 지원되지 않는 녹화 모드가 있습니다. Android의 경우 ScreenRecordMode.ScreenAndMic 선택 시 자동으로 ScreenAndGameAudioAndMic로 Fallback됩니다. 윈도우의 경우 ScreenRecordMode.ScreenAndGameAudioAndMic 선택 시 자동으로 ScreenAndMic로 Fallback됩니다. | 녹화 모드 | 설명 | Windows/macOS | iOS | Android | | :---: | :---: | :---: | :---: |

[task] | single_turn [pass] | ✅ 통과 [title] | ScreenRecordService [question] | 모든 플랫폼에서 안정적으로 동작하는 녹화 모드는 무엇이며, 특정 모드 선택 시 Fallback이 발생하는 구체적인 조건은 어떻게 되나요? [answer] | 모든 플랫폼(Windows/macOS, iOS, Android)에서 안정적으로 동작하는 녹화 모드는 다음과 같습니다. 1. **ScreenOnly**: 화면만 녹화 2. **ScreenAndGameAudio**: 화면 + 게임 소리 녹화 이 두 모드는 지원 표에 따르면 모든 플랫폼에서 'O'로 표시되어 있어 호환성이 가장 좋습니다. ### Fallback 발생 조건 특정 녹화 모드를 선택했을 때 해당 플랫폼에서 지원하지 않으면 자동으로 다른 모드로 대체(Fallback)됩니다. 구체적인 조건은 다음과 같습니다. * [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 지원 표와 Fallback 규칙을 정확히 인용하여 질문에 충실히 답변했습니다. [source_doc] | # 주의사항 녹화 시 플랫폼별로 지원되지 않는 녹화 모드가 있습니다. Android의 경우 ScreenRecordMode.ScreenAndMic 선택 시 자동으로 ScreenAndGameAudioAndMic로 Fallback됩니다. 윈도우의 경우 ScreenRecordMode.ScreenAndGameAudioAndMic 선택 시 자동으로 ScreenAndMic로 Fallback됩니다. | 녹화 모드 | 설명 | Windows/macOS | iOS | Android | | :---: | :---: | :---: | :---: |

[task] | code [pass] | ✅ 통과 [title] | RoomService [question] | `RoomService`의 `MoveUsersToStaticRoom`을 호출하여 지정된 유저들을 `LobbyMap` 정적 룸으로 복귀시키는 스크립트를 작성해줘 [answer] | `RoomService`의 `MoveUsersToStaticRoom` 메서드를 사용하면 지정된 유저 목록을 정적 룸의 특정 맵으로 이동시킬 수 있습니다. 아래는 `LobbyMap`으로 복귀시키는 스크립트 예시입니다. ```lua Method: [server only] void ReturnToLobby (table userIds) { -- 정적 룸의 특정 맵으로 유저들을 입장시킵니다. _RoomService:MoveUsersToStaticRoom(userIds, "LobbyMap") } ``` **설명:** * [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제와 설명을 정확히 인용하여 질문에 대한 올바른 스크립트와 해설을 제공했습니다. [source_doc] | # Events - **RoomBeginEvent** 룸이 생성될 때 해당 룸에서 발생하는 이벤트입니다. - **RoomEndEvent** 룸이 파괴될 때 해당 룸에서 발생하는 이벤트입니다. # Examples #### 인스턴스 룸 입장 특정 맵들을 사용하는 인스턴스 룸을 생성하고, 인스턴스 룸의 지정한 맵으로 입장하는 예제입니다. ```lua Property: [None] integer GameIdx = "0" Method: [server only] void EnterGame (table userIds) { -

[task] | two_turn [pass] | ✅ 통과 [title] | RoomService [question] | RoomService의 공유 메모리(Shared Memory) 기능에 대해 설명해 주세요. [answer] | RoomService의 공유 메모리(Shared Memory) 기능은 같은 월드 인스턴스 내의 룸끼리 데이터를 공유하기 위해 사용됩니다. 주요 특징과 사용법은 다음과 같습니다. **1. 공유 메모리 객체 획득** `_RoomService:GetSharedMemory(name)` 메서드를 호출하여 공유 메모리 객체를 얻어옵니다. * 같은 이름(`name`)의 공유 메모리가 이미 존재하면 기존 것을 반환하고, 없으면 새로 생성합니다. * 이 메서드는 서버에서만 실행되며(`[ServerOnly]`), 반환 값으로 결과 코드(` [followup] | `DeleteSharedMemoryAndWait`와 `DeleteSharedMemoryAsync`의 차이점과, 스크립트에서 어떤 상황에서 각각을 선택하는 것이 적합한지 코드 예시를 보여주세요. [followup_answer] | `DeleteSharedMemoryAndWait`와 `DeleteSharedMemoryAsync`는 모두 RoomService의 공유 메모리를 삭제하는 기능이지만, 실행 방식과 스크립트 흐름에 미치는 영향에서 차이가 있습니다. ### 1. 차이점 | 구분 | `DeleteSharedMemoryAndWait` | `DeleteSharedMemoryAsync` | | :--- | :--- | :--- | | **실행 방식** | **동기식 (Yield)** | **비동기식 (Callback)** | | **스크립트 흐름** | 삭제 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 GetSharedMemory, DeleteSharedMemoryAndWait, DeleteSharedMemoryAsync 메서드의 시그니처, 실행 공간(ServerOnly), Yield 특성, 그리고 반환값 구조를 정확히 설명하고 코드 예시에서도 이를 올바르게 적용했으며, 문서에 없는 RoomSharedMemory 내부 API를 지어내지 않은 점이 우수함. [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | two_turn [pass] | ✅ 통과 [title] | ScreenRecordService [question] | ScreenRecordService의 녹화 모드(ScreenRecordMode)가 플랫폼별로 어떻게 지원되는지, 환경에 맞지 않는 모드를 선택하면 어떻게 처리되는지 알려주세요. [answer] | ScreenRecordService의 녹화 모드(ScreenRecordMode) 지원 현황은 플랫폼에 따라 다음과 같습니다. * **Android**: `ScreenAndGameAudioAndMic` 모드로 녹화됩니다. * **Windows**: `ScreenAndMic` 모드로 녹화됩니다. 만약 실행 환경(플랫폼)에서 지원하지 않는 녹화 모드를 선택하여 녹화를 시작하면, 해당 플랫폼에서 지원하는 녹화 모드로 자동으로 전환되어 화면이 녹화됩니다. [followup] | Android와 Windows에서 각각 어떤 모드로 녹화되는지 구체적으로 설명해 주세요. [followup_answer] | Android와 Windows 플랫폼에서 ScreenRecordService가 적용하는 녹화 모드는 다음과 같습니다. * **Android**: `ScreenAndGameAudioAndMic` 모드로 녹화됩니다. * **Windows**: `ScreenAndMic` 모드로 녹화됩니다. 참고로, 실행 환경에서 지원하지 않는 모드를 선택하여 녹화를 시작할 경우, 해당 플랫폼에서 지원하는 모드로 자동으로 전환되어 녹화가 진행됩니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 플랫폼별 지원 모드와 미지원 모드 선택 시의 자동 전환 동작을 정확하고 간결하게 설명했습니다. [source_doc] | 화면 녹화 기능을 제공합니다. \n\n플랫폼별로 지원하는 녹화 모드(ScreenRecordMode)가 다릅니다. Android 환경에서는 ScreenAndGameAudioAndMic 모드로 녹화되고, Windows 환경에서는 ScreenAndMic 모드 녹화됩니다. 환경에 맞지 않는 모드를 선택하면 지원하는 녹화 모드로 화면을 녹화합니다. # Methods - **string FinishRecordAndWait() [ClientOnly] [Yield]** 녹화를 종료합니다. 녹화 파일 생성을 완료하면 저장 경로를 반환합니다.

[task] | two_turn [pass] | ✅ 통과 [title] | RoomService [question] | 정적 룸과 인스턴스 룸의 차이를 `RoomKey`와 `StaticRoomKey` 프로퍼티를 중심으로 설명해 주세요. [answer] | `RoomService`의 `RoomKey`와 `StaticRoomKey` 프로퍼티를 통해 정적 룸과 인스턴스 룸의 차이를 이해할 수 있습니다. **1. `StaticRoomKey` (정적 룸의 식별자)** * **값:** 항상 `"__main__"`이라는 고정된 문자열 상수를 가집니다. * **의미:** 정적 룸은 월드 인스턴스 전체에서 공통으로 사용되는 기본 맵 영역을 나타냅니다. 모든 유저가 기본적으로 속해 있는 공용 공간입니다. * **`RoomKey`와의 관계:** 스크립트가 정적 룸(공용 맵)에서 실행되고 있 [followup] | 현재 스크립트가 정적 룸에서 실행 중일 때, 특정 유저를 인스턴스 룸으로 이동시키려 하면 어떤 오류나 동작이 발생하는지, 그리고 이를 방지하기 위한 `IsInstanceRoom` 체크 로직은 어떻게 작성하나요? [followup_answer] | 참고 문서에 따르면, `RoomService`는 정적 룸과 인스턴스 룸을 구분하는 `RoomKey` 및 `StaticRoomKey` 프로퍼티와 `IsInstanceRoom()` 메서드를 제공합니다. 그러나 **정적 룸에서 인스턴스 룸으로 유저를 이동시킬 때 발생하는 구체적인 오류 코드나 실패 동작에 대한 명시적인 설명은 문서에 없습니다.** 다만, 문서에서 제공하는 메서드들의 특성상 다음과 같은 논리적 흐름으로 추론할 수 있으며, 이를 방지하기 위한 체크 로직은 `IsInstanceRoom()`을 사용하여 구현할 수 있습니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 RoomKey와 StaticRoomKey 정의 및 IsInstanceRoom 메서드를 정확히 인용하여 정적/인스턴스 룸 차이를 명확히 설명하고, mLua 문법에 맞는 코드 예시를 제시했습니다. [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | code [pass] | ✅ 통과 [title] | RoomService [question] | RoomService의 GetSharedMemory와 DeleteSharedMemoryAsync를 사용해 "global_score" 이름의 공유 메모리에 점수를 기록하고, 점수가 10000을 초과하면 공유 메모리를 비동기 삭제하는 스크립트를 작성해줘 [answer] | RoomService의 `GetSharedMemory`는 같은 월드 인스턴스 내의 룸들이 공유하는 메모리 객체를 반환하며, `DeleteSharedMemoryAsync`는 해당 공유 메모리를 비동기적으로 삭제하고 완료 시 콜백 함수를 호출합니다. 다만, 제공된 문서에는 공유 메모리 객체(`RoomSharedMemory`) 내부에서 특정 변수(예: "score")를 생성하거나 조회, 수정하는 구체적인 메서드(예: `CreateVariable`, `GetVariable`, `UpdateVariable` 등)에 대한 설명이 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 RoomSharedMemory의 내부 조작 API를 지어내지 않고, 명시된 GetSharedMemory와 DeleteSharedMemoryAsync의 시그니처 및 동작 방식을 정확히 반영하여 제한된 범위 내에서 가능한 최적의 구조를 제시했습니다. [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | code [pass] | ✅ 통과 [title] | RoomService [question] | `RoomService`의 `CreateInstanceRoom`과 `MoveUsers`를 사용하여 고유 식별자를 생성하고 `GameMap01` 맵으로 유저들을 입장시키는 스크립트를 작성해줘 [answer] | `RoomService`의 `CreateInstanceRoom`과 `MoveUsers`를 사용하여 고유 식별자를 생성하고 `GameMap01` 맵으로 유저들을 입장시키는 스크립트입니다. ```lua Property: [None] integer GameIdx = 0 Method: [server only] void EnterGame (table userIds) { -- 중복되지 않는 인스턴스 룸 식별자를 만듭니다. local roomKey = "Game" .. tostring(self.GameIdx) self.GameIdx = [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하여 질문의 요구사항을 완벽히 충족했습니다. [source_doc] | # Events - **RoomBeginEvent** 룸이 생성될 때 해당 룸에서 발생하는 이벤트입니다. - **RoomEndEvent** 룸이 파괴될 때 해당 룸에서 발생하는 이벤트입니다. # Examples #### 인스턴스 룸 입장 특정 맵들을 사용하는 인스턴스 룸을 생성하고, 인스턴스 룸의 지정한 맵으로 입장하는 예제입니다. ```lua Property: [None] integer GameIdx = "0" Method: [server only] void EnterGame (table userIds) { -

[task] | code [pass] | ❌ 탈락 [title] | RoomService [question] | RoomService의 IsInstanceRoom과 MoveUserToStaticRoom을 이용해 현재가 인스턴스 룸인지 확인하고, 유저가 특정 UI를 통해 로그아웃을 요청하면 정적 맵으로 안전하게 이동시키는 스크립트를 작성해줘 [answer] | RoomService의 `IsInstanceRoom` 메서드는 현재 스크립트가 실행 중인 룸이 인스턴스 룸인지 여부를 확인하는 데 사용됩니다. `MoveUserToStaticRoom` 메서드는 특정 유저를 정적 맵으로 이동시키며, `mapName` 인수를 생략하면 시작 맵으로 이동합니다. 사용자가 특정 UI(예: 터치 이벤트)를 통해 로그아웃(정적 맵 이동)을 요청했을 때, 현재가 인스턴스 룸인지 확인하고 안전하게 이동시키는 스크립트는 다음과 같습니다. ```lua Property: [None] string TargetMapNa [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=3 complexity=2 verbosity=2 [judge_reason] | 문서와 규칙에 없는 TouchEvent/UserId 필드를 지어냈고, Yield 메서드 호출 패턴을 잘못 설명했으나 기본 구조는 이해 가능함 [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | _ScreenRecordService 를 사용하여 모든 플랫폼에서 공통으로 지원되는 ScreenAndGameAudio 모드로 녹화를 시작하는 스크립트를 작성해줘 [answer] | ```lua Method: [client only] void OnBeginPlay() { _ScreenRecordService:StartRecord(ScreenRecordMode.ScreenAndGameAudio) } ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=2 verbosity=2 [judge_reason] | 문서에 존재하지 않는 StartRecord 메서드와 ScreenRecordMode 상수를 지어냈으므로 정확도가 낮으나, 질문의 의도(공통 모드 사용)는 이해하고 있습니다. [source_doc] | # 주의사항 녹화 시 플랫폼별로 지원되지 않는 녹화 모드가 있습니다. Android의 경우 ScreenRecordMode.ScreenAndMic 선택 시 자동으로 ScreenAndGameAudioAndMic로 Fallback됩니다. 윈도우의 경우 ScreenRecordMode.ScreenAndGameAudioAndMic 선택 시 자동으로 ScreenAndMic로 Fallback됩니다. | 녹화 모드 | 설명 | Windows/macOS | iOS | Android | | :---: | :---: | :---: | :---: |

[task] | code [pass] | ✅ 통과 [title] | RoomService [question] | `RoomService`의 `CreateInstanceRoom` 생성 결과가 nil인 경우를 검사하여 실패 시 `log_error`로 에러 메시지를 출력하고 정상 생성 시 `MoveUsers`로 유저를 이동시키는 스크립트를 작성해줘 [answer] | `RoomService`의 `CreateInstanceRoom` 호출 결과가 `nil`인지 확인하여, 생성에 실패한 경우 `log_error`로 에러를 출력하고, 성공한 경우 `MoveUsers` 메서드로 유저를 인스턴스 룸의 지정된 맵으로 이동시키는 스크립트입니다. ```lua Property: [None] integer GameIdx = 0 Method: [server only] void EnterGame (table userIds) { -- 중복되지 않는 인스턴스 룸 식별자를 만듭니다. local roomKe [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제와 API 사용법이 정확히 일치하며, nil 검사 및 에러 처리 로직이 요구사항을 완벽하게 충족합니다. [source_doc] | # Events - **RoomBeginEvent** 룸이 생성될 때 해당 룸에서 발생하는 이벤트입니다. - **RoomEndEvent** 룸이 파괴될 때 해당 룸에서 발생하는 이벤트입니다. # Examples #### 인스턴스 룸 입장 특정 맵들을 사용하는 인스턴스 룸을 생성하고, 인스턴스 룸의 지정한 맵으로 입장하는 예제입니다. ```lua Property: [None] integer GameIdx = "0" Method: [server only] void EnterGame (table userIds) { -

[task] | instruction_following [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceService의 GetWorldInstanceInfoPagesAndWait와 GetWorldInstanceInfoPagesAsync 메서드가 메이커 환경에서 실행될 때 반환하거나 전달하는 값을 3문장 이내로 설명하세요. [answer] | 메이커에서 `GetWorldInstanceInfoPagesAndWait`를 실행하면 `false`와 `nil`을 반환합니다. `GetWorldInstanceInfoPagesAsync`를 실행하면 콜백 함수에 `false`와 `nil`이 전달됩니다. 두 메서드 모두 출시 환경에서만 동작하며 메이커에서는 유효한 정보를 제공하지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 메이커 환경에서의 반환값(false, nil)과 동작 제한(출시 환경 전용)을 정확하고 간결하게 설명했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | single_turn [pass] | ✅ 통과 [title] | ScreenRecordService [question] | EventHandlerBase 타입의 객체를 생성하여 여러 이벤트에 동시에 연결할 수 있는지, 아니면 이벤트마다 개별적으로 생성해야 하는지 알고 싶습니다. [answer] | 제공된 ScreenRecordService 문서에 따르면, `EventHandlerBase` 타입의 객체를 직접 생성하는 API(생성자 등)는 정의되어 있지 않습니다. `EventHandlerBase`는 `ConnectEvent` 메서드의 반환 타입으로만 등장하며, 이는 이벤트 연결 시 시스템이 내부적으로 반환하는 핸들러 참조입니다. 따라서 **이벤트마다 개별적으로 `ConnectEvent`를 호출하여 반환받은 `EventHandlerBase` 객체를 각각 저장해야 합니다.** 하나의 `EventHandlerBase` 객체를 여러 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 생성자를 지어내지 않고 ConnectEvent 반환값을 저장해 재사용하는 올바른 패턴을 명확히 설명하며, 문서 기반 논리가 정합적이고 적절히 상세합니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지

[task] | two_turn [pass] | ❌ 탈락 [title] | RoomService [question] | RoomService에서 인스턴스 룸을 생성하고 유저를 이동시키는 전체 흐름을 설명해 주세요. [answer] | `RoomService`를 사용하여 인스턴스 룸을 생성하고 유저를 이동시키는 과정은 서버에서 실행되는 스크립트(`[server only]`) 내에서 이루어집니다. 전체 흐름은 다음과 같습니다. ### 1. 인스턴스 룸 생성 `_RoomService:CreateInstanceRoom()` 메서드를 호출하여 인스턴스 룸을 생성합니다. * **매개변수**: * `key`: 인스턴스 룸을 식별하기 위한 고유 문자열입니다. * `mapNames`: 생성할 맵들의 이름 목록입니다. 목록을 비워두면 `MapCompon [followup] | `CreateInstanceRoom` 생성 후 `MoveUsersToInstanceRoom`으로 유저를 옮길 때, `firstUserWaitSeconds`가 지나기 전에 유저가 없으면 룸이 파괴되는 예외 상황을 어떻게 처리해야 하나요? [followup_answer] | `CreateInstanceRoom` 호출 후 `firstUserWaitSeconds`(기본값 10초) 안에 첫 유저가 입장하지 않으면 해당 인스턴스 룸은 자동으로 파괴됩니다. 이 예외 상황을 처리하기 위한 핵심은 **룸 생성 직후 즉시 유저를 이동시키지 않고, 유저가 실제로 입장할 준비가 되었을 때(즉, 룸이 생성되었음을 확인한 후) 이동 명령을 내리는 것**입니다. 하지만 `RoomService` 문서에 명시된 메서드만으로는 "룸이 생성되었는지"를 비동기적으로 폴링(polling)하거나 이벤트로 수신하는 API가 제공되지 않습 [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | InstanceRoom 객체의 MoveUsers/MoveUser 메서드와 nil 반환 처리는 문서에 없는 지어낸 API이며, CreateInstanceRoom은 InstanceRoom 타입을 반환하므로 nil 체크가 불필요하거나 잘못된 가정입니다. [source_doc] | 룸 관련 기능을 제공합니다. # Properties - **ReadOnlyDictionary<string, InstanceRoom> InstanceRooms [ReadOnly]** 활성화된 모든 인스턴스 룸의 목록입니다. - **string RoomKey [ReadOnly]** 현재 룸의 key입니다. 현재 룸이 인스턴스 룸이면 생성 시 지정한 key 값을, 정적 룸이면 StaticRoomKey와 같은 값을 나타냅니다. - **string StaticRoomKey [ReadOnly]** 정적 룸의 key입니다. 정적

[task] | instruction_following [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceService에서 공유 메모리를 비동기로 삭제할 때 사용하는 메서드 이름과 그 메서드가 완료 후 호출하는 콜백의 파라미터 타입을 표로 정리해서 답변하세요. [answer] | WorldInstanceService에서 공유 메모리를 비동기로 삭제하는 메서드는 `DeleteSharedMemoryAsync`입니다. 이 메서드가 작업을 완료한 후 호출하는 콜백 함수의 파라미터 타입은 `SharedMemoryResultCode`입니다. 요청하신 정보 정리표는 다음과 같습니다. | 항목 | 내용 | | :--- | :--- | | **메서드 이름** | `DeleteSharedMemoryAsync` | | **콜백 파라미터 타입** | `SharedMemoryResultCode` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 메서드 시그니처와 정확히 일치하며 요청된 표 형식으로 간결하게 답변했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | two_turn [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | ScreenRecordService에서 이벤트를 연결하고 해제하는 기본적인 방식이 무엇인가요? [answer] | ScreenRecordService에서 이벤트를 연결하고 해제하는 기본적인 방식은 `ConnectEvent`와 `DisconnectEvent` 메서드를 사용하는 것입니다. ### 1. 이벤트 연결 (ConnectEvent) `ConnectEvent` 메서드는 두 가지 방식으로 사용할 수 있습니다. 1. **이벤트 이름(string)으로 연결:** * 첫 번째 인자로 이벤트의 이름(string key)을, 두 번째 인자로 이벤트 발생 시 실행될 핸들러 함수를 전달합니다. * 반환 값: `EventHandle [followup] | ConnectEvent와 DisconnectEvent의 매개변수 차이는 무엇이며, string key와 Type eventType 중 어떤 것을 사용하는 것이 권장되나요? [followup_answer] | `ConnectEvent`와 `DisconnectEvent`의 매개변수 차이는 다음과 같습니다. ### 1. 매개변수 차이 **ConnectEvent (이벤트 연결)** * **1인자 (이벤트 식별자):** `string key` 또는 `Type eventType` 중 하나를 사용합니다. * `string key`: 이벤트의 **이름**을 문자열로 전달합니다. * `Type eventType`: 이벤트의 **타입**을 전달합니다. * **2인자 (핸들러):** `IScriptFunction event [scores] | helpfulness=3 correctness=1 coherence=3 complexity=2 verbosity=3 [judge_reason] | mLua의 실제 문법(서비스 언더스코어 접두, 컴포넌트 접근 방식)을 무시하고 C# 스타일(_ScreenRecordService, self.Property)의 가짜 코드를 제시하여 정확도가 낮습니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지

[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceService의 GetDivision 메서드를 통해 서버 지역을 확인할 수 있는데, 메이커 환경에서는 항상 어떤 값을 반환하나요? [answer] | 메이커 환경에서는 `WorldInstanceService`의 `GetDivision` 메서드를 호출하면 항상 `Division.Unknown`을 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 대로 메이커 환경에서 GetDivision가 항상 Division.Unknown을 반환한다는 사실을 정확하고 간결하게 답변했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | code [pass] | ✅ 통과 [title] | WorldInstanceSharedMemory [question] | 월드 인스턴스 간 최대 분당 1,000회 이벤트 전송 제한을 넘지 않도록, 전송 대기열을 관리하여 제한 내에서만 WorldInstanceSharedMemory의 이벤트 전송을 수행하는 로직을 구현하는 스크립트를 작성해줘 [answer] | # WorldInstanceSharedMemory 이벤트 전송 제한 관리 스크립트 참고 문서에 따르면, 월드 인스턴스 간 최대 이벤트 전송 횟수는 **분당 1,000회**입니다. 또한 분당 최대 WorldInstanceSharedMemory 함수 호출 횟수도 1,000회로 제한되어 있습니다. 아래 스크립트는 분당 전송 제한(1,000회)을 초과하지 않도록 대기열(queue)을 관리하며, 제한 내에서만 이벤트 전송을 수행하는 로직을 구현합니다. > **참고:** `WorldInstanceService`의 이벤트 전송을 위한 구체 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=4 verbosity=2 [judge_reason] | 문서에 없는 API를 지어내지 않고 명확히 고지하며 제한 로직을 구현했으나, mLua의 wait/타이머 기반 비동기 처리보다는 os.clock 기반 동기 루프를 사용하고 OnUpdate의 delta 미사용 등 최적화 여지가 있어 도움과 정확성에 소폭 감점함 [source_doc] | # 제한 사항 **WorldInstanceService**를 사용할 때는 아래의 제한 사항을 염두에 두고 사용해야 합니다. #### 작명 규칙 WorldInstanceMemory와 공유 변수 이름은 아래 문자로만 작명할 수 있습니다. 최소 1글자 이상의 이름이어야 하며, 최대 100글자 이름일 수 있습니다. * **알파벳 대,소문자** * **숫자** * **공백** * **_, \\, -** #### 수량 및 용량 제한 * 한 월드 당 생성 가능한 WorldInstanceSharedMemory는 최대 **100개**입

[task] | instruction_following [pass] | ✅ 통과 [title] | WorldInstanceService [question] | SendEventRequestResultCode RequestSendEventToWorldInstanceAndWait 메서드의 시그니처와 동작 특징을 3문장 이내로 설명하세요. [answer] | `SendEventRequestResultCode RequestSendEventToWorldInstanceAndWait(EventType sendEvent, string targetWorldInstanceId)`는 지정된 월드 인스턴스에 이벤트를 전송하는 메서드입니다. 이 메서드는 [Yield] 속성을 가지며 실행 중 스크립트 실행을 중단하고 완료 시 `SendEventRequestResultCode`를 반환합니다. Event 객체에 Entity, EntityRef, Component, ComponentRef를 담아 전송하면 유 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 있는 메서드 시그니처, [Yield] 특성, 동작 방식, 주의사항을 정확하고 간결하게 3문장 이내로 요약했습니다. [source_doc] | on)** 이벤트를 모든 월드 인스턴스에 전송합니다. 수신자는 WorldInstanceService에 핸들러를 등록해 이벤트를 수신할 수 있습니다. 작업이 완료되면 결과 코드, 이벤트 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. Entity, EntityRef, Component, ComponentRef를 Event에 담아 전송하면 유효하지 않은 값이 전달될 수 있으므로 주의해야 합니다. - **SendEventRequestResultCode RequestSendEventToWorldInstanceA

[task] | instruction_following [pass] | ✅ 통과 [title] | WorldInstanceService [question] | RequestSendEventToAllWorldInstancesAsync 메서드를 사용하여 이벤트를 전송할 때 주의해야 하는 데이터 타입과, 공유 메모리 삭제 시 동기/비동기 메서드의 차이를 단계별 번호 목록으로 작성하세요. [answer] | 1. `RequestSendEventToAllWorldInstancesAsync` 메서드를 사용하여 이벤트를 전송할 때 주의해야 할 데이터 타입은 `Entity`, `EntityRef`, `Component`, `ComponentRef`입니다. 이러한 객체를 이벤트에 담아 전송하면 유효하지 않은 값이 전달될 수 있으므로 피해야 합니다. 2. 공유 메모리 삭제 시 동기/비동기 메서드의 차이는 다음과 같습니다. * **동기 메서드 (`DeleteSharedMemoryAndWait`)**: `SharedMemoryResultCod [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에 대한 핵심 정보(주의할 타입, 동기/비동기 차이)를 참고 문서와 정확히 일치하여 명확하게 답변했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | GetWorldInstanceInfoPagesAndWait 함수를 메이커에서 실행했을 때 왜 false와 nil을 반환하는 건가요? [answer] | `GetWorldInstanceInfoPagesAndWait` 함수는 현재 월드의 `WorldInstanceInfo`를 페이지 단위로 조회하는 기능이며, 이 조회 작업은 출시 환경(실제 서비스 중인 월드)에서만 지원됩니다. 메이커(개발/에디터 환경)에서는 실제 월드 인스턴스 정보 데이터를 조회할 수 있는 환경이 아니기 때문에, 이 함수를 실행하면 성공 여부를 나타내는 `false`와 조회 결과를 담을 객체인 `nil`을 반환하도록 설계되어 있습니다. 즉, 메이커에서 이 함수를 호출해도 실제 데이터를 얻을 수 없으며, 출시 환경으로 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 출시 환경 전용 동작 및 메이커에서의 반환 값(false, nil)을 정확히 설명하여 질문에 충실히 답하고 있다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | 공유 메모리를 비동기로 삭제하기 위해 DeleteSharedMemoryAsync를 사용할 때 콜백 함수로 전달해야 하는 인자의 타입은 무엇인가요? [answer] | `DeleteSharedMemoryAsync` 메서드의 콜백 함수(`callbackFunction`)는 **1개의 인자**를 받으며, 그 타입은 **`SharedMemoryResultCode`** 입니다. 즉, 콜백 함수의 시그니처는 `func<SharedMemoryResultCode>` 형태입니다. ```lua -- 예시: DeleteSharedMemoryAsync 사용 local function onMemoryDeleted(resultCode) -- resultCode: SharedMemoryResultCode [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 DeleteSharedMemoryAsync의 콜백 시그니처 func<SharedMemoryResultCode>를 정확히 설명하고, mLua 규칙에 부합하는 예시를 제공했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | _ScreenRecordService 를 사용하여 iOS 플랫폼에서는 ScreenAndGameAudioAndMic 모드를 지원하므로 해당 모드로 녹화를 시작하는 스크립트를 작성해줘 [answer] | `ScreenRecordService`와 `ScreenRecordMode`에 대한 API 정의(메서드 시그니처, 인자 등)가 제공된 참고 문서에 포함되어 있지 않습니다. 제공된 문서에는 플랫폼별 지원 여부 및 Fallback 규칙만 설명되어 있을 뿐, 녹화를 시작하기 위해 정확히 어떤 메서드(`Start`, `Record` 등)를 호출해야 하는지, 그리고 `_ScreenRecordService`의 구체적인 사용법이 명시되어 있지 않습니다. 따라서 제공된 정보만으로는 정확한 mLua 스크립트를 작성할 수 없습니다. `ScreenRe [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 제공된 문서에 메서드 시그니처가 없어 코드 작성이 불가함을 정확히 인지하고, 문서에 명시된 플랫폼별 지원 현황만 인용하여 환상적인 API 생성을 피했기 때문입니다. [source_doc] | # 주의사항 녹화 시 플랫폼별로 지원되지 않는 녹화 모드가 있습니다. Android의 경우 ScreenRecordMode.ScreenAndMic 선택 시 자동으로 ScreenAndGameAudioAndMic로 Fallback됩니다. 윈도우의 경우 ScreenRecordMode.ScreenAndGameAudioAndMic 선택 시 자동으로 ScreenAndMic로 Fallback됩니다. | 녹화 모드 | 설명 | Windows/macOS | iOS | Android | | :---: | :---: | :---: | :---: |

[task] | two_turn [pass] | ✅ 통과 [title] | ScreenRecordService [question] | 녹화 파일을 저장하는 StartRecordToFileAndWait()와 StartRecordToPhotoLibraryAndWait()의 저장 경로가 플랫폼별로 어떻게 다른지 비교해 주세요. [answer] | `StartRecordToFileAndWait()`와 `StartRecordToPhotoLibraryAndWait()`는 호출한 플랫폼과 저장 대상에 따라 저장 경로가 달라집니다. 플랫폼별 구체적인 저장 위치는 다음과 같습니다. **1. StartRecordToFileAndWait() 사용 시 저장 경로** 녹화 영상이 파일 보관함(또는 시스템 기본 동영상 폴더)에 저장됩니다. * **Windows:** `내 PC > 동영상 > MapleStory Worlds > 월드 ID > MapleStory Worlds_*.mp4` * [followup] | Windows와 Android 환경에서의 저장 경로만 구체적인 파일 구조와 함께 알려주세요. [followup_answer] | Windows와 Android 환경에서의 저장 경로는 호출한 함수에 따라 다음과 같이 구체적으로 나뉩니다. **1. Windows 환경** Windows에서는 `StartRecordToFileAndWait()`와 `StartRecordToPhotoLibraryAndWait()` 모두 동일한 경로에 저장됩니다. (Windows/Mac에서는 `StartRecordToFileAndWait()` 호출 시 내부적으로 `StartRecordToPhotoLibraryAndWait()`가 대신 실행되기 때문입니다.) * **경로:** `내 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 플랫폼별 저장 경로와 함수 동작 방식을 정확하고 명확하게 비교하여 제공했습니다. [source_doc] | 화면 녹화 기능을 제공합니다. \n\n플랫폼별로 지원하는 녹화 모드(ScreenRecordMode)가 다릅니다. Android 환경에서는 ScreenAndGameAudioAndMic 모드로 녹화되고, Windows 환경에서는 ScreenAndMic 모드 녹화됩니다. 환경에 맞지 않는 모드를 선택하면 지원하는 녹화 모드로 화면을 녹화합니다. # Methods - **string FinishRecordAndWait() [ClientOnly] [Yield]** 녹화를 종료합니다. 녹화 파일 생성을 완료하면 저장 경로를 반환합니다.

[task] | instruction_following [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceExcludedEvent 가 발생하는 조건과 대상 월드 인스턴스를 3 문장 이내로 설명하세요. [answer] | 월드 서버가 은퇴 상태가 되면 해당 이벤트가 발생합니다. 발생 대상은 해당 은퇴 상태의 월드 서버에 속한 월드 인스턴스입니다. 이 조건과 대상 관계가 WorldInstanceExcludedEvent의 발생 기준입니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 WorldInstanceExcludedEvent 설명과 정확히 일치하며, 요구된 3문장 이내로 명확하게 답변했습니다. [source_doc] | # Events - **WorldInstanceExcludedEvent** 월드 서버가 은퇴 상태가 되면 해당 월드 서버에 속한 월드 인스턴스에서 발생하는 이벤트입니다. # Examples #### ETag ETag를 사용하는 예제입니다. ```lua local code, mem = _WorldInstanceService:GetSharedMemory("memname") -- current.Info.ETag에는 최신 ETag가 담겨 있습니다. local current = mem:GetVariableAndWait("v

[task] | single_turn [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | ConnectEvent 메서드에서 key 인자와 eventType 인자를 사용할 때 각각 어떤 차이가 있으며 언제 어떤 방식을 선택해야 하나요? [answer] | `ConnectEvent` 메서드는 `ScreenRecordService`에서 특정 이벤트가 발생했을 때 해당 핸들러 함수를 호출하도록 연결하는 역할을 합니다. 제공된 문서에 따르면 이 메서드는 두 가지 오버로드(동일한 이름의 메서드가 인자 타입에 따라 달라지는 형태)를 제공합니다. 두 방식의 차이와 선택 기준은 다음과 같습니다. ### 1. 인자 타입에 따른 차이 * **`string key` 인자 사용 시:** * **방식:** `ConnectEvent(string key, IScriptFunction even [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 '컴파일 시점 타입 체크' 등 C# 기반 설명을 mLua(Lua 기반)에 적용했고, 문서에 없는 가상 이벤트 예시를 코드 블록으로 제시하여 사실성(correctness)이 낮으나, API 서명 자체는 정확히 인용하여 도움 수준은 중간입니다. [source_doc] | - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지

[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceService의 공유 메모리 관련 함수에서 DeleteSharedMemoryAndWait와 ReleaseSharedMemoryAndWait의 동작 차이가 무엇인가요? [answer] | `DeleteSharedMemoryAndWait`와 `ReleaseSharedMemoryAndWait`의 가장 큰 차이는 **공유 메모리의 삭제 방식**입니다. 1. **DeleteSharedMemoryAndWait (강제 삭제)** - 해당 공유 메모리를 **현재 사용 중인 월드 인스턴스가 있더라도 무조건 삭제**합니다. - 다른 인스턴스가 사용 중이어도 삭제 처리가 진행되므로, 데이터 손실이나 예기치 않은 오류가 발생할 수 있어 신중하게 사용해야 합니다. 2. **ReleaseSharedMemoryAndWait ( [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 설명과 일치하여 두 함수의 차이점을 명확히 설명하고, 올바른 mLua 문법으로 예제를 제시했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | _ScreenRecordService 를 사용하여 Windows 플랫폼에서는 ScreenAndGameAudioAndMic 모드가 지원되지 않으므로 ScreenAndMic 모드로 Fallback 처리하는 로직을 구현하는 스크립트를 작성해줘 [answer] | Windows 플랫폼에서 `ScreenRecordMode.ScreenAndGameAudioAndMic` 모드는 지원되지 않으며, 이를 선택하면 자동으로 `ScreenRecordMode.ScreenAndMic`로 Fallback되는 것이 시스템의 기본 동작입니다. 따라서 스크립트에서 추가적인 Fallback 로직(예: 모드 변경 시도)을 작성할 필요 없이, 단순히 해당 모드로 녹화를 시작하면 됩니다. Windows 환경에서는 시스템이 자동으로 `ScreenAndMic` 모드로 전환하여 녹화를 진행합니다. 참고로, Android에서는 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 시스템의 자동 Fallback 동작을 정확히 설명하여 불필요한 수동 로직을 방지하는 점과 Android 주의사항을 언급한 점은 유용하지만, 문서에 없는 `_ScreenRecordService`의 `StartRecording`/`StopRecording` 메서드와 `ScreenRecordMode` 열거형을 지어내어 정확도가 낮습니다. [source_doc] | # 주의사항 녹화 시 플랫폼별로 지원되지 않는 녹화 모드가 있습니다. Android의 경우 ScreenRecordMode.ScreenAndMic 선택 시 자동으로 ScreenAndGameAudioAndMic로 Fallback됩니다. 윈도우의 경우 ScreenRecordMode.ScreenAndGameAudioAndMic 선택 시 자동으로 ScreenAndMic로 Fallback됩니다. | 녹화 모드 | 설명 | Windows/macOS | iOS | Android | | :---: | :---: | :---: | :---: |

[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | RequestSendEventToAllWorldInstancesAndWait로 이벤트를 보낼 때 Entity나 Component를 Event에 담아 전달하면 왜 문제가 되나요? [answer] | `RequestSendEventToAllWorldInstancesAndWait`로 이벤트를 보낼 때 `Entity`, `EntityRef`, `Component`, `ComponentRef`를 이벤트에 담아 전달하면 **유효하지 않은 값이 수신자에게 전달될 수 있기 때문**입니다. 월드 인스턴스 간에는 네트워크를 통해 통신이 이루어지므로, 특정 월드 인스턴스에 존재하는 `Entity`나 `Component` 객체 자체는 다른 월드 인스턴스에서 직접 참조할 수 있는 실시간 메모리 포인터가 아닙니다. 이러한 참조형 객체를 직렬화하여 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 주의사항을 정확히 인용하고, 그 이유와 해결책을 논리적으로 설명하여 질문에 충실하게 답변했습니다. [source_doc] | 월드 인스턴스 관련 기능을 제공합니다. # Properties - **string WorldInstanceId [ReadOnly]** 현재 월드 인스턴스의 Id입니다. # Methods - **SharedMemoryResultCode DeleteSharedMemoryAndWait(string name) [ServerOnly] [Yield]** 공유 메모리를 삭제합니다. 해당 공유 메모리를 사용 중인 월드 인스턴스가 있더라도 삭제됩니다. 수행하는 동안 스크립트 실행을 중단합니다. - **void DeleteSharedM

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