← 목록

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

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

[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerComponent [question] | "Check Point"와 "Do Not Touch" 오브젝트 각각의 트리거 이벤트 처리 로직을 비교하는 표로 정리하세요. [answer] | "Check Point"와 "Do Not Touch" 오브젝트에 대한 트리거 이벤트 처리 로직 비교는 다음과 같습니다. | 구분 | "Check Point" | "Do Not Touch" | | :--- | :--- | :--- | | **이벤트** | `HandleTriggerEnterEvent` | `HandleTriggerEnterEvent` | | **판단 조건** | `TriggerBodyEntity.Name == "Check Point"` | `TriggerBodyEntity.Name == "Do Not Touch"` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 코드와 설명을 정확히 비교 표로 정리하여 질문을 완벽하게 충족했습니다. [source_doc] | "Check Point"라는 이름의 오브젝트에 닿으면 리스폰 위치를 오브젝트의 위치로 변경합니다. "Do Not Touch"라는 이름의 오브젝트에 닿으면 플레이어가 죽게 하여 리스폰 위치가 잘 변경됐는지 확인합니다. ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -----------------------------

[task] | two_turn [pass] | ✅ 통과 [title] | SequenceNode [question] | SequenceNode에서 특정 자식 노드를 실행하거나 제거할 때 사용할 수 있는 메서드는 무엇인가요? [answer] | `SequenceNode`는 `CompositeNode`를 상속하기 때문에, 자식 노드를 실행하거나 관리하는 메서드를 그대로 사용할 수 있습니다. ### 자식 노드 실행 * **`ChildBehave(index, deltaTime)`** * 특정 인덱스(`index`)에 위치한 자식 노드를 실행합니다. * `index`는 **1부터** 시작합니다. * `deltaTime`은 이전 프레임과 현재 프레임 사이의 경과 시간(초)입니다. * 인덱스가 범위를 벗어나면 실패(`Failure`)를 [followup] | ChildBehave 메서드에서 인덱스가 범위를 벗어날 경우 반환값은 어떻게 되며, DetachChildAt은 어떤 인덱스 기준으로 작동하나요? [followup_answer] | `ChildBehave` 메서드에서 인덱스가 범위를 벗어나는 경우 **실패(Failure)**를 반환합니다. `DetachChildAt` 메서드는 인덱스가 **1부터 시작**하는 기준으로 작동합니다. [scores] | helpfulness=4 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 API 명세와 일치하나, SequenceNode가 mLua 스크립트에서 직접 호출되는 객체인지 불명확하여 예제 코드에서 self:ChildBehave() 호출 방식은 근거가 부족함 [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | two_turn [pass] | ❌ 탈락 [title] | Translator [question] | Translator 컴포넌트가 제공하는 기본 기능과 주요 프로퍼티에 대해 궁금합니다. [answer] | **기본 기능** Translator 컴포넌트는 `LocaleDataSet`에서 번역된 문자열을 조회하는 기능을 제공합니다. **주요 프로퍼티** * **string LocaleId [ReadOnly]** * 언어 코드를 나타냅니다. * `LocaleDataSet`에서 번역 문자열을 찾을 때 사용됩니다. **참고: 주요 메서드** 문서에 따르면 Translator는 다음 메서드도 제공합니다. * **string GetText(string key) [ClientOnly]** * 번역 테이블에 [followup] | GetTextFormat 메서드에서 any... args를 전달할 때 특정 형식 지정자가 없거나 인자 개수가 일치하지 않으면 어떤 결과가 반환되는지 예시를 들어 설명해 주세요. [followup_answer] | 제공된 참고 문서에는 `GetTextFormat` 메서드가 `args`로 전달한 값들을 "형식에 맞게 채워넣은 결과를 반환한다"는 설명만 포함되어 있으며, **특정 형식 지정자가 없거나 인자 개수가 일치하지 않을 경우의 구체적인 동작이나 에러 처리 방식에 대한 정보는 없습니다.** 따라서 문서에 근거하여 해당 예외 상황의 결과를 설명할 수 없습니다. [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=3 [judge_reason] | API 명세는 정확했으나, 문서와 규칙에 없는 _LocalizationService와 GetTranslatorForLocale을 지어낸 코드 예시로 정확도가 낮음 [source_doc] | LocaleDataSet에서 번역 문자열을 조회하는 기능을 제공합니다. # Properties - **string LocaleId [ReadOnly]** 언어 코드입니다. LocaleDataSet에서 번역 문자열을 찾을 때 사용합니다. # Methods - **string GetText(string key) [ClientOnly]** 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - **string GetTextFormat(string key, any... args) [ClientOnly]**

[task] | instruction_following [pass] | ✅ 통과 [title] | ResourceObject [question] | IsLoadComplete가 false일 때 리소스를 사용할 수 있는지에 대한 답을 1문장 이내로 작성하세요. [answer] | IsLoadComplete가 false일 때는 리소스를 사용할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 '로드가 완료되어야 사용이 가능합니다'라는 제약 사항을 정확하고 간결하게 답변했습니다. [source_doc] | MSW의 다양한 리소스를 표현하기 위한 리소스 추상 클래스입니다. # Properties - **boolean IsLoadComplete [ReadOnly]** 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. MSW 내 모든 리소스는 로드가 완료되어야 사용이 가능합니다. - **string RUID [ReadOnly]** 리소스의 RUID입니다. - **ResourceType Type [ReadOnly]** 이 리소스의 타입입니다.

[task] | single_turn [pass] | ✅ 통과 [title] | TransformComponent [question] | 2차원 맵에서 엔티티를 회전시키려면 Rotation의 어떤 축을 수정해야 하나요? [answer] | 2차원 맵에서 엔티티를 회전시키려면 `Rotation` 프로퍼티의 **Z축** 값을 수정해야 합니다. 참고 문서에 따르면 `TransformComponent`의 `Vector3 Rotation` 프로퍼티는 "2차원에서는 Z축을 이용하여 회전할 수 있습니다"라고 명시되어 있습니다. 따라서 2D 환경에서는 X축과 Y축은 0으로 유지하고, Z축 값만 변경하여 회전 각도를 제어합니다. 예를 들어, 엔티티를 90도 회전시키려면 `Rotation`의 Z 값을 90으로 설정하면 됩니다. ```lua Method: [server only] [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 2차원 회전에 대한 Z축 사용 지침을 정확히 인용하고, 표준 구문을 활용한 적절한 코드 예시를 제공하여 질문에 완벽하게 답했습니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | instruction_following [pass] | ✅ 통과 [title] | TransformComponent [question] | 자유낙하 예제에서 CurrentVelocity 프로퍼티의 동기화 설정과 초기값을 표로 정리해서 출력하세요. [answer] | 자유낙하 예제에서 `CurrentVelocity` 프로퍼티의 설정은 다음과 같습니다. | 항목 | 값/설정 | | :--- | :--- | | **동기화 설정** | `[Sync]` | | **초기값** | `Vector2(0,0)` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 자유낙하 예제에서 CurrentVelocity 프로퍼티의 동기화 설정([Sync])과 초기값(Vector2(0,0))을 정확히 표로 정리하여 요청에 완벽하게 부응했습니다. [source_doc] | 다음은 `ZRotation` 프로퍼티를 이용해 Entity를 일정한 속력으로 회전시키는 예제입니다. ```lua Property: [None] number AngularSpeed = 360 Method: [server only] void OnUpdate (number delta) { local transform = self.Entity.TransformComponent local zRotation = transform.ZRotation transform.ZRotation = zRotation + (self.Angular

[task] | two_turn [pass] | ✅ 통과 [title] | Translator [question] | 클라이언트에서만 실행되는 GetText와 GetTextFormat 메서드의 차이점을 비교해 주세요. [answer] | `GetText`와 `GetTextFormat`는 모두 클라이언트에서만 실행되는 `[ClientOnly]` 메서드이며, `LocaleDataSet`의 번역 테이블에서 지정된 `key`와 `LocaleId`에 해당하는 텍스트를 조회한다는 공통점이 있습니다. 두 메서드의 차이점은 다음과 같습니다. 1. **GetText(string key)** * 번역 테이블에서 `key` 행과 `LocaleId` 열에 위치한 **원본 텍스트 그대로**를 반환합니다. * 추가적인 인자(`args`)를 받지 않으며, 단순히 문자 [followup] | GetTextFormat을 사용해야 하는 구체적인 상황(예: 동적 데이터 삽입)에서 mLua 코드 블록으로 올바른 호출 예제를 작성해 주세요. [followup_answer] | `GetTextFormat`은 번역된 문자열 안에 변수(플레이어 이름, 아이템 수량 등)를 동적으로 삽입해야 할 때 사용합니다. 아래 예제는 클라이언트에서 실행되며, `_LocalizationService`를 통해 번역 키를 조회하고, 전달된 인자(`args`)가 번역 문자열의 자리표시자에 채워지도록 호출하는 방법을 보여줍니다. ```lua Property: [None] string PlayerName = "Player" [None] number ItemCount = 5 Method: [ClientOnly] void OnBegi [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 API 정의와 동작 방식을 정확하고 명확하게 비교 설명했으며, 지어낸 정보가 없습니다. [source_doc] | LocaleDataSet에서 번역 문자열을 조회하는 기능을 제공합니다. # Properties - **string LocaleId [ReadOnly]** 언어 코드입니다. LocaleDataSet에서 번역 문자열을 찾을 때 사용합니다. # Methods - **string GetText(string key) [ClientOnly]** 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - **string GetTextFormat(string key, any... args) [ClientOnly]**

[task] | instruction_following [pass] | ❌ 탈락 [title] | ResourceObject [question] | RUID와 Type의 읽기 전용 속성임을 나타내는 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] boolean IsLoadComplete = false -- 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. (ReadOnly) string RUID = "" -- 리소스의 RUID입니다. (ReadOnly) ResourceType Type = ResourceType.None -- 이 리소스의 타입입니다. (ReadOnly) ``` [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=0 coherence=2 complexity=1 verbosity=2 [judge_reason] | ResourceObject는 문서상 읽기 전용 속성만 존재하는 추상 클래스이며, mLua의 Property 블록은 사용자의 가변 상태 선언을 위한 것이므로 읽기 전용 API 속성을 Property로 선언하는 것은 문법적 오류이고, ResourceType.None 값도 문서에 근거가 없습니다. [source_doc] | MSW의 다양한 리소스를 표현하기 위한 리소스 추상 클래스입니다. # Properties - **boolean IsLoadComplete [ReadOnly]** 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. MSW 내 모든 리소스는 로드가 완료되어야 사용이 가능합니다. - **string RUID [ReadOnly]** 리소스의 RUID입니다. - **ResourceType Type [ReadOnly]** 이 리소스의 타입입니다.

[task] | code [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode의 SetChildNodeProbability(BTNode node, number probability) 메서드를 호출하여 기존에 연결된 자식 노드의 확률을 0.5로 변경하는 스크립트를 작성해줘 [answer] | `RandomSelectorNode`의 `SetChildNodeProbability` 메서드는 기존에 연결된 자식 노드의 확률을 0에서 1 사이의 값으로 변경하는 데 사용됩니다. 아래 스크립트는 `OnBeginPlay` 시점에 지정된 자식 노드의 확률을 0.5로 설정하는 예시입니다. 자식 노드(`ChildNode`)는 프로퍼티로 선언하거나 런타임에 다른 방식으로 참조할 수 있어야 합니다. 아래 예시는 프로퍼티를 통해 자식 노드를 참조하는 형태입니다. ```lua Property: [None] any ChildNode = nil [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | API 사용법과 반환값 처리는 정확하나, mLua 스크립트 규칙상 컴포넌트 참조가 아닌 일반 변수를 Property로 선언하여 BTNode를 참조하는 방식이 표준 구문과 어긋남. [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | instruction_following [pass] | ✅ 통과 [title] | TransformComponent [question] | ZRotation 프로퍼티와 Rotate 함수를 각각 이용해 360도/초 속도로 회전시키는 코드를 주석 없이 코드 블록으로만 출력하세요. [answer] | ```lua Property: [None] number AngularSpeed = 360 Method: [server only] void OnUpdate (number delta) { local transform = self.Entity.TransformComponent local zRotation = transform.ZRotation transform.ZRotation = zRotation + (self.AngularSpeed * delta) } ``` ```lua Property: [None] number Angul [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 주석 없이 정확하게 재현하여 질문에 완벽하게 부합합니다. [source_doc] | 다음은 `ZRotation` 프로퍼티를 이용해 Entity를 일정한 속력으로 회전시키는 예제입니다. ```lua Property: [None] number AngularSpeed = 360 Method: [server only] void OnUpdate (number delta) { local transform = self.Entity.TransformComponent local zRotation = transform.ZRotation transform.ZRotation = zRotation + (self.Angular

[task] | instruction_following [pass] | ✅ 통과 [title] | TransformComponent [question] | Translate 함수를 이용해 자유낙하를 구현하는 OnUpdate 함수 본문만 3문장 이내의 설명 없이 코드 블록으로 출력하세요. [answer] | ```lua Property: [None] Vector2 Gravity = Vector2(0,-9.8) [Sync] Vector2 CurrentVelocity = Vector2(0,0) Method: [server only] void OnUpdate (number delta) { local transform = self.Entity.TransformComponent self.CurrentVelocity = self.CurrentVelocity + (self.Gravity * delta) local deltaX = se [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 자유낙하 구현 코드 블록만 정확히 제시했으며, 참고 문서와 완전히 일치합니다. [source_doc] | 다음은 `ZRotation` 프로퍼티를 이용해 Entity를 일정한 속력으로 회전시키는 예제입니다. ```lua Property: [None] number AngularSpeed = 360 Method: [server only] void OnUpdate (number delta) { local transform = self.Entity.TransformComponent local zRotation = transform.ZRotation transform.ZRotation = zRotation + (self.Angular

[task] | single_turn [pass] | ✅ 통과 [title] | TransformComponent [question] | Position과 WorldPosition의 차이가 뭔가요? [answer] | `Position`과 `WorldPosition`은 엔티티의 좌표를 나타내는 기준이 다릅니다. **`Position`** * **의미:** 엔티티의 **부모 엔티티를 기준**으로 한 로컬 좌표입니다. * **동기화:** `[Sync]` 속성이 있어 서버와 클라이언트 간에 동기화됩니다. * **특징:** 부모 엔티티가 이동하거나 회전하면 자식 엔티티의 `Position` 값 자체는 변하지 않을 수 있으나, 실제 화면상의 위치는 부모의 변환에 따라 달라집니다. **`WorldPosition`** * **의미:** 월드 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 정의와 일치하며, Position과 WorldPosition의 차이점을 명확하고 정확하게 설명했습니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | code [pass] | ❌ 탈락 [title] | PlayerComponent [question] | 플레이어가 사망할 경우 3초 후 자동 리스폰되도록 하는 스크립트를 작성해줘 [answer] | ```lua Property: [Sync] boolean isWaitingRespawn = false Method: [server only] void OnBeginPlay() { -- 스크립트 초기화 } Event Handler: [self] HandlePlayerDeathEvent(PlayerDeathEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: PlayerComponent -- Space: Se [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=2 verbosity=2 [judge_reason] | PlayerDeathEvent와 HandlePlayerDeathEvent는 제공된 문서에 명시되지 않은 이벤트이며, 문서에 존재하는 RespawnDuration 프로퍼티나 ProcessDead/Respawn 메서드 조합을 활용하는 것이 더 정확합니다. [source_doc] | 플레이어를 나타내고, 관련 기능을 제공합니다. # Properties - **integer Hp [Sync] [HideFromInspector]** 현재 Hp입니다. - **integer MaxHp [Sync]** 최대 Hp입니다. - **string Nickname [Sync] [HideFromInspector]** 플레이어의 닉네임입니다. - **string ProfileCode [Sync] [ReadOnly] [HideFromInspector]** 플레이어의 프로필 코드입니다. - **boolean PVPMo

[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerComponent [question] | 문서에 제시된 mLua 코드 블록을 그대로 출력하되, 각 줄 뒤에 그 줄의 역할을 설명하는 주석을 추가하세요. [answer] | ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- 트리거 영역에 다른 엔티티가 들어왔을 때 서버와 클라이언트 모두에서 실행되는 이벤트 핸들러를 정의합니다. -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -- 이벤트 객체에서 트리거 영역에 들어온 대상 엔티티를 변수에 저장합니다. ------------------------------ [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 코드와 주석은 원문과 일치하나, '서버와 클라이언트 모두'라는 설명이 [server only] 태그와 모순됩니다. [source_doc] | "Check Point"라는 이름의 오브젝트에 닿으면 리스폰 위치를 오브젝트의 위치로 변경합니다. "Do Not Touch"라는 이름의 오브젝트에 닿으면 플레이어가 죽게 하여 리스폰 위치가 잘 변경됐는지 확인합니다. ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -----------------------------

[task] | instruction_following [pass] | ✅ 통과 [title] | ResourceObject [question] | ResourceObject의 Properties를 표로 정리해서 출력하세요. [answer] | ResourceObject의 Properties는 다음과 같습니다. | 이름 | 타입 | 접근 권한 | 설명 | | :--- | :--- | :--- | :--- | | `IsLoadComplete` | `boolean` | `ReadOnly` | 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. MSW 내 모든 리소스는 로드가 완료되어야 사용이 가능합니다. | | `RUID` | `string` | `ReadOnly` | 리소스의 RUID입니다. | | `Type` | `ResourceType` | `ReadOnly [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 ResourceObject 프로퍼티 정보를 표 형식으로 정확하고 간결하게 정리했습니다. [source_doc] | MSW의 다양한 리소스를 표현하기 위한 리소스 추상 클래스입니다. # Properties - **boolean IsLoadComplete [ReadOnly]** 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. MSW 내 모든 리소스는 로드가 완료되어야 사용이 가능합니다. - **string RUID [ReadOnly]** 리소스의 RUID입니다. - **ResourceType Type [ReadOnly]** 이 리소스의 타입입니다.

[task] | instruction_following [pass] | ✅ 통과 [title] | AttackEvent [question] | AttackEvent에서 발생하는 공간(Server/Client)과 이벤트 발생 주체 컴포넌트 이름을 정확히 명시하세요. [answer] | AttackEvent는 **Server**와 **Client** 공간에서 모두 발생합니다. 이벤트를 발생시키는 주체 컴포넌트는 **AttackComponent**입니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 발생 공간(Server, Client)과 주체 컴포넌트(AttackComponent)를 정확하고 간결하게 답변했습니다. [source_doc] | 엔티티가 공격할 때 발생하는 이벤트입니다. AttackComponent에서 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * AttackComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity DefenderEntity** 피격

[task] | instruction_following [pass] | ✅ 통과 [title] | Sprite [question] | Sprite의 Pivot과 PivotPixel의 차이를 3문장 이내로 설명하세요. [answer] | Sprite의 `Pivot`은 스프라이트를 월드에 배치할 때 사용하는 중심점을 단위(Unit) 기준으로 표현한 값입니다. 반면 `PivotPixel`은 동일한 중심점을 픽셀(Pixel) 단위로 변환해 표현한 값입니다. 즉 두 속성은 동일한 위치를 가리키지만, 측정 단위와 데이터 타입이 서로 다릅니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 정의와 일치하며, 3문장 이내로 명확하게 차이를 설명했습니다. [source_doc] | MSW의 이미지를 표현하기 위한 메타 정보(피벗, 보더 등)와 이미지의 텍스쳐 바이너리를 담고 있는 클래스입니다. # Properties - **Vector4 Border [ReadOnly]** UI에서 Sprite를 Sliced 방식으로 렌더링할 때 사용하는 경곗값입니다. - **RectOffset Collision [ReadOnly]** 충돌 범위를 표현하는 aabb 박스입니다. - **ReadOnlyList<ReadOnlyList<Vector2Int>> Footholds [ReadOnly]** 엔티티가 올라설 수

[task] | code [pass] | ❌ 탈락 [title] | Translator [question] | 로케일 데이터셋의 "score" 키를 조회하고 현재 점수 변수를 GetTextFormat 메서드의 args로 전달하여 포맷된 텍스트를 반환하는 Translator 컴포넌트 스크립트를 작성해줘. [answer] | `_LocalizationService`의 `GetTextFormat` 메서드를 사용하여 로케일 데이터셋에서 "score" 키에 해당하는 번역 문자열을 조회하고, 점수 값을 형식화하여 반환하는 스크립트입니다. ```lua Property: [None] number CurrentScore = 0 Method: [ClientOnly] void OnBeginPlay() { -- 현재 점수 변수에 값 설정 (예제용) self.CurrentScore = 100 -- 로케일 데이터셋에서 "score" 키를 조회하고 점수를 형식화하 [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=2 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 따르면 Translator는 GetTextFormat 메서드를 가진 컴포넌트이지만, 응답은 문서에 존재하지 않는 _LocalizationService라는 서비스를 지어내어 잘못된 API를 사용했습니다. [source_doc] | LocaleDataSet에서 번역 문자열을 조회하는 기능을 제공합니다. # Properties - **string LocaleId [ReadOnly]** 언어 코드입니다. LocaleDataSet에서 번역 문자열을 찾을 때 사용합니다. # Methods - **string GetText(string key) [ClientOnly]** 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - **string GetTextFormat(string key, any... args) [ClientOnly]**

[task] | code [pass] | ✅ 통과 [title] | PlayerComponent [question] | 다른 플레이어의 entityID를 받아서 해당 위치로 즉시 이동시키는 스크립트를 작성해줘 [answer] | `PlayerComponent`의 `MoveToEntity` 메서드를 사용하면 다른 플레이어의 `entityID`를 받아 해당 엔티티와 동일한 위치로 즉시 이동시킬 수 있습니다. 참고 문서에 따르면 `MoveToEntity`는 서버에서만 실행되며(`[Server]`), `entityID`에 해당하는 엔티티와 같은 위치로 플레이어를 이동시킵니다. 다른 맵의 `entityID`인 경우 맵 이동도 수행됩니다. 아래는 다른 플레이어의 `entityID`를 매개변수로 받아 해당 위치로 이동시키는 스크립트 예시입니다. ```lua Met [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 MoveToEntity API 정의와 mLua 문법 규칙에 정확히 부합하는 코드 예시를 제공하여 질문에 직접적인 도움을 줌 [source_doc] | 플레이어를 나타내고, 관련 기능을 제공합니다. # Properties - **integer Hp [Sync] [HideFromInspector]** 현재 Hp입니다. - **integer MaxHp [Sync]** 최대 Hp입니다. - **string Nickname [Sync] [HideFromInspector]** 플레이어의 닉네임입니다. - **string ProfileCode [Sync] [ReadOnly] [HideFromInspector]** 플레이어의 프로필 코드입니다. - **boolean PVPMo

[task] | instruction_following [pass] | ✅ 통과 [title] | AttackEvent [question] | AttackEvent를 직접 초기화하는 코드만 출력하고, 인자 값 설정 부분은 주석으로만 작성하세요. [answer] | ```lua local event = AttackEvent( -- Entity defenderEntity nil ) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 AttackEvent 생성자 시그니처와 일치하며, 요청한 대로 코드만 출력하고 인자 값을 주석으로 명확히 설명했습니다. [source_doc] | 엔티티가 공격할 때 발생하는 이벤트입니다. AttackComponent에서 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * AttackComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity DefenderEntity** 피격

[task] | two_turn [pass] | ✅ 통과 [title] | AttackEvent [question] | AttackEvent가 발생하는 조건과 기본 동작 방식은 무엇인가요? [answer] | AttackEvent는 엔티티가 공격을 수행할 때 발생하는 이벤트입니다. 이 이벤트는 AttackComponent에서 발생하며, 서버(Server)와 클라이언트(Client) 양쪽 공간에서 트리거됩니다. 이벤트가 발생하면 피격자 엔티티 정보에 접근할 수 있으며, 해당 정보는 AttackEvent 객체의 DefenderEntity 프로퍼티를 통해 얻습니다. 아래는 AttackEvent를 처리하는 기본적인 스크립트 예시입니다. ```lua Event Handler: [self] HandleAttackEvent(AttackEvent [followup] | AttackEvent에서 DefenderEntity가 nil인 경우의 예외 처리와 방어 로직 구현 코드는 어떻게 작성하나요? [followup_answer] | 참고 문서에 따르면 `AttackEvent`는 `DefenderEntity` 프로퍼티를 가지며, 이 프로퍼티는 `Entity` 타입입니다. 생성자 시그니처 `AttackEvent(Entity defenderEntity = nil)`에서 기본값이 `nil`로 설정되어 있음을 확인할 수 있습니다. 이는 `DefenderEntity`가 `nil`일 수 있다는 것을 의미하므로, 이벤트 핸들러에서 이를 확인하고 처리하는 방어 로직이 필요합니다. `DefenderEntity`가 `nil`이 아닌 경우에만 해당 엔티티에 대한 작업을 수행하도록 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 발생 조건, 공간, 프로퍼티를 정확히 설명하고 표준 구문에 맞는 예시를 제시하여 질문을 잘 충족함. [source_doc] | 엔티티가 공격할 때 발생하는 이벤트입니다. AttackComponent에서 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * AttackComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity DefenderEntity** 피격

[task] | instruction_following [pass] | ✅ 통과 [title] | AttackEvent [question] | AttackEvent의 Properties와 Constructors를 포함하는 구조를 표로 정리하세요. [answer] | AttackEvent의 구조는 다음과 같습니다. | 구분 | 이름 | 타입 | 설명 | | :--- | :--- | :--- | :--- | | **Properties** | `DefenderEntity` | `Entity` | 피격자 엔티티입니다. | | **Constructors** | `AttackEvent` | `Entity defenderEntity = nil` | 지정한 값으로 AttackEvent를 초기화합니다. | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 AttackEvent의 프로퍼티와 생성자 정보를 표로 정확하고 간결하게 정리하여 질문에 완벽하게 부합합니다. [source_doc] | 엔티티가 공격할 때 발생하는 이벤트입니다. AttackComponent에서 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * AttackComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity DefenderEntity** 피격

[task] | single_turn [pass] | ❌ 탈락 [title] | Translator [question] | GetText와 GetTextFormat 메서드의 사용 목적과 차이점을 명확하게 설명해 줄 수 있나요? [answer] | `GetText`와 `GetTextFormat`는 모두 `LocaleDataSet`에 저장된 번역 문자열을 조회하는 메서드이며, 클라이언트 공간에서만 실행됩니다. 두 메서드의 핵심적인 차이점은 **동적인 값(변수)을 텍스트에 포함시켜야 하는지 여부**에 있습니다. **1. GetText(string key)** * **목적:** 번역 테이블에서 특정 `key`에 해당하는 고정된 텍스트 문자열을 그대로 반환합니다. * **특징:** 텍스트 안에 숫자나 이름 등 변경되는 값이 없는 경우(예: "확인", "취소", NPC 이름) [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=1 coherence=4 complexity=3 verbosity=2 [judge_reason] | 응답은 두 메서드의 차이점을 논리적으로 잘 설명했으나, 참고 문서에 없는 '_LocalizationService'와 'LocalTranslator'를 지어내어 API 정확도가 낮습니다. [source_doc] | LocaleDataSet에서 번역 문자열을 조회하는 기능을 제공합니다. # Properties - **string LocaleId [ReadOnly]** 언어 코드입니다. LocaleDataSet에서 번역 문자열을 찾을 때 사용합니다. # Methods - **string GetText(string key) [ClientOnly]** 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - **string GetTextFormat(string key, any... args) [ClientOnly]**

[task] | code [pass] | ❌ 탈락 [title] | Translator [question] | OnBeginPlay 생명주기에서 로케일 데이터셋의 "start" 키로 번역된 텍스트를 로그에 출력하는 Translator 컴포넌트 스크립트를 작성해줘. [answer] | mLua에서는 로케일 데이터셋의 번역 문자열을 조회하기 위해 `_LocalizationService:GetTranslatorForLocale("언어코드")`를 호출하여 `Translator` 객체를 얻은 뒤, 해당 객체의 `GetText(key)` 메서드를 사용합니다. 사용자가 특정 언어 코드를 지정하지 않았으므로, 예제에 있는 `"en"`(영어)를 기본 언어로 가정하여 스크립트를 작성했습니다. 또한 `GetText`는 클라이언트에서만 실행 가능한 메서드이므로, 해당 로직은 `[ClientOnly]` 또는 `[client only [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=2 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 _LocalizationService API를 지어냈고, GetText의 실행 공간 표기([ClientOnly] vs [client only])도 불명확하며, 컴포넌트 내 메서드 호출 문법도 비표준입니다. [source_doc] | LocaleDataSet에서 번역 문자열을 조회하는 기능을 제공합니다. # Properties - **string LocaleId [ReadOnly]** 언어 코드입니다. LocaleDataSet에서 번역 문자열을 찾을 때 사용합니다. # Methods - **string GetText(string key) [ClientOnly]** 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - **string GetTextFormat(string key, any... args) [ClientOnly]**

[task] | single_turn [pass] | ✅ 통과 [title] | TransformComponent [question] | TransformComponent의 Position을 수정했는데 다른 클라이언트에서 안 보이는 이유는 뭘까요? [answer] | TransformComponent의 `Position` 프로퍼티에는 `[Sync]` 속성이 적용되어 있어, 원칙적으로 서버에서 값을 수정하면 다른 클라이언트에도 동기화되어야 합니다. 하지만 다른 클라이언트에서 변경 사항이 보이지 않는다면, 가장 큰 원인은 **수정 코드가 서버(Server) 실행 공간에서 실행되지 않고 있기 때문**입니다. mLua에서는 클라이언트와 서버가 분리되어 실행되며, 네트워크 동기화가 일어나려면 데이터 변경 로직이 반드시 서버 측에서만 수행되어야 합니다. 만약 클라이언트 전용 메서드나 이벤트 핸들러에서 ` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | [Sync] 속성의 의미와 서버/클라이언트 실행 공간의 차이, 그리고 올바른 태그 사용법을 참고 문서와 시스템 규칙에 부합하도록 정확하고 명확하게 설명했습니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | code [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode의 AttachChild(BTNode node, number probability) 메서드를 이용해 공격 확률 70%, 도주 확률 30%로 자식 노드를 연결하는 스크립트를 작성해줘 [answer] | `RandomSelectorNode`의 `AttachChild(BTNode node, number probability)` 메서드는 자식 노드를 추가할 때 0에서 1 사이의 실숫값으로 확률을 부여합니다. 따라서 공격 확률 70%는 `0.7`, 도주 확률 30%는 `0.3`으로 설정하면 됩니다. 아래 예제는 `RandomSelectorNode`를 생성하고, 공격 및 도주를 수행하는 자식 노드(예: `BTNode` 또는 그 하위 클래스 인스턴스)를 각각의 확률과 함께 연결하는 방법입니다. ```lua Property: [None] [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 자식 노드 생성 API를 지어내지 않고, 주어진 RandomSelectorNode API와 확률 매핑(0.7, 0.3)을 정확히 적용한 코드를 제공했습니다. [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | single_turn [pass] | ✅ 통과 [title] | PlayerComponent [question] | HandleTriggerEnterEvent 핸들러가 실행되기 위해 스크립트가 붙어 있는 엔티티에는 어떤 컴포넌트가 필요할까요? [answer] | `HandleTriggerEnterEvent` 핸들러가 실행되기 위해서는 스크립트가 붙어 있는 엔티티에 **TriggerComponent**가 필요합니다. 참고 문서의 `SeeAlso` 섹션 및 예제 코드 주석(`-- Sender: TriggerComponent`)에서 이 이벤트가 `TriggerComponent`에 의해 발생함을 확인할 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 SeeAlso 섹션과 예제 코드를 근거로 TriggerComponent가 필요함을 정확하고 간결하게 답변했습니다. [source_doc] | "Check Point"라는 이름의 오브젝트에 닿으면 리스폰 위치를 오브젝트의 위치로 변경합니다. "Do Not Touch"라는 이름의 오브젝트에 닿으면 플레이어가 죽게 하여 리스폰 위치가 잘 변경됐는지 확인합니다. ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -----------------------------

[task] | code [pass] | ❌ 탈락 [title] | TouchHoldEvent [question] | 엔티티에 TouchReceiveComponent가 있는 경우, HandleTouchHoldEvent 이벤트 핸들러에서 event.TouchPoint의 x, y 값을 저장한 후 OnUpdate에서 해당 좌표로 카메라를 부드럽게 이동시키는 [client only] 스크립트를 작성해줘 [answer] | ## 분석 및 답변 제시된 참고 문서를 확인한 결과, **엔티티에 `TouchReceiveComponent`가 있을 때 발생하는 `TouchHoldEvent`를 직접 수신하는 `HandleTouchHoldEvent` 이벤트 핸들러에 대한 API 명세(서비스 이름, 파라미터 구조 등)가 문서에 포함되어 있지 않습니다.** 문서에 명시된 `TouchHoldEvent`는 `TouchReceiveComponent`가 있는 엔티티에 터치를 **홀드(길게 누르는)** 상태일 때 발생하며, `TouchId`(int32)와 `TouchPoin [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=3 complexity=3 verbosity=3 [judge_reason] | 질문에서 명시한 HandleTouchHoldEvent 핸들러를 문서에 없음을 이유로 무시하고 다른 이벤트(HandleScreenTouchHoldEvent)를 사용하여 답변했으며, 이는 질문 의도와 어긋나 도움이 제한적이고 정확도가 낮습니다. [source_doc] | 엔티티를 터치하는 동안 발생하는 이벤트입니다. 엔티티에 TouchReceiveComponent가 있어야 이벤트가 발생합니다. 짧게 터치하면 발생하지 않습니다. 이 Event는 아래 API에 의해 발생합니다. * TouchReceiveComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties -

[task] | single_turn [pass] | ✅ 통과 [title] | ResourceObject [question] | Type 속성의 ResourceType 타입은 어떤 값들을 포함하고 있나요? [answer] | 제공된 문서에는 `Type` 속성이 `ResourceType` 타입임을 명시하고 있으나, `ResourceType`이 구체적으로 어떤 값들(예: Image, Audio, Model 등)을 포함하는지에 대한 정보는 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 ResourceType의 구체적 열거 값이 없으므로, 해당 정보가 문서에 없다고 정확히 답변한 것이 가장 적절합니다. [source_doc] | MSW의 다양한 리소스를 표현하기 위한 리소스 추상 클래스입니다. # Properties - **boolean IsLoadComplete [ReadOnly]** 리소스가 정상적으로 로드가 완료됐는지를 확인하는 플래그입니다. MSW 내 모든 리소스는 로드가 완료되어야 사용이 가능합니다. - **string RUID [ReadOnly]** 리소스의 RUID입니다. - **ResourceType Type [ReadOnly]** 이 리소스의 타입입니다.

[task] | code [pass] | ✅ 통과 [title] | PlayerComponent [question] | 플레이어의 MaxHp가 100일 때 Hp가 0 이하가 되면 PVPMode를 false로 설정하고 리스폰 위치를 (0, 10, 0)으로 고정하는 스크립트를 작성해줘 [answer] | 플레이어의 HP가 0 이하가 되는 시점을 감지하여 `PVPMode`를 비활성화하고, 리스폰 위치를 고정하는 스크립트입니다. 메이플스토리 월드의 `PlayerComponent` API 문서에는 HP 감소나 상태 변화를 실시간으로 감지하는 전용 이벤트 핸들러(예: `HandleHpChangedEvent`)가 명시되어 있지 않습니다. 따라서 클라이언트 또는 서버의 `OnUpdate` 루프에서 `Hp` 프로퍼티의 값을 주기적으로 확인하여 조건을 만족하는지 체크하는 방식을 사용해야 합니다. 아래 코드는 서버에서 실행되며, `MaxHp`가 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 이벤트 핸들러를 지어내지 않고 OnUpdate를 활용한 올바른 접근 방식을 제시했으며, API 명칭과 사용법이 문서와 정확히 일치합니다. [source_doc] | 플레이어를 나타내고, 관련 기능을 제공합니다. # Properties - **integer Hp [Sync] [HideFromInspector]** 현재 Hp입니다. - **integer MaxHp [Sync]** 최대 Hp입니다. - **string Nickname [Sync] [HideFromInspector]** 플레이어의 닉네임입니다. - **string ProfileCode [Sync] [ReadOnly] [HideFromInspector]** 플레이어의 프로필 코드입니다. - **boolean PVPMo

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