← 목록

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

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

[task] | single_turn [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode에서 자식 노드를 추가할 때 확률을 지정하려면 어떤 메서드를 사용해야 하나요? [answer] | RandomSelectorNode에서 자식 노드를 추가하면서 확률을 지정하려면 `AttachChild(BTNode node, number probability)` 메서드를 사용합니다. 이 메서드는 지정한 노드(`node`)를 자식으로 추가하고, 0에서 1 사이의 실숫값인 `probability`를 해당 자식 노드의 선택 확률로 설정합니다. 참고로, 이미 추가된 자식 노드의 확률을 나중에 변경하려면 `SetChildNodeProbability(BTNode node, number probability)` 메서드를 사용할 수 있습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API 명세와 정확히 일치하며, 질문에 대한 핵심 답변과 보충 정보를 명확하게 제시했습니다. [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | single_turn [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | 자식 노드 인덱스는 1부터 시작하는 것 같은데, DetachChildAt 메서드에서 인덱스를 잘못 넘기면 어떤 일이 일어나나요? [answer] | 제공된 문서에는 `DetachChildAt(int32 index)` 메서드가 "index 위치에 있는 노드를 자식 노드에서 제거합니다. index는 1부터 시작합니다."라고만 설명되어 있으며, **범위를 벗어난 인덱스를 전달했을 때의 구체적인 동작(예: 오류 발생, 아무 일도 안 함, 기본값 반환 등)에 대한 설명은 없습니다.** 따라서 문서에 근거하여 인덱스를 잘못 넘겼을 때의 결과를 단정할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 DetachChildAt의 범위 이탈 시 동작이 명시되지 않았음을 정확히 지적하고, 없는 정보를 지어내지 않은 채 질문의 의도에 부합하는 답변을 제공했습니다. [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] | Rotate 메서드의 회전 방향과 매개변수 의미를 3문장 이내로 설명하고 [answer] | `Rotate` 메서드는 단일 매개변수 `angle`을 받아 해당 값만큼 엔티티를 회전시킵니다. 회전 방향은 반시계 방향입니다. 매개변수 `angle`은 회전할 각도 값을 의미합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 Rotate 메서드 설명(반시계 방향, angle 매개변수)을 정확하고 간결하게 요약하여 질문에 완벽히 부합함 [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerComponent [question] | PlayerComponent의 이동 관련 메서드 3가지( MoveToEntity, MoveToEntityByPath, MoveToMapPosition)의 파라미터와 실행 공간을 표로 정리하세요. [answer] | PlayerComponent의 이동 관련 메서드 3가지의 파라미터와 실행 공간은 다음과 같습니다. | 메서드 | 파라미터 | 실행 공간 | | :--- | :--- | :--- | | `MoveToEntity` | `string entityID` | Server | | `MoveToEntityByPath` | `string worldPath` | Server | | `MoveToMapPosition` | `string mapID`, `Vector2 targetPosition` | Server | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 3가지 이동 메서드의 파라미터와 실행 공간(Server)을 정확하고 간결하게 표로 정리하여 질문에 완벽히 부합합니다. [source_doc] | 플레이어를 나타내고, 관련 기능을 제공합니다. # Properties - **integer Hp [Sync] [HideFromInspector]** 현재 Hp입니다. - **integer MaxHp [Sync]** 최대 Hp입니다. - **string Nickname [Sync] [HideFromInspector]** 플레이어의 닉네임입니다. - **string ProfileCode [Sync] [ReadOnly] [HideFromInspector]** 플레이어의 프로필 코드입니다. - **boolean PVPMo

[task] | code [pass] | ❌ 탈락 [title] | ParallelNode [question] | ParallelNode의 Behave 메서드를 호출하여 deltaTime 인자를 전달하고 반환된 BehaviourTreeStatus를 확인하는 스크립트를 작성해줘 [answer] | ParallelNode의 `Behave` 메서드는 `float deltaTime` 인자를 받아서 실행하고, `BehaviourTreeStatus` 타입의 결과를 반환합니다. 아래는 `OnUpdate` 생명주기에서 프레임 간 시간(`delta`)을 `Behave` 메서드에 전달하여 결과를 확인하는 스크립트 예시입니다. ```lua Property: [None] any ParallelNode = nil Method: void OnUpdate(number delta) { if self.ParallelNode == nil th [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | mLua는 Lua 기반이라 ':' 콜론 문법이 아닌 '.' 도트 문법을 사용해야 하며, BehaviourTreeStatus enum의 정확한 멤버 이름이 문서에 명시되지 않아 지어낸 것으로 판단됩니다. [source_doc] | 모든 자식 노드를 동시에 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Name** 이

[task] | single_turn [pass] | ✅ 통과 [title] | SequenceNode [question] | SequenceNode에서 자식 노드가 하나라도 Failure를 반환하면 나머지 자식들은 실행되지 않는 건가요? [answer] | 네, 맞습니다. `SequenceNode`는 자식 노드를 순서대로 실행하며, 중간에 어느 한 자식 노드라도 `Failure`를 반환하면 즉시 중단되어 나머지 자식 노드들은 실행되지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 '자식 노드가 Failure를 반환할 때까지'라는 설명과 일치하며, 질문의 의도를 정확하고 간결하게 답변했습니다. [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | single_turn [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode의 동작 방식이 자식 중 하나를 무작위로 실행하는 것인데, 확률 값이 모두 0일 경우나 1보다 큰 값일 경우 어떻게 처리되나요? [answer] | 제공된 문서에는 `RandomSelectorNode`의 확률 값이 모두 0이거나 1보다 큰 경우의 구체적인 처리 방식(예: 실패 반환, 오류 발생, 균등 분배 등)이 명시되어 있지 않습니다. 문서에는 `AttachChild`와 `SetChildNodeProbability` 메서드에서 확률(probability)이 "0에서 1 사이의 실숫값으로 나타냅니다"라고 정의되어 있을 뿐, 범위를 벗어난 값이나 특수 케이스에 대한 동작 규정은 없습니다. 따라서 이 질문에 대한 정확한 답변은 주어진 참고 문서 내에서 확인할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 해당 특수 케이스 처리가 명시되어 있지 않음을 정확히 인지하고, 문서에 있는 확률 범위 정의만 근거로 삼아 답변이 불가능하다고 솔직하게 응답하여 정확성과 유용성이 높음 [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] | Position, Rotation, Scale 프로퍼티의 [Sync] 속성 유무를 표로 정리해서 [answer] | TransformComponent의 Position, Rotation, Scale 프로퍼티의 [Sync] 속성 유무는 다음과 같습니다. | 프로퍼티 | [Sync] 속성 | | :--- | :--- | | Position | 있음 | | Rotation | 없음 | | Scale | 있음 | 참고로 Rotation 프로퍼티는 [Sync] 속성이 없지만, 설명에 따르면 QuaternionRotation에 의해 동기화됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 프로퍼티 정의와 정확히 일치하며, Rotation의 동기화 방식에 대한 부가 설명도 적절합니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | code [pass] | ✅ 통과 [title] | PortalUseEvent [question] | PortalComponent 컴포넌트를 가진 엔티티에서 PortalUseEvent 이벤트 핸들러를 구현하여, 포탈을 사용한 플레이어 Entity PortalUser 가 nil 이 아닌 경우에만 _UserService 서비스를 통해 추가 정보를 조회하거나 log() 로 "포탈 사용 감지" 메시지를 출력하는 스크립트를 작성해줘. [answer] | 제공된 문서를 기준으로, `PortalUseEvent`는 `PortalComponent`에서 발생하며, `Client` 공간에서 트리거됩니다. 이벤트 객체에 포함된 `PortalUser` 프로퍼티가 `nil`이 아닌지 확인하는 로직을 구현한 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandlePortalUseEvent(PortalUseEvent event) { --------------- Native Event Sender Info ---------------- -- Sende [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 PortalUseEvent 정의와 mLua 규칙을 정확히 준수하여 nil 체크 로직을 구현하고, 문서에 없는 _UserService 메서드를 지어내지 않은 점에서 우수함. [source_doc] | 플레이어가 포탈을 이용할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PortalComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity PortalUser** 포탈을 사용한 플레이어의 엔티티입니다. # Constructors -

[task] | single_turn [pass] | ✅ 통과 [title] | SequenceNode [question] | ChildBehave 메서드에 전달하는 deltaTime 값이 0보다 작거나 음수일 경우 어떤 동작을 하는지 궁금합니다. [answer] | 제공된 참고 문서에는 `ChildBehave` 메서드의 `deltaTime` 인자에 음수나 0보다 작은 값이 전달되었을 때의 동작에 대한 설명이 없습니다. 문서에는 `deltaTime`이 "이전 프레임과 현재 프레임 사이에 흐른 시간"이며 단위가 초라고만 정의되어 있고, 음수 값 입력 시의 예외 처리나 동작 방식은 명시되어 있지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 해당 정보가 없음을 정확히 인지하고, 문서에 명시된 범위 내에서만 답변하여 오류 없이 질문에 충실히 응답했습니다. [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | instruction_following [pass] | ✅ 통과 [title] | TransformComponent [question] | ToWorldPoint와 ToWorldDirection 메서드의 Scale 영향 차이를 코드 주석만 포함하여 출력 [answer] | ```lua Method: [client only] void TestScaleDifference() { local transform = self.Entity.TransformComponent local localPoint = Vector3(1, 0, 0) local localDirection = Vector3(1, 0, 0) -- ToWorldPoint: 로컬 좌표를 월드 좌표로 변환할 때 Scale의 영향을 받습니다. local worldPoint = transform:ToWorldPo [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에서 명시한 ToWorldPoint와 ToWorldDirection의 Scale 영향 차이를 정확히 코드 주석으로 설명하여 질문에 완벽하게 부합합니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | single_turn [pass] | ✅ 통과 [title] | SequenceNode [question] | AttachChildAt 메서드의 index 인자가 0부터 시작하는지 1부터 시작하는지 어떻게 구별해야 하나요? [answer] | `AttachChildAt` 메서드의 `index` 인자는 **1부터 시작합니다.** 문서에는 `AttachChildAt(BTNode node, int32 index)` 설명에서 "index는 1부터 시작합니다"라고 명시되어 있습니다. 따라서 자식 노드를 특정 위치에 추가할 때 첫 번째 자식 노드의 인덱스는 1이며, 0을 전달하면 의도하지 않은 동작(예: 범위 오류)이 발생할 수 있습니다. 예를 들어, 두 번째 위치에 자식 노드를 추가하려면 `index`에 2를 전달해야 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 'index는 1부터 시작합니다'라는 정보를 정확히 인용하여 질문을 명확하게 해결했습니다. [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | single_turn [pass] | ✅ 통과 [title] | Translator [question] | GetText 메서드는 클라이언트에서만 실행되는데, 서버 사이드에서 번역 문자열을 얻고 싶을 때 어떻게 처리해야 하나요? [answer] | 제공된 문서에 따르면 `GetText` 메서드는 `[ClientOnly]` 속성을 가지고 있어 클라이언트 환경에서만 실행됩니다. 따라서 서버 사이드에서 이 메서드를 직접 호출하여 번역 문자열을 얻는 것은 불가능합니다. 문서에는 서버에서 번역 문자열을 가져오는 대안 방법이나 서버 전용 API에 대한 설명이 포함되어 있지 않으므로, 서버 사이드에서 번역 문자열을 얻는 구체적인 처리 방법은 알 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 서버 대안 API를 지어내지 않고, 문서 기반 사실(GetText의 ClientOnly 제약)과 문서 한계(서버 대안 미제공)를 명확히 전달하여 정확하고 유용합니다. [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] | Translator [question] | GetTextFormat에서 args에 전달하는 값들이 형식에 맞지 않으면 어떤 결과가 나오나요? [answer] | 제공된 문서에는 `GetTextFormat` 메서드에서 `args` 값이 형식에 맞지 않을 경우의 구체적인 결과(예: 오류 발생, 빈 문자열 반환, 원본 문자열 반환 등)에 대한 설명이 없습니다. 문서에는 `GetTextFormat`이 "번역 테이블에서 key행 LocaleId열 텍스트를 찾아 args로 전달한 값들을 형식에 맞게 채워넣은 결과를 반환한다"는 기능 설명만 제공되고 있으며, 예외 처리나 형식 불일치 시 동작에 관한 정보는 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 해당 정보가 명시되어 있지 않음을 정확히 지적하고, 존재하는 정보만 요약하여 오답을 방지했으므로 우수함. [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] | SequenceNode [question] | CompositeNode에서 상속받은 ExclusiveExecutionWhenRunning 프로퍼티는 Deprecated 상태인데, 기존에 작성한 스크립트에서 이 값을 설정해도 정상 동작하나요? [answer] | CompositeNode에서 상속받은 `ExclusiveExecutionWhenRunning` 프로퍼티는 **Deprecated(비추천)** 상태입니다. 이는 해당 프로퍼티가 더 이상 사용되지 않음을 의미합니다. 문서에 따르면 이 프로퍼티는 "더는 사용하지 않는 프로퍼티"라고 명시되어 있어, 기존 스크립트에서 이 값을 설정하더라도 정상 동작한다고 보장할 수 없으며, 새로운 스크립트 작성 시에는 사용해서는 안 됩니다. 대신 Behavior Tree의 실행 로직은 다른 메서드(예: `Behave`, `ChildBehave`)나 이벤트 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 동작 보장을 단정하지 않고 '보장할 수 없다'는 보수적 표현으로 정확성을 유지했으나, '이벤트 핸들러'라는 mLua 스크립트 규칙에 없는 개념을 언급하여 약간의 불일치가 있음 [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | code [pass] | ✅ 통과 [title] | PlayerComponent [question] | "Check Point" 오브젝트에 닿으면 리스폰 위치를 해당 오브젝트의 TransformComponent.Position 으로 설정하고, "Do Not Touch" 오브젝트에 닿으면 PlayerComponent:ProcessDead() 를 호출하여 사망 처리를 하는 TriggerComponent 스크립트를 작성해줘. [answer] | "Check Point"와 "Do Not Touch" 오브젝트와 상호작용하는 스크립트입니다. 이 스크립트는 `TriggerComponent`가 부착된 엔티티에 적용되며, 트리거 영역에 다른 엔티티가 들어오는 `HandleTriggerEnterEvent` 이벤트를 처리합니다. 1. **"Check Point"**: 해당 이름의 오브젝트에 닿으면, `PlayerComponent`의 `RespawnPosition`을 해당 오브젝트의 현재 위치(`TransformComponent.Position`)로 설정합니다. 2. **"Do N [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] | code [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode의 DetachChild(string nodeName) 메서드를 사용하여 이름이 "Patrol"인 자식 노드를 제거하는 스크립트를 작성해줘 [answer] | RandomSelectorNode의 `DetachChild(string nodeName)` 메서드는 이름이 `nodeName`인 노드를 찾아 자식 노드에서 제거합니다. 따라서 이름이 `"Patrol"`인 노드를 제거하려면 해당 메서드에 `"Patrol"`을 인자로 전달하면 됩니다. ```lua Method: void RemovePatrolNode() { self:DetachChild("Patrol") } ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | RandomSelectorNode 인스턴스 변수가 없거나 생성 로직이 없어 self:DetachChild 호출이 실제 동작을 보장하지는 않으나, 요청된 메서드 사용법 자체는 문서와 일치함 [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | instruction_following [pass] | ✅ 통과 [title] | PlayerComponent [question] | HandleTriggerEnterEvent에서 "Check Point"에 닿았을 때 실행되는 코드를 주석 없이 3줄 이내로 출력하세요. [answer] | ```lua local player = self.Entity.PlayerComponent if event.TriggerBodyEntity.Name == "Check Point" then player.RespawnPosition = event.TriggerBodyEntity.TransformComponent.Position ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 코드를 정확히 추출하여 주석 없이 3줄 이내로 요구사항에 맞게 답변했습니다. [source_doc] | "Check Point"라는 이름의 오브젝트에 닿으면 리스폰 위치를 오브젝트의 위치로 변경합니다. "Do Not Touch"라는 이름의 오브젝트에 닿으면 플레이어가 죽게 하여 리스폰 위치가 잘 변경됐는지 확인합니다. ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -----------------------------

[task] | single_turn [pass] | ✅ 통과 [title] | Translator [question] | 특정 키(key)에 대한 번역 문자열이 데이터셋에 존재하지 않을 때 메서드는 어떤 값을 반환하나요? [answer] | 제공된 문서에는 특정 키(key)에 대한 번역 문자열이 데이터셋에 존재하지 않을 때 `GetText` 또는 `GetTextFormat` 메서드가 어떤 값을 반환하는지에 대한 정보가 없습니다. 문서에는 다음과 같은 내용만 명시되어 있습니다: - `GetText(string key)`: 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 반환합니다. - `GetTextFormat(string key, any... args)`: 번역 테이블에서 key행 LocaleId열 텍스트를 찾아 args로 전달한 값들을 형식에 맞게 채워넣은 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 정보를 지어내지 않고 문서의 한계를 정확히 지적하여 질문자의 오해를 방지했습니다. [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] | Translator [question] | LocaleId 프로퍼티는 읽기 전용인데, 런타임 중에 다른 언어로 변경할 수 있는 방법이 있나요? [answer] | 제공된 문서에 따르면, `LocaleId` 프로퍼티는 `[ReadOnly]` 속성을 가지고 있어 직접 값을 변경할 수 없습니다. 또한 문서에는 런타임 중에 특정 인스턴스의 언어를 변경하는 메서드나 기능이 명시되어 있지 않습니다. 대신, 다른 언어로 번역된 텍스트를 조회하려면 `_LocalizationService:GetTranslatorForLocale` 메서드를 사용하여 해당 언어에 해당하는 `Translator` 인스턴스를 새로 생성하여 사용하는 방법이 문서에 나와 있습니다. 예를 들어, "en" 언어의 번역기를 얻어오는 방 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=0 coherence=3 complexity=None verbosity=2 [judge_reason] | 참고 문서에 없는 _LocalizationService 및 GetTranslatorForLocale API를 지어내어 정확도가 0점입니다. [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] | RandomSelectorNode [question] | AttachChild(BTNode node)와 AttachChild(BTNode node, number probability) 중 확률을 함께 설정하는 시그니처의 차이는 무엇인가요? [answer] | `AttachChild(BTNode node)`와 `AttachChild(BTNode node, number probability)`의 차이는 자식 노드를 추가할 때 **확률(probability)을 함께 지정할 수 있는지**에 있습니다. 1. **`void AttachChild(BTNode node)`** - `CompositeNode`에서 상속된 메서드입니다. - 단순히 `node`를 자식 노드로만 추가합니다. - 확률 설정 기능은 없으므로, `RandomSelectorNode`의 무작위 선택 로직에서 해당 노 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 두 메서드의 출처(CompositeNode vs RandomSelectorNode), 기능 차이, 및 확률 범위 제약 사항을 정확하고 명확하게 설명하였습니다. [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | code [pass] | ❌ 탈락 [title] | ParallelNode [question] | ParallelNode를 생성하고 Move 노드와 Attack 노드를 자식으로 연결하여 동시에 실행하는 스크립트를 작성해줘 [answer] | ParallelNode는 모든 자식 노드를 동시에 실행하는 합성(Composite) 노드입니다. `Move` 노드와 `Attack` 노드를 자식으로 연결하려면, 먼저 각 노드 인스턴스를 생성한 후 `AttachChild` 메서드를 사용하여 ParallelNode에 추가해야 합니다. 아래 예제는 ParallelNode를 생성하고, 가상의 Move 노드와 Attack 노드를 자식으로 연결하는 구조를 보여줍니다. 실제 `Move` 및 `Attack` 노드 클래스 이름은 프로젝트에 따라 다를 수 있으므로, 아래 코드의 `MoveNode` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | ParallelNode의 생성과 AttachChild 사용법은 정확하나, 문서와 시스템 규칙에 없는 MoveNode/AttackNode 클래스를 예시로 제시하여 지어낸 API 사용이 포함되어 정답성에서 감점이 됩니다. [source_doc] | 모든 자식 노드를 동시에 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Name** 이

[task] | single_turn [pass] | ❌ 탈락 [title] | SequenceNode [question] | DetachChild(string nodeName)을 호출했을 때 해당 이름의 노드가 없으면 에러가 발생하는지 아니면 단순히 false만 반환하는지 확인하고 싶습니다. [answer] | `DetachChild(string nodeName)` 메서드는 이름이 `nodeName`인 노드를 찾아 자식 노드에서 제거합니다. 이 메서드의 반환 타입은 `boolean`입니다. 제시된 문서에는 노드가 존재하지 않을 때 "에러가 발생한다"는 명시적인 내용은 없습니다. 일반적으로 boolean 타입을 반환하는 메서드는 성공 여부에 따라 `true` 또는 `false`를 반환하는 패턴을 따르므로, 해당 이름의 노드가 없으면 `false`를 반환할 것으로 추정됩니다. 하지만 문서에는 "노드가 없으면 false를 반환한다"는 문구가 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 에러 발생 여부에 대해 '추정'을 섞어 답변했으나, 문서에 명시되지 않았음을 정확히 지적하고 boolean 반환 타입에 기반한 합리적 추론을 제시하여 혼란을 줄였다. [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | code [pass] | ❌ 탈락 [title] | RandomSelectorNode [question] | RandomSelectorNode의 ChildBehave(int32 index, float deltaTime) 메서드를 통해 인덱스 1에 해당하는 자식 노드를 deltaTime 0.1초로 실행하는 스크립트를 작성해줘 [answer] | `RandomSelectorNode`의 `ChildBehave(int32 index, float deltaTime)` 메서드를 사용해 인덱스 1의 자식 노드를 0.1초 간격으로 실행하는 스크립트는 다음과 같습니다. 참고로 `ChildBehave`는 `CompositeNode`에서 상속된 메서드로, 인덱스는 1부터 시작하며 범위를 벗어날 경우 실패를 반환합니다. ```lua Property: [None] any Child = nil Method: [server only] void OnUpdate(number delta) { [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=2 verbosity=2 [judge_reason] | 질문에 대한 코드를 제시했으나, 문서에 없는 'Child' 프로퍼티를 선언하고, RandomSelectorNode 객체를 생성하거나 할당하지 않아 실제 실행이 불가능한 코드이며, mLua 컴포넌트 구조에서 BT 노드 메서드를 self에 직접 호출하는 방식이 API 문서와 불일치합니다. [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | code [pass] | ✅ 통과 [title] | ParallelNode [question] | ParallelNode에 자식 노드를 추가한 후 DetachChildAt 메서드로 첫 번째 노드를 제거하는 스크립트를 작성해줘 [answer] | 제공된 문서에는 `ParallelNode`에 자식 노드를 추가하는 `AttachChild` 또는 `AttachChildAt` 메서드와, 인덱스를 지정하여 노드를 제거하는 `DetachChildAt` 메서드가 정의되어 있습니다. 단, **문서에 `ParallelNode` 자체를 생성하거나 `BTNode`의 구체적인 서브클래스(예: `MoveToNode`, `WaitNode` 등)를 인스턴스화하는 코드 예시나 API가 포함되어 있지 않습니다.** 따라서 아래 스크립트는 문서에 명시된 `ParallelNode` 생성자, `AttachC [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 자식 노드 생성 예시를 지어내지 않고, 문서에 명시된 생성자·메서드 시그니처와 인덱스 규칙(1부터 시작)을 정확히 반영했으며, mLua 스크립트 문법도 적절히 적용했으므로 점수가 높음. [source_doc] | 모든 자식 노드를 동시에 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Name** 이

[task] | code [pass] | ❌ 탈락 [title] | TouchReleaseEvent [question] | TouchReceiveComponent가 부착된 엔티티에서 TouchReleaseEvent의 TouchId가 1일 때만 OnEndPlay 시 호출되는 로그 메시지를 변경하는 스크립트를 작성해줘 [answer] | 사용자의 질문은 `TouchReleaseEvent`의 `TouchId`가 1일 때의 조건을 `OnEndPlay` 라이프사이클 메서드와 연결하여 로그 메시지를 변경하는 스크립트를 요청하고 있습니다. 하지만 제공된 참고 문서를 살펴보면, `TouchReleaseEvent`는 엔티티에 **터치를 뗐을 때** 발생하는 이벤트이며, 이를 처리하기 위해 `TouchReceiveComponent`가 필요합니다. 이 이벤트는 `Event Handler` 블록을 통해 `HandleTouchReleaseEvent`와 같은 형태로 수신됩니다. 반면 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=3 coherence=4 complexity=3 verbosity=3 [judge_reason] | 질문의 모순점을 지적하고 가장 근접한 해석으로 코드를 제시했으나, 이벤트 핸들러에 [self] 태그를 사용하는 것은 mLua 규칙상 [service: UserService] 등 서비스 태그가 필요한 구조와 어긋날 수 있으며, OnEndPlay가 클라이언트/서버 모두에서 동작하는지 명시되지 않은 상태에서의 [client only] 지정은 추측에 가까움. [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] | two_turn [pass] | ✅ 통과 [title] | RandomSelectorNode [question] | RandomSelectorNode의 확률 기반 자식 노드 선택 방식과 AttachChild의 probability 파라미터 의미를 알려주세요. [answer] | `RandomSelectorNode`는 등록된 자식 노드 중 하나를 무작위로 선택하여 실행하는 노드입니다. 여기서 "무작위"는 단순히 균등한 확률(50:50, 33:33:33 등)이 아니라, 각 자식 노드에 부여된 **probability(확률)** 값에 가중치를 두어 선택합니다. ### probability 파라미터의 의미 `AttachChild(BTNode node, number probability)` 메서드의 `probability` 파라미터는 해당 자식 노드가 선택될 상대적 가중치입니다. * **범위**: 0에서 [followup] | 확률 합이 1이 아닐 때나 확률 0인 노드가 존재할 경우의 동작 예외와, SetChildNodeProbability 호출 시 기존 확률이 어떻게 처리되는지 구체적으로 설명해 주세요. [followup_answer] | 제공된 문서에는 `RandomSelectorNode`의 확률 합이 1이 아닐 때의 동작, 확률 0인 노드가 존재할 경우의 예외 처리, 그리고 `SetChildNodeProbability` 호출 시 기존 확률이 어떻게 처리되는지(예: 재할당인지, 누적인지 등)에 대한 구체적인 설명이 포함되어 있지 않습니다. 문서에 명시된 내용만으로는 이 질문들에 대한 답을 드릴 수 없습니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 API 정의(범위, 역할)를 정확히 인용하고, 문서에 없는 세부 동작 원리는 추측임을 명시하거나 지어내지 않아 정확도와 유용성이 높음 [source_doc] | 자식 노드 중에 하나를 무작위로 선택해 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **string Na

[task] | single_turn [pass] | ✅ 통과 [title] | TransformComponent [question] | 반시계 방향으로 90도 회전시키려면 Rotate 메서드에 어떤 값을 넣어야 하나요? [answer] | 반시계 방향으로 90도 회전시키려면 `Rotate` 메서드에 **90**을 넣으면 됩니다. `Rotate(float angle)` 메서드는 엔티티를 `angle`만큼 **반시계 방향**으로 회전시킵니다. 각도 단위는 도(degree)입니다. ```lua Method: [server] void Rotate90Degrees() { self.Entity.TransformComponent:Rotate(90) } ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 문서의 Rotate 메서드 설명과 일치하며, mLua 문법 규칙에 맞게 정확하고 간결하게 답변했습니다. [source_doc] | 엔티티의 위치, 회전, 크기를 나타냅니다. # Properties - **Vector3 Position [Sync]** 엔티티의 부모를 기준으로 좌표를 나타냅니다. - **Quaternion QuaternionRotation [Sync] [HideFromInspector]** 엔티티의 회전 값을 Quaternion으로 나타냅니다. - **Vector3 Rotation** 엔티티의 회전 값을 오일러 각으로 나타냅니다. 2차원에서는 Z축을 이용하여 회전할 수 있습니다. QuaternitonRotation에 의해 동기화됩니

[task] | two_turn [pass] | ✅ 통과 [title] | SequenceNode [question] | SequenceNode의 동작 방식과 자식 노드 실행 순서에 대해 설명해 주세요. [answer] | SequenceNode는 자식 노드들을 순서대로 실행하는 복합 노드(Composite Node)입니다. **동작 방식** 1. 첫 번째 자식 노드부터 시작하여 순서대로 `Behave` 메서드를 호출합니다. 2. 각 자식 노드가 `Success`를 반환하면 다음 자식 노드로 넘어갑니다. 3. 자식 노드가 `Running`을 반환하면 해당 프레임은 종료되고, 다음 프레임에 다시 실행을 시도합니다. 4. 어떤 자식 노드라도 `Failure`를 반환하면 SequenceNode 전체가 즉시 `Failure`를 반환합니다. 5. 모 [followup] | SequenceNode에 자식 노드를 추가할 때 AttachChild와 AttachChildAt의 차이점과 인덱스 시작 값은 무엇인가요? [followup_answer] | `SequenceNode`에 자식 노드를 추가할 때 `AttachChild`와 `AttachChildAt`의 차이점은 다음과 같습니다. * **AttachChild(BTNode node)**: * 지정한 `node`를 자식 노드로 추가합니다. * 특정 위치를 지정하지 않으므로, 기본적으로 자식 목록의 끝에 추가됩니다. * **AttachChildAt(BTNode node, int32 index)**: * 지정한 `index` 위치에 `node`를 자식 노드로 추가합니다. * **인 [scores] | helpfulness=4 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 동작 방식과 API 설명은 정확하나, 문서에 없는 'OnBehave' 메서드와 Lua 코드 예시를 지어내어 정확성에 감점이 있습니다. [source_doc] | 자식 노드가 Failure를 반환할 때까지 순서대로 실행합니다. # Properties ##### inherited from CompositeNode: - **int32 ChildCount [ReadOnly]** 자식 노드의 개수입니다. ##### inherited from BTNode: - **boolean ExclusiveExecutionWhenRunning [Deprecated]** 더는 사용하지 않는 프로퍼티입니다. - **func InitFunction** 초기화 시점에 호출되는 함수입니다. - **st

[task] | two_turn [pass] | ✅ 통과 [title] | PlayerComponent [question] | Check Point 오브젝트에 닿았을 때 리스폰 위치가 어떻게 변경되는지 그 원리를 설명해 주세요 [answer] | "Check Point"라는 이름의 오브젝트에 플레이어가 닿으면, 해당 오브젝트의 현재 위치가 플레이어의 리스폰 위치로 설정됩니다. 이 과정은 `TriggerComponent`의 `HandleTriggerEnterEvent` 이벤트가 트리거될 때 발생합니다. 이벤트 핸들러 내부에서 `event.TriggerBodyEntity`를 통해 닿은 오브젝트의 이름을 확인하고, "Check Point"와 일치하는 경우 `self.Entity.PlayerComponent.RespawnPosition` 프로퍼티에 `TriggerBodyEntit [followup] | 리스폰 위치 변경 로직에서 TriggerBodyEntity.Name 확인 시 주의할 점이나, "Do Not Touch" 접촉 시 ProcessDead() 처리 후 리스폰이 정상적으로 실행되는지 확인하는 구체적인 테스트 코드를 작성해 주세요 [followup_answer] | `TriggerBodyEntity.Name` 확인 시 주의할 점은, 이름 비교가 대소문자를 구분한다는 것입니다. 따라서 오브젝트 이름이 "Check Point"로 정확히 지정되어 있는지, 오타나 공백이 없는지 확인해야 합니다. 또한 이벤트가 발생한 엔티티가 실제로 해당 이름의 오브젝트인지 `event.TriggerBodyEntity`를 통해 검증하는 것이 좋습니다. "Do Not Touch" 접촉 시 `ProcessDead()` 처리 후 리스폰이 정상적으로 실행되는지 확인하는 테스트는, "Check Point"에 먼저 닿아 리스폰 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 코드 예제에 근거하여 트리거 이벤트 발생 시 리스폰 위치가 어떻게 변경되는지 정확하고 명확하게 설명했습니다. [source_doc] | "Check Point"라는 이름의 오브젝트에 닿으면 리스폰 위치를 오브젝트의 위치로 변경합니다. "Do Not Touch"라는 이름의 오브젝트에 닿으면 플레이어가 죽게 하여 리스폰 위치가 잘 변경됐는지 확인합니다. ```lua [server only] [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { -- Parameters local TriggerBodyEntity = event.TriggerBodyEntity -----------------------------

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