[task] | single_turn [pass] | ✅ 통과 [title] | TextInputSubmitEditorEvent [question] | TextGUIRendererInputComponent 와 TextInputComponent 중 어떤 컴포넌트를 사용해야 이 이벤트가 발생하나요? [answer] | `TextInputSubmitEditorEvent`는 `TextGUIRendererInputComponent`와 `TextInputComponent` 두 가지 컴포넌트 모두에 의해 발생할 수 있습니다. 따라서 두 컴포넌트 중 어느 하나를 사용하더라도, 사용자가 입력을 마치고 Enter 키를 누르면 해당 이벤트가 트리거됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 두 컴포넌트가 모두 해당 이벤트를 발생시킨다는 내용을 정확하고 간결하게 답변했습니다. [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Editor&color=c4a484" alt="custom" title="Editor에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/
[task] | code [pass] | ✅ 통과 [title] | WorldInstanceService [question] | `_WorldInstanceService:GetSharedMemory`로 공유 메모리를 얻은 후, `GetVariableAndWait`로 현재 ETag를 확인하고 `SharedVariableKeyInfo`를 생성하여 `UpdateVariableAndWait`로 값을 수정하는 과정에서 `SharedMemoryResultCode.PreconditionFailed` 오류가 발생할 경우 에러를 처리하는 공유 변수 업데이트 스크립트를 작성해줘. [answer] | `_WorldInstanceService:GetSharedMemory`로 공유 메모리를 가져온 뒤, `GetVariableAndWait`로 현재 변수 정보(ETag 포함)를 확인합니다. 이 ETag를 `SharedVariableKeyInfo`에 담아 `UpdateVariableAndWait`를 호출하면, ETag가 일치할 때만 값이 수정됩니다. 수정 실패 시 `updated.Code`가 `SharedMemoryResultCode.PreconditionFailed`인지 확인하여 에러를 처리할 수 있습니다. ```lua Method: [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하여 요청한 에러 처리 로직을 포함하고 있으며, mLua 문법과 API 사용이 모두 정확합니다. [source_doc] | # Events - **WorldInstanceExcludedEvent** 월드 서버가 은퇴 상태가 되면 해당 월드 서버에 속한 월드 인스턴스에서 발생하는 이벤트입니다. # Examples #### ETag ETag를 사용하는 예제입니다. ```lua local code, mem = _WorldInstanceService:GetSharedMemory("memname") -- current.Info.ETag에는 최신 ETag가 담겨 있습니다. local current = mem:GetVariableAndWait("v
[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | ScreenRecordService 의 StartRecordToFileAndWait() 를 ScreenAndMic 모드로 호출하여 녹화를 시작하고, finishRecordCallback 에 저장 경로를 로그로 출력하는 함수를 전달하며, 녹화 중 GetMicrophoneIndexForRecording() 으로 현재 사용 중인 마이크 인덱스를 확인하는 스크립트를 작성해줘 [answer] | 요청하신 `ScreenRecordService`의 메서드와 `ScreenRecordMode`를 사용하여 녹화를 시작하고, 완료 시 저장 경로를 로그로 출력하며, 녹화 중 현재 마이크 인덱스를 확인하는 스크립트입니다. `StartRecordToFileAndWait()`는 `[Yield]` 메서드이므로 콜백 함수 내에서 비동기 처리가 필요하거나, 메인 로직에서 `wait()` 또는 다른 비동기 처리를 고려해야 할 수 있으나, 제공된 문서에 `wait` 또는 비동기 대기 메서드에 대한 명시적 설명이 없으므로, 표준 mLua 패턴에 맞춰 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=3 verbosity=3 [judge_reason] | StartRecordToFileAndWait가 Yield 메서드임에도 불구하고 콜백이 완료된 후 실행되어야 할 로직(마이크 인덱스 확인 등)을 동기적으로 호출하는 구조적 오류가 있으며, 문서에 없는 inputService 이벤트 핸들러를 지어냈습니다. [source_doc] | 화면 녹화 기능을 제공합니다. \n\n플랫폼별로 지원하는 녹화 모드(ScreenRecordMode)가 다릅니다. Android 환경에서는 ScreenAndGameAudioAndMic 모드로 녹화되고, Windows 환경에서는 ScreenAndMic 모드 녹화됩니다. 환경에 맞지 않는 모드를 선택하면 지원하는 녹화 모드로 화면을 녹화합니다. # Methods - **string FinishRecordAndWait() [ClientOnly] [Yield]** 녹화를 종료합니다. 녹화 파일 생성을 완료하면 저장 경로를 반환합니다.
[task] | code [pass] | ✅ 통과 [title] | WorldInstanceService [question] | `UserService`의 `HandleUserEnterEvent`에서 유저 닉네임을 담아 `MyUserEnterEvent`를 생성하고, `_WorldInstanceService:RequestSendEventToAllWorldInstancesAndWait`로 모든 월드 인스턴스에 전송하며, 수신 측 `WorldInstanceService` 핸들러에서 현재 `WorldInstanceId`와 비교하여 로컬 인스턴스 진입 여부에 따라 다른 로그를 출력하는 스크립트를 작성해줘. [answer] | 요청하신 기능은 `UserService`의 `HandleUserEnterEvent` 이벤트 핸들러에서 유저 닉네임을 추출하여 커스텀 이벤트 `MyUserEnterEvent`에 담아 `_WorldInstanceService:RequestSendEventToAllWorldInstancesAndWait`로 전송하고, 수신 측 `WorldInstanceService` 핸들러에서 현재 월드 인스턴스 ID와 비교하여 로그를 출력하는 방식으로 구현됩니다. 아래는 해당 로직을 구현한 mLua 스크립트입니다. ```lua Event Handle [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 재현하여 요청된 기능을 구현했으며, mLua 문법 및 API 사용이 모두 정상이므로 감점 사유가 없습니다. [source_doc] | # Events - **WorldInstanceExcludedEvent** 월드 서버가 은퇴 상태가 되면 해당 월드 서버에 속한 월드 인스턴스에서 발생하는 이벤트입니다. # Examples #### ETag ETag를 사용하는 예제입니다. ```lua local code, mem = _WorldInstanceService:GetSharedMemory("memname") -- current.Info.ETag에는 최신 ETag가 담겨 있습니다. local current = mem:GetVariableAndWait("v
[task] | two_turn [pass] | ✅ 통과 [title] | TextInputSubmitEvent [question] | TextInputSubmitEvent의 기본 구조와 Client 공간 발생 조건은 무엇인가요? [answer] | `TextInputSubmitEvent`는 사용자가 텍스트 입력을 완료하고 Enter 키를 눌렀을 때 발생하며, 항상 **Client** 공간에서 트리거됩니다. 이 이벤트는 다음 두 컴포넌트가 부착된 엔티티에서 발생합니다. * `TextGUIRendererInputComponent` * `TextInputComponent` 이벤트 핸들러를 통해 접근할 수 있는 프로퍼티는 `Text` 하나뿐이며, 이는 `string` 타입으로 사용자가 입력한 텍스트 내용을 전달합니다. ### 기본 구조 및 코드 예시 `TextInputSubm [followup] | TextGUIRendererInputComponent와 TextInputComponent 중 어떤 컴포넌트에 Event Handler를 등록해야 하며, HandleTouchEvent와 다른 점은 무엇인가요? [followup_answer] | `TextInputSubmitEvent`는 `TextGUIRendererInputComponent`와 `TextInputComponent` 모두에 의해 발생하므로, 이벤트가 발생하도록 설정된 해당 컴포넌트가 부착된 엔티티의 스크립트에 Event Handler를 등록해야 합니다. 즉, 두 컴포넌트 중 어느 쪽을 사용하든, 그 컴포넌트가 붙은 엔티티의 스크립트에서 `[self]` 태그를 사용하여 핸들러를 정의합니다. `HandleTouchEvent`와의 차이점은 다음과 같습니다. 1. **발생 조건 및 트리거**: * [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서와 시스템 규칙에 기반하여 이벤트 발생 조건, 컴포넌트, 프로퍼티 및 핸들러 구조를 정확하고 간결하게 설명했습니다. [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/
[task] | single_turn [pass] | ❌ 탈락 [title] | TextInputSubmitEditorEvent [question] | 이 이벤트는 Editor 공간에서만 발생한다고 하는데, 다른 공간에서도 사용할 수 있나요? [answer] | 제공된 문서에 따르면, `TextInputSubmitEditorEvent`는 **Editor 공간에서만** 발생합니다. 문서 상의 명세와 예제 코드에서 해당 이벤트가 발생하는 컴포넌트(`TextGUIRendererInputComponent`, `TextInputComponent`)에 모두 **Editor** 공간 배지가 표시되어 있으며, 이벤트 이름 자체에 `Editor` 접미사가 붙어 있는 점을 고려할 때, 다른 공간(예: Server, Client 등)에서는 이 특정 이벤트 핸들러를 사용할 수 없습니다. 따라서 다른 공간에서 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 'TextInputEndEditEvent'를 예시로 들며 존재를 암시하여 정확도에서 감점되었으나, Editor 전용이라는 핵심 사실은 올바르게 답변함 [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Editor&color=c4a484" alt="custom" title="Editor에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/
[task] | single_turn [pass] | ❌ 탈락 [title] | RegexOption [question] | IgnoreCase 옵션을 사용했는데 대소문자 구분이 여전히 되는 이유는 무엇인가요? [answer] | IgnoreCase 옵션을 사용했는데도 대소문자 구분이 여전히 되는 주된 이유는 **정규식 패턴 자체에 대소문자 구분을 명시적으로 지정하는 플래그가 포함되어 있기 때문**입니다. `RegexOption.IgnoreCase`는 정규식 엔진의 기본 동작을 변경하는 옵션이지만, 패턴 문자열 안쪽에 대소문자 구분을 강제로 활성화하거나 비활성화하는 인라인 플래그(예: `(?i)` 또는 `(?-i)`)가 존재하면, 해당 플래그가 옵션을 덮어쓰거나 영향을 줄 수 있습니다. ### 해결 방법 1. **패턴 내 인라인 플래그 확인 및 제거* [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=3 complexity=2 verbosity=3 [judge_reason] | 참고 문서에 없는 Regex 생성자, Matches 메서드, 인라인 플래그(?i) 동작을 지어내어 사실 오류가 심각함 [source_doc] | 정규 표현식에 필요한 옵션을 지정할 수 있습니다. # Members | 이름 | 값 | 설명 | |---|---|---| | None | 0 | 옵션을 설정하지 않습니다. | | IgnoreCase | 1 | 대소문자를 구분하지 않고 일치 항목을 찾도록 지정합니다. | | Multiline | 2 | 여러 줄 모드입니다. 여러 줄로 구성된 문자열을 처리할 수 있도록 지정합니다. | | ExplicitCapture | 4 | (?...) 형식을 명시적으로 명명하거나 번호가 매겨진 그룹만 유효한 캡처되도록 지정합니다. | | Sin
[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | ScreenRecordService 의 GetMicrophoneDevicesAndWait() 로 사용 가능한 마이크 목록을 조회한 후, SetMicrophoneIndexForRecording() 을 통해 특정 인덱스의 마이크를 선택하고, IsRecording() 이 true 가 되는 동안 RemainRecordTime() 을 매 초마다 확인하는 스크립트를 작성해줘 [answer] | 요청하신 `ScreenRecordService`의 마이크 목록 조회, 마이크 선택, 그리고 녹화 중 남은 시간 확인 로직을 수행하는 스크립트입니다. **주의사항:** 1. `ScreenRecordService`의 모든 메서드는 `[ClientOnly]` 속성을 가지므로, 해당 스크립트 컴포넌트는 클라이언트 공간에서 실행되어야 합니다. 2. `StartRecordToFileAndWait` 또는 `StartRecordToPhotoLibraryAndWait` 호출 없이 `IsRecording()`이 `true`가 될 수 없으므로, 실제 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | mLua의 C#풍 선언부와 Lua 본문 문법 혼용 오류(예: `if ... then` 사용)가 있고, 문서에 없는 `InputService`/`KeyboardKey` API를 지어냈으나 핵심 요구사항인 마이크 조회/선택/시간 모니터링 로직은 잘 구현함 [source_doc] | 화면 녹화 기능을 제공합니다. \n\n플랫폼별로 지원하는 녹화 모드(ScreenRecordMode)가 다릅니다. Android 환경에서는 ScreenAndGameAudioAndMic 모드로 녹화되고, Windows 환경에서는 ScreenAndMic 모드 녹화됩니다. 환경에 맞지 않는 모드를 선택하면 지원하는 녹화 모드로 화면을 녹화합니다. # Methods - **string FinishRecordAndWait() [ClientOnly] [Yield]** 녹화를 종료합니다. 녹화 파일 생성을 완료하면 저장 경로를 반환합니다.
[task] | single_turn [pass] | ❌ 탈락 [title] | TextInputSubmitEditorEvent [question] | TextInputSubmitEditorEvent 를 처리할 때 Text 프로퍼티에 어떤 값이 들어오는지 확인하려면 어떻게 해야 하나요? [answer] | `TextInputSubmitEditorEvent`는 사용자가 텍스트 입력을 마치고 Enter 키를 눌렀을 때 발생하며, 이벤트 객체의 `Text` 프로퍼티에 입력된 문자열 값이 들어옵니다. 이 값을 확인하려면 해당 이벤트를 처리하는 Event Handler를 작성하고, 이벤트 인자로 전달되는 객체의 `Text` 속성을 읽어 `log()` 함수로 출력하면 됩니다. 아래는 `TextGUIRendererInputComponent`를 사용하는 예제입니다. ```lua Property: [None] TextGUIRendererInpu [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 컴포넌트 프로퍼티(Text, PlaceHolder)와 잘못된 컴포넌트 선언 문법을 지어내어 정확도가 낮으나, 질문의 핵심인 event.Text 확인 방법은 올바르게 설명함. [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Editor&color=c4a484" alt="custom" title="Editor에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/
[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | RequestSendEventToAllWorldInstancesAndWait로 이벤트를 보낼 때 모든 월드 인스턴스에서 수신하는지, 아니면 발신 인스턴스만 포함되는지 동작 차이가 어떻게 되나요? [answer] | `RequestSendEventToAllWorldInstancesAndWait`를 사용하면 **모든 월드 인스턴스**에서 해당 이벤트를 수신합니다. 발신 인스턴스도 포함되며, 수신 측에서 현재 월드 인스턴스 ID와 비교하여 발신 인스턴스인지 다른 인스턴스인지 구별하여 처리하도록 설계되어 있습니다. 참고 문서의 `RequestSendEvent` 예제를 보면, 유저가 입장했을 때 모든 월드 인스턴스에 이벤트를 보내고, 각 인스턴스의 이벤트 핸들러에서 `_WorldInstanceService.WorldInstanceId`를 비교하여 발 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제 코드와 설명을 정확히 인용하여 발신 인스턴스 포함 여부를 명확히 답변했으며, 추가적인 오류나 과장이 없습니다. [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] | ScrollPositionChangedEvent [question] | GridViewComponent와 ScrollLayoutGroupComponent 중 어느 쪽이든 붙여야만 이 이벤트가 발생한다는 점은 어떤 특징을 의미하나요? [answer] | `ScrollPositionChangedEvent`가 발생하려면 UI Entity에 `GridViewComponent`와 `ScrollLayoutGroupComponent` 중 **적어도 하나**가 반드시 존재해야 합니다. 이는 해당 이벤트가 단순한 UI 요소가 아니라, **스크롤 구조를 직접 관리하는 컴포넌트**가 내부적으로 스크롤 위치를 추적하고 변경을 감지했을 때에만 트리거된다는 특징을 의미합니다. 즉, 단순히 스크롤바를 시각적으로만 구현한 경우나, 스크롤 가능한 컴포넌트가 없는 일반 UI Entity에서는 스크롤 위치가 바 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 발생 조건과 Client 공간 제약, 프로퍼티를 정확히 해석하고 표준 구문에 맞는 예시를 제공하여 질문에 충실히 답했습니다. [source_doc] | 스크롤이 가능한 UI Entity에서 스크롤 위치가 변경될 때 발생하는 이벤트입니다. UI Entity에 ScrollLayoutGroupComponent 또는 GridViewComponent가 있어야 이벤트가 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * GridViewComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." da
[task] | instruction_following [pass] | ✅ 통과 [title] | UIModeTypeChangedEvent [question] | UIModeTypeChangedEvent를 초기화하는 코드만 출력하고 설명은 주석으로만 작성하세요. [answer] | ```lua -- UIModeTypeChangedEvent를 UIModeType.None으로 초기화합니다. local event = UIModeTypeChangedEvent(UIModeType.None) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 생성자 시그니처와 일치하며, 요청대로 코드를 주석 설명과 함께 간결하게 제공했습니다. [source_doc] | UITransformComponent의 UIMode가 바뀌었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITransformComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **UIModeType UIModeType** UI 엔티티가 그려지
[task] | instruction_following [pass] | ✅ 통과 [title] | UIModeTypeChangedEvent [question] | UIModeTypeChangedEvent의 발생 조건과 프로퍼티를 3문장 이내로 설명하세요. [answer] | UITransformComponent의 UIMode가 변경될 때 클라이언트 공간에서 UIModeTypeChangedEvent가 발생합니다. 이 이벤트는 현재 UI 엔티티가 그려지는 위치를 나타내는 UIModeType 프로퍼티를 포함합니다. 기본값은 UIModeType.None이며, 지정한 값으로 초기화할 수도 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 발생 조건, 프로퍼티 설명, 기본값 및 생성자 정보를 3문장 이내로 정확하고 간결하게 요약했습니다. [source_doc] | UITransformComponent의 UIMode가 바뀌었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITransformComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **UIModeType UIModeType** UI 엔티티가 그려지
[task] | code [pass] | ❌ 탈락 [title] | WorldInstanceService [question] | 월드 인스턴스 내 모든 유저의 입장 이벤트를 수신하여 특정 유저 ID를 제외한 나머지 유저들에게 알림 메시지를 전송하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 **월드 인스턴스(WorldInstance) 관련 서비스나 API가 정의되어 있지 않습니다.** 문서 목록에는 `WorldInstanceService`라는 항목이 제목으로만 언급되어 있으나, 실제 API 정의, 메서드, 이벤트 정보가 포함되어 있지 않습니다. 또한, **유저에게 알림 메시지(대화상자, 화면 표시 등)를 전송하는 API** (예: `SendMessage`, `ShowDialog` 등)도 제공된 문서와 예제 코드에 존재하지 않습니다. `UserService` 예제에는 `event.UserId` 접 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 구체적인 API가 부재함을 정확히 지적하고, 시스템 규칙에 기반한 제한적인 예시를 제공하여 사실 오류 없이 질문의 맥락을 잘 처리했습니다. [source_doc] | * PlayerComponent * Division * SharedMemoryResultCode * UserEnterEvent * SharedVariableInfo * SharedVariableKeyInfo * UserService * [월드 인스턴스 통신](/docs?postId=999) * [인스턴스 맵 만들기](/docs?postId=540) * [특정 월드 인스턴스로 워프하기](/docs?postId=1122)
[task] | code [pass] | ✅ 통과 [title] | WorldInstanceService [question] | 월드 인스턴스에 새로 진입한 유저의 PlayerComponent 를 조회하여 해당 유저의 Division 정보와 SharedMemoryResultCode 를 기반으로 초기화 처리를 수행하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `PlayerComponent`, `Division`, `SharedMemoryResultCode` 등의 항목 이름만 나열되어 있으며, 구체적인 **API 시그니처(함수 이름, 파라미터, 반환값)**나 **프로퍼티 정의**가 포함되어 있지 않습니다. 따라서 `PlayerComponent`에서 `Division`과 `SharedMemoryResultCode`를 조회하는 정확한 함수나 프로퍼티 이름을 알 수 없으므로, 실제 동작하는 코드를 작성할 수 없습니다. 참고 문서에 따르면 `UserService`의 `H [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 API 상세가 부재함을 정확히 인지하고, 지어내지 않은 채로 가능한 범위(서비스 호출 등)만 제시하며 한계를 명확히 설명하여 정확하고 유용합니다. [source_doc] | * PlayerComponent * Division * SharedMemoryResultCode * UserEnterEvent * SharedVariableInfo * SharedVariableKeyInfo * UserService * [월드 인스턴스 통신](/docs?postId=999) * [인스턴스 맵 만들기](/docs?postId=540) * [특정 월드 인스턴스로 워프하기](/docs?postId=1122)
[task] | instruction_following [pass] | ✅ 통과 [title] | UIModeTypeChangedEvent [question] | 이 이벤트의 생성자 시그니처와 기본 인자 값을 표로 정리해서 출력하세요. [answer] | `UIModeTypeChangedEvent` 생성자 시그니처와 기본 인자 값은 다음과 같습니다. | 생성자 시그니처 | 기본 인자 값 | | :--- | :--- | | `UIModeTypeChangedEvent(UIModeType uiModeType)` | `UIModeType.None` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 생성자 시그니처와 기본 인자 값을 정확하고 간결하게 표로 정리하여 질문을 완벽하게 충족했습니다. [source_doc] | UITransformComponent의 UIMode가 바뀌었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITransformComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **UIModeType UIModeType** UI 엔티티가 그려지
[task] | two_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | 월드 인스턴스 간 이벤트 전송 시 주의해야 할 값의 종류와 그 이유를 설명해 주세요 [answer] | 월드 인스턴스 간 이벤트 전송 시 주의해야 할 값의 종류는 **Entity**, **EntityRef**, **Component**, **ComponentRef** 입니다. 이 값들을 이벤트 객체에 담아 전송하면 **유효하지 않은 값**이 수신측에 전달될 수 있기 때문에 주의해야 합니다. 이는 각 월드 인스턴스가 독립된 공간에 존재하므로, 다른 인스턴스에서 생성된 엔티티나 컴포넌트 참조가 현재 인스턴스에서는 접근 불가능하거나 잘못된 참조로 처리될 수 있기 때문입니다. [followup] | Entity나 Component를 이벤트에 담아 전송하면 왜 유효하지 않은 값이 전달될 수 있으며, 이를 피하기 위해 어떤 데이터를 대신 전송해야 하는가요? [followup_answer] | 참고 문서에는 Entity나 Component를 이벤트에 담아 전송하면 "유효하지 않은 값이 전달될 수 있으므로 주의해야 한다"고 명시되어 있지만, 그 구체적인 기술적 이유(예: 메모리 주소 불일치, 세리얼라이제이션 제한 등)나 이를 피하기 위해 **대신 전송해야 하는 구체적인 데이터 유형**(예: ID, 좌표, 이름 등)에 대한 설명은 포함되어 있지 않습니다. 따라서 문서에 근거하여 알 수 있는 정보는 다음과 같습니다: 1. **주의 대상:** `Entity`, `EntityRef`, `Component`, `Componen [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 주의할 값(Entity, EntityRef, Component, ComponentRef)과 그 이유(유효하지 않은 값 전달 가능)를 정확하고 간결하게 설명하였으며, 문서 내용과 일치합니다. [source_doc] | on)** 이벤트를 모든 월드 인스턴스에 전송합니다. 수신자는 WorldInstanceService에 핸들러를 등록해 이벤트를 수신할 수 있습니다. 작업이 완료되면 결과 코드, 이벤트 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. Entity, EntityRef, Component, ComponentRef를 Event에 담아 전송하면 유효하지 않은 값이 전달될 수 있으므로 주의해야 합니다. - **SendEventRequestResultCode RequestSendEventToWorldInstanceA
[task] | single_turn [pass] | ❌ 탈락 [title] | TextInputSubmitEditorEvent [question] | TextInputSubmitEditorEvent 를 직접 생성해서 전송할 수 있나요? [answer] | 아니요, `TextInputSubmitEditorEvent`를 직접 생성해서 전송할 수 없습니다. 참고 문서에 따르면 `TextInputSubmitEditorEvent`는 입력을 마치고 Enter 키를 눌렀을 때 발생하는 이벤트이며, 이 이벤트는 `TextGUIRendererInputComponent` 또는 `TextInputComponent` API에 의해 자동으로 발생합니다. 즉, 이 이벤트는 스크립트에서 수동으로 생성하거나 다른 엔티티로 전송하는 것이 아니라, 입력 컴포넌트의 사용자 조작에 반응하여 내부적으로 트리거되는 것입 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=2 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 'EntityPath' 타입과 '[entity: EntityPath]' 서비스 식별자를 지어냈으며, 문서에도 없는 'HandleTextInputSubmitEditorEvent' 메서드 이름을 언급하여 정확도가 낮습니다. [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Editor&color=c4a484" alt="custom" title="Editor에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/
[task] | code [pass] | ❌ 탈락 [title] | ScreenRecordService [question] | ScreenRecordService 의 StartRecordToPhotoLibraryAndWait() 를 호출하여 사진 갤러리에 저장되는 녹화를 시작하고, IsRecording() 상태가 변경될 때마다 남은 녹화 시간(RemainRecordTime) 을 화면에 표시하는 로직을 구현하는 스크립트를 작성해줘 [answer] | `ScreenRecordService`는 문서에 따르면 **ClientOnly** 서비스이며, `StartRecordToPhotoLibraryAndWait()`, `IsRecording()`, `RemainRecordTime()` 메서드가 모두 클라이언트에서만 동작합니다. 따라서 해당 로직은 `[client only]` 스크립트 컴포넌트로 구현해야 합니다. 참고로, `ScreenRecordService`는 **이벤트를 발행하지 않습니다** (문서에 Event Handler 정의 없음). 따라서 `IsRecording()` 상태가 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=3 verbosity=3 [judge_reason] | ScreenRecordMode 상수와 UI 컴포넌트 API를 지어내거나 추측하여 사용했으며, OnUpdate에서 매 프레임 log를 출력하도록 한 비효율적인 로직을 제시했지만, 폴링 방식의 필요성은 정확히 짚었다. [source_doc] | 화면 녹화 기능을 제공합니다. \n\n플랫폼별로 지원하는 녹화 모드(ScreenRecordMode)가 다릅니다. Android 환경에서는 ScreenAndGameAudioAndMic 모드로 녹화되고, Windows 환경에서는 ScreenAndMic 모드 녹화됩니다. 환경에 맞지 않는 모드를 선택하면 지원하는 녹화 모드로 화면을 녹화합니다. # Methods - **string FinishRecordAndWait() [ClientOnly] [Yield]** 녹화를 종료합니다. 녹화 파일 생성을 완료하면 저장 경로를 반환합니다.
[task] | single_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | 월드 인스턴스 간에 유저 입장 정보를 공유하기 위해 RequestSendEvent를 사용할 때, 이벤트 데이터에 어떤 필드를 포함시켜야 각 인스턴스에서 올바르게 처리할 수 있나요? [answer] | 월드 인스턴스 간에 유저 입장 정보를 공유하기 위해 `RequestSendEvent`를 사용할 때, 수신 측 월드 인스턴스가 이벤트를 올바르게 처리하려면 이벤트 데이터에 **발신 월드 인스턴스 ID(`WorldInstanceId`)** 와 **유저 닉네임(`Nickname`)** 을 포함시켜야 합니다. 수신 측 이벤트 핸들러에서 `_WorldInstanceService.WorldInstanceId`를 조회하여 발신 측의 `WorldInstanceId`와 비교함으로써, 해당 유저가 "현재 인스턴스"에 입장했는지 "다른 인스턴스"에 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 RequestSendEvent 예제와 완전히 일치하며, 질문한 필수 필드(WorldInstanceId, Nickname)와 처리 로직을 명확하게 설명했습니다. [source_doc] | # Events - **WorldInstanceExcludedEvent** 월드 서버가 은퇴 상태가 되면 해당 월드 서버에 속한 월드 인스턴스에서 발생하는 이벤트입니다. # Examples #### ETag ETag를 사용하는 예제입니다. ```lua local code, mem = _WorldInstanceService:GetSharedMemory("memname") -- current.Info.ETag에는 최신 ETag가 담겨 있습니다. local current = mem:GetVariableAndWait("v
[task] | two_turn [pass] | ✅ 통과 [title] | WorldInstanceService [question] | `GetWorldInstanceInfoPagesAndWait`와 `GetWorldInstanceInfoPagesAsync` 함수는 출시 환경(ReleaseOnly)에서만 동작한다고 했는데, 메이커(Maker) 환경에서 이 함수들을 호출했을 때 반환되는 값은 무엇이며, 런타임 오류를 방지하기 위한 가드 코드 예시를 보여주세요. [answer] | `GetWorldInstanceInfoPagesAndWait`와 `GetWorldInstanceInfoPagesAsync`는 출시 환경(Release)에서만 실제 데이터를 조회하도록 설계되어 있습니다. 메이커(Maker) 환경에서 이 함수들을 호출하면 다음과 같은 값이 반환됩니다. 1. **`GetWorldInstanceInfoPagesAndWait`**: `false`와 `nil`을 반환합니다. 2. **`GetWorldInstanceInfoPagesAsync`**: 콜백 함수(`callbackFunction`)에 `fals [followup] | `RequestSendEventToAllWorldInstancesAndWait`로 이벤트를 모든 월드 인스턴스에 전송할 때, Entity나 Component를 Event에 담아 전송하면 안 되는 이유와, 대신 전달할 수 있는 안전한 데이터 타입(예: string, number)을 활용한 코드 예제를 작성해 주세요. [followup_answer] | `RequestSendEventToAllWorldInstancesAndWait`로 이벤트를 전송할 때 Entity, EntityRef, Component, ComponentRef를 Event에 담아 전송하면 안 되는 이유는 **유효하지 않은 값이 전달될 수 있기 때문**입니다. 월드 인스턴스는 서로 독립적인 서버 프로세스에서 실행될 수 있으므로, 한 인스턴스에 존재하는 Entity나 Component의 참조는 다른 인스턴스에서는 존재하지 않거나 잘못된 주소를 가리키게 되어 런타임 오류나 예상치 못한 동작을 일으킬 수 있습니다. 대 [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] | code [pass] | ✅ 통과 [title] | WorldInstanceService [question] | WorldInstanceService의 RequestSendEventToWorldInstanceAndWait 메서드를 사용하여 지정된 targetWorldInstanceId로 이벤트를 전송하고, 반환된 SendEventRequestResultCode 에 따라 성공/실패 여부를 log()로 기록하는 스크립트를 작성해줘. [answer] | ```lua Method: [server only] void SendToWorldInstance() { -- 전송할 대상 월드 인스턴스 ID를 지정합니다. local targetWorldInstanceId = "your_target_world_instance_id" -- 전송할 이벤트 객체를 생성합니다. (EventType은 실제 프로젝트에서 정의된 타입으로 대체해야 합니다) local eventToSend = CustomEventType() -- RequestSendEventT [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 메서드 시그니처와 사용법이 문서와 일치하나, 문서에 없는 열거형 값(SendEventRequestResultCode.Success)을 가정하여 사용했고 이는 지어낸 사실에 해당하지만 코드 주석으로 한계를 명시하여 부분 점수를 부여함. [source_doc] | on)** 이벤트를 모든 월드 인스턴스에 전송합니다. 수신자는 WorldInstanceService에 핸들러를 등록해 이벤트를 수신할 수 있습니다. 작업이 완료되면 결과 코드, 이벤트 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. Entity, EntityRef, Component, ComponentRef를 Event에 담아 전송하면 유효하지 않은 값이 전달될 수 있으므로 주의해야 합니다. - **SendEventRequestResultCode RequestSendEventToWorldInstanceA
[task] | code [pass] | ❌ 탈락 [title] | WorldInstanceService [question] | 월드 인스턴스 내 특정 유저가 지정된 경로로 워프하도록 명령을 내리고 워프 완료 후 해당 유저의 위치 정보를 확인하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `WorldInstanceService`에 대한 구체적인 API(함수명, 파라미터)가 나열되어 있지 않으며, "특정 월드 인스턴스로 워프하기"라는 제목의 문서 링크만 존재합니다. 또한, `TeleportService`의 `TeleportToEntityPath` 함수가 예제 코드에서 언급되기는 하지만, **워프 완료 후 위치 정보를 확인하는 콜백 함수나 이벤트 핸들러에 대한 설명은 제공된 문서에 포함되어 있지 않습니다.** 따라서 요청하신 "워프 완료 후 위치 정보 확인" 로직을 구현하는 정확한 API를 제공된 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 API가 없어 구현 불가함을 정확히 지적했으나, 문서에 없는 RateLimitService를 예제에 포함시켰고, 워프 완료 후 위치 조회는 단순히 TransformComponent 접근으로 해결 가능한데 '구현 불가'로 단정하여 도움이 제한적임. [source_doc] | * PlayerComponent * Division * SharedMemoryResultCode * UserEnterEvent * SharedVariableInfo * SharedVariableKeyInfo * UserService * [월드 인스턴스 통신](/docs?postId=999) * [인스턴스 맵 만들기](/docs?postId=540) * [특정 월드 인스턴스로 워프하기](/docs?postId=1122)
[task] | code [pass] | ✅ 통과 [title] | UITouchReceiveComponent [question] | UITouchReceiveComponent 의 UITouchDragEvent 를 처리하여 드래그 중일 때 IsClient() 메서드를 호출해 클라이언트 환경에서만 log 로 드래그 진행을 출력하는 스크립트를 작성해줘 [answer] | UITouchReceiveComponent의 `UITouchDragEvent`를 처리하고, `IsClient()` 메서드를 통해 클라이언트 환경임을 확인한 후 로그를 출력하는 스크립트입니다. ```lua Event Handler: [self] HandleUITouchDragEvent(UITouchDragEvent event) { if self:IsClient() then log("UI 드래그 중입니다.") end } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서와 규칙에 따라 UITouchDragEvent 핸들러와 IsClient() 메서드, log 함수를 정확하고 간결하게 작성했습니다. [source_doc] | UI Entity를 터치할 수 있고, 터치 시 동작을 제어할 수 있습니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **En
[task] | code [pass] | ✅ 통과 [title] | UITouchReceiveComponent [question] | UITouchReceiveComponent 의 UITouchDownEvent 를 처리하여 터치 시 log 로 "터치됨" 을 출력하는 스크립트를 작성해줘 [answer] | `UITouchReceiveComponent`의 `UITouchDownEvent`는 UI Entity를 터치하거나 클릭했을 때 발생합니다. 이 이벤트를 처리하기 위해 `[self]` 어트리뷰트를 가진 Event Handler를 선언하고, 핸들러 내부에서 `log` 함수를 사용하여 메시지를 출력하면 됩니다. ```lua Property: [None] Method: [client only] void OnBeginPlay() { -- 초기화 로직 (필요시) } Event Handler: [client only] [self] [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 UITouchDownEvent 정의와 mLua 스크립트 규칙에 따른 Event Handler 문법([self] 어트리뷰트, log 함수)을 정확히 적용하여 질문에 충실한 코드를 제시했습니다. [source_doc] | UI Entity를 터치할 수 있고, 터치 시 동작을 제어할 수 있습니다. # Properties ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다. - **En
[task] | instruction_following [pass] | ✅ 통과 [title] | UITouchBeginDragEvent [question] | UITouchBeginDragEvent에서 TouchId 값이 마우스 입력과 모바일 터치 입력으로 어떻게 구분되는지 3문장 이내로 설명하세요. [answer] | 마우스 입력의 경우 좌클릭은 -1, 우클릭은 -2, 휠 클릭은 -3으로 고정된 음수 값을 가집니다. 모바일 기기의 터치 입력은 1부터 시작하며 다중 터치를 할 경우 입력 개수만큼 값이 증가합니다. 따라서 TouchId가 음수이면 마우스 입력, 양수이면 모바일 터치 입력으로 구분할 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 TouchId 값(마우스 음수, 모바일 양수)을 3문장 이내로 정확하고 명확하게 설명하였습니다. [source_doc] | UI Entity를 드래그하기 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITouchReceiveComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity Entity** 이벤트가 발생한 엔티티입니다. - **int32 Tou
[task] | single_turn [pass] | ✅ 통과 [title] | UIModeTypeChangedEvent [question] | 이 이벤트가 발생하는 실행 공간(Space)은 어디인가요? [answer] | UIModeTypeChangedEvent는 **Client** 실행 공간에서 발생합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=0 verbosity=2 [judge_reason] | 참고 문서의 Space: Client 정보를 정확하고 간결하게 답변했습니다. [source_doc] | UITransformComponent의 UIMode가 바뀌었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITransformComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **UIModeType UIModeType** UI 엔티티가 그려지
[task] | instruction_following [pass] | ✅ 통과 [title] | UITouchBeginDragEvent [question] | UITouchBeginDragEvent를 직접 초기화하는 코드만 출력하고, 각 파라미터의 역할은 주석으로만 설명하세요. [answer] | ```lua local event = UITouchBeginDragEvent( self.Entity, -- Entity: 이벤트가 발생한 엔티티 -1, -- int32: 입력 식별자 (마우스 좌클릭은 -1) Vector2(100, 200) -- Vector2: 이벤트 발생 스크린 좌표 ) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 생성자 시그니처와 프로퍼티 설명을 정확히 반영하여 요청된 코드만 주석과 함께 간결하게 제시함 [source_doc] | UI Entity를 드래그하기 시작할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITouchReceiveComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity Entity** 이벤트가 발생한 엔티티입니다. - **int32 Tou
[task] | single_turn [pass] | ✅ 통과 [title] | UIModeTypeChangedEvent [question] | UIModeTypeChangedEvent 를 직접 생성할 때 기본값은 무엇으로 초기화되나요? [answer] | `UIModeTypeChangedEvent`를 직접 생성할 때, 생성자에서 `uiModeType` 인수를 지정하지 않으면 기본값으로 `UIModeType.None`이 사용됩니다. 따라서 `UIModeTypeChangedEvent()` 로 생성하면 `UIModeType` 속성은 `UIModeType.None` 값으로 초기화됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 생성자 시그니처에 명시된 기본값 UIModeType.None을 정확히 설명하여 질문에 완벽하게 답하고 있습니다. [source_doc] | UITransformComponent의 UIMode가 바뀌었을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * UITransformComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **UIModeType UIModeType** UI 엔티티가 그려지
[task] | instruction_following [pass] | ✅ 통과 [title] | TextInputSubmitEvent [question] | TextInputSubmitEvent 에서 Text 프로퍼티의 데이터 타입과 해당 이벤트가 발생되는 컴포넌트 두 가지를 나열해 주세요. [answer] | `TextInputSubmitEvent`의 `Text` 프로퍼티 데이터 타입은 `string`입니다. 해당 이벤트가 발생하는 컴포넌트는 다음과 같습니다. 1. `TextGUIRendererInputComponent` 2. `TextInputComponent` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 문서의 정보에 정확히 부합하여 질문에 간결하고 명확하게 답변했습니다. [source_doc] | 입력을 마치고 Enter 키를 눌렀을 때 호출되는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * TextGUIRendererInputComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * TextInputComponent <img src="https://img.shields.io/static/