[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleLoopEvent [question] | ParticleLoopEvent의 ParticleEntity 프로퍼티를 읽기 전용으로 사용할 때 어떤 제약이 있나요? [answer] | ParticleLoopEvent의 `ParticleEntity` 프로퍼티는 읽기 전용(ReadOnly)으로 정의되어 있어, 이벤트 핸들러 내에서 값을 수정하거나 새로운 엔티티를 할당할 수 없습니다. 이 프로퍼티는 해당 파티클 루프 이벤트가 발생했을 때 관련이 있는 엔티티를 참조하기 위한 목적으로 제공되며, 코드 내에서 읽기만 가능합니다. ```lua Event Handler: [self] HandleParticleLoopEvent(ParticleLoopEvent event) { -- ParticleEntity는 읽기 전용 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | Loop 프로퍼티가 활성화 된 경우, 파티클의 방출 주기가 돌아와서 방출을 반복할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img
[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactEndEvent [question] | PhysicsContactEndEvent의 ContactedBodyEntity 속성이 가리키는 엔티티의 타입과 의미를 2문장 이내로 설명하세요. [answer] | `ContactedBodyEntity`는 `Entity` 타입이며, 충돌이 종료된 상대 물리 강체 엔티티를 가리킵니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌이 끝날 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <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 ContactedBodyEntity** 충돌한 Ph
[task] | code [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | 엔티티에 WheelJointComponent 를 적용하여 W 키를 누르면 SetMotorSpeed(1, -10) 으로, S 키를 누르면 SetMotorSpeed(1, 10) 으로 가속하는 스크립트를 작성해줘 [answer] | ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, 10) [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint
[task] | two_turn [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent의 Url 프로퍼티 변경 시 1분당 10회 제한이 적용되는 구체적인 상황과, 이 제한에 걸렸을 때 스크립트에서 예외를 처리하거나 우회하는 방법을 알고 싶습니다. [answer] | WebViewComponent의 `Url` 프로퍼티를 변경할 때 1분당 10회 제한은 **서버가 웹 페이지를 다시 불러오는 요청을 처리하는 빈도**에 대한 제한입니다. 구체적인 상황과 처리 방법은 다음과 같습니다: ### 1. 제한이 적용되는 구체적 상황 * `Url` 프로퍼티에 새로운 값을 할당할 때마다 서버는 해당 URL로 웹 페이지를 로드하는 작업을 수행합니다. * 이 로드 작업은 네트워크 요청 및 리소스 할당을 포함하므로, 과도한 변경이 서버 부하를 유발할 수 있습니다. * 따라서 mLua 엔진은 **1분(60 [followup] | Url 변경 제한에 걸렸을 때 _TimerService를 이용해 재시도를 자동 수행하는 mLua 코드 예시를 작성해 주세요. [followup_answer] | 참고 문서에는 `Url` 프로퍼티 변경 시 제한 초과 여부를 확인하는 API(예: 반환 값, 이벤트, 플래그)가 명시되어 있지 않습니다. 따라서 스크립트에서 "제한에 걸렸다"는 사실을 직접 감지하고 조건부로 재시도하는 로직을 작성하는 것은 불가능합니다. 대신, **1분당 10회 제한을 사전에 방지**하기 위해 `_TimerService`를 사용하여 변경 요청 간격을 최소 6초(60초 / 10회) 이상으로 확보하는 코드가 표준적인 해결 방법입니다. 이는 "재시도"가 아니라 "제한에 걸리지 않도록 예약된 시점에 실행"하는 방식입니다. [scores] | [judge_reason] | [source_doc] | UI와 월드에 웹뷰(WebView)를 배치합니다. 웹 페이지의 조작 가능 여부, 탐색 방법 등을 설정할 수 있습니다. # Properties - **boolean ClickingEnabled [Sync]** 웹뷰에서 클릭을 가능하게 할지 여부입니다. - **DragMode DragMode** 웹뷰 내에서 드래그했을 때 어떻게 동작할지 설정합니다. - **float DragThreshold** 드래그 시 클릭으로 인식하지 않게 만들기 위한 임곗값입니다. 수치가 매우 높으면 드래그가 클릭으로 인식될 수 있습니다. - **
[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | DestroyJoint를 호출할 때 index를 잘못 지정하면 어떤 오류가 발생하며, GetJointsCount로 현재 남은 joint 수를 확인한 후 순서대로 삭제하는 것이 안전한 방법인가요? [answer] | 제공된 참고 문서에는 `DestroyJoint` 메서드를 호출할 때 잘못된 인덱스(index)를 지정했을 때 발생하는 구체적인 오류 메시지나 예외 발생 사항에 대한 설명이 없습니다. 또한, `GetJointsCount`를 사용하여 현재 joint 수를 확인한 후 순서대로 삭제하는 것이 공식적으로 권장되는 "안전한 방법"인지 여부에 대한 명시적인 가이드라인도 문서에 포함되어 있지 않습니다. 문서에서 확인할 수 있는 사실은 다음과 같습니다. 1. `DestroyJoint(int32 index)` 메서드는 "순번이 index에 해당 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl
[task] | two_turn [pass] | ⏳ 미판정 [title] | WebLoadCompleteEvent [question] | WebLoadCompleteEvent가 발생하는 조건과 WebViewComponent의 관계는 어떻게 되나요? [answer] | `WebLoadCompleteEvent`는 웹 페이지가 로드가 완료되는 시점에 발생하는 이벤트입니다. 이 이벤트는 `WebViewComponent`에 의해 발생합니다. `WebViewComponent`는 클라이언트(Client) 공간에서 작동하며, 해당 컴포넌트가 담당하는 웹 페이지의 로드가 끝나면 `WebLoadCompleteEvent`를 트리거합니다. [followup] | WebLoadCompleteEvent를 처리하는 Event Handler 코드를 작성해 주세요. [followup_answer] | 참고 문서에 제공된 `WebLoadCompleteEvent`의 구체적인 파라미터나 프로퍼티에 대한 정보가 없으므로, 이벤트 객체에서 값을 추출하는 코드는 포함할 수 없습니다. 문서에 있는 생성자 정보(`WebLoadCompleteEvent()`)와 실제 mLua 예제의 Event Handler 형식을 바탕으로, 이벤트 발생 시 로그를 출력하는 기본 처리 코드는 다음과 같습니다. ```lua Event Handler: [self] HandleWebLoadCompleteEvent(WebLoadCompleteEvent event) { [scores] | [judge_reason] | [source_doc] | 웹 페이지 로드 완료 시 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * WebViewComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **WebLoadCompleteEvent()** 지정한 값으로 WebLoadCompleteEvent를 초기화합니
[task] | two_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | WheelJointComponent의 Joints 프로퍼티와 AddJoint, DestroyJoint 메서드 간의 관계는 어떻게 되나요? [answer] | `WheelJointComponent`의 `Joints` 프로퍼티와 `AddJoint`, `DestroyJoint` 메서드는 연결된 바퀴 조인트(Joint)를 관리하는 밀접한 관계에 있습니다. 1. **`Joints` 프로퍼티**: * 타입은 `SyncList<WheelJoint>`이며, `[Sync]` 및 `[ReadOnly]` 속성을 가집니다. * 이 리스트에는 현재 엔티티에 추가된 모든 `WheelJoint` 정보가 저장됩니다. * `[ReadOnly]`이므로 스크립트에서 직접 리스트 항목을 [followup] | GetJointsCount를 활용하여 특정 인덱스의 Joint가 존재하는지 확인한 후, SetCollideConnected를 통해 충돌 여부를 전환하는 로직을 구현하는 방법을 알려주세요. [followup_answer] | `GetJointsCount()`는 현재 연결된 조인트의 총 개수를 반환하므로, 특정 인덱스의 조인트가 존재하는지 확인하는 데 사용할 수 있습니다. `Joints` 리스트는 0부터 시작하는 인덱스를 가지므로, 확인하려는 인덱스(`index`)가 `0` 이상이고 `GetJointsCount()` 미만이면 해당 조인트가 존재하는 것입니다. 조인트가 존재한다고 확인한 후, `SetCollideConnected(index, collideConnected)` 메서드를 호출하여 해당 조인트의 충돌 여부를 전환할 수 있습니다. 아래는 서버 [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitEndEvent [question] | AreaParticleComponent의 ParticleEmitEndEvent를 수신하여 이벤트의 ParticleEntity 프로퍼티에서 엔티티 이름을 추출하여 콘솔에 출력하는 스크립트를 작성해줘. [answer] | ```lua Property: [None] AreaParticleComponent ParticleComponent = nil Method: [server only] void OnBeginPlay() { self.ParticleComponent = self.Entity.AreaParticleComponent } Event Handler: [self] HandleParticleEmitEndEvent(ParticleEmitEndEvent event) { --------------- Native Event Sender Info -- [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클의 방출이 종료되었을 때 BaseParticleComponent에서 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="h
[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactEndEvent [question] | PhysicsContactEndEvent를 직접 초기화하는 생성자의 인자 목록과 기본값을 표로 정리하세요. [answer] | `PhysicsContactEndEvent`를 직접 초기화하는 생성자의 인자 목록과 기본값은 다음과 같습니다. | 인자 이름 | 타입 | 기본값 | 설명 | | :--- | :--- | :--- | :--- | | `contactedBodyEntity` | `Entity` | `nil` | 충돌이 끝난 상대 물리 강체(Rigidbody) 엔티티를 지정합니다. | 생성자 서명은 `PhysicsContactEndEvent(Entity contactedBodyEntity = nil)` 입니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌이 끝날 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <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 ContactedBodyEntity** 충돌한 Ph
[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent의 ZoomIn, ZoomOut 메서드와 GoBack, GoForward 메서드를 조합하여, 키 입력 이벤트에 따라 웹 페이지를 확대하거나 축소하고, 방문 기록을 이전/다음 페이지로 이동하는 기능을 구현하는 스크립트를 작성해줘 [answer] | 사용자가 요청한 기능은 `WebViewComponent`의 `ZoomIn`, `ZoomOut`, `GoBack`, `GoForward` 메서드를 키 입력 이벤트와 연결하는 것입니다. 참고 문서에 따르면: 1. **메서드 정의**: * `void ZoomIn()`: 페이지를 조금씩 확대합니다. * `void ZoomOut()`: 페이지를 조금씩 축소합니다. * `void GoBack()`: 방문 기록의 이전 페이지로 이동합니다. * `void GoForward()`: 방문 기록의 다음 페 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI와 월드에 웹뷰(WebView)를 배치합니다. 웹 페이지의 조작 가능 여부, 탐색 방법 등을 설정할 수 있습니다. # Properties - **boolean ClickingEnabled [Sync]** 웹뷰에서 클릭을 가능하게 할지 여부입니다. - **DragMode DragMode** 웹뷰 내에서 드래그했을 때 어떻게 동작할지 설정합니다. - **float DragThreshold** 드래그 시 클릭으로 인식하지 않게 만들기 위한 임곗값입니다. 수치가 매우 높으면 드래그가 클릭으로 인식될 수 있습니다. - **
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserKickEvent [question] | UserKickEvent의 프로퍼티와 생성자 시그니처를 2줄 이내로 요약하세요. [answer] | UserKickEvent는 KickReason, ProfileCode, UserId 프로퍼티를 가지며, (IUser user) 또는 (KickReason kickReason = KickReason.Profanity, string userId = nil, string profileCode = nil) 시그니처의 생성자를 제공합니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 추방되었을 때 발생하는 이벤트입니다. 서버에서만 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **KickReason KickReason** 추방 사유입니다. - **string ProfileCode
[task] | instruction_following [pass] | ⏳ 미판정 [title] | PhysicsContactEndEvent [question] | PhysicsContactEndEvent를 수신하는 이벤트 핸들러 메서드의 mLua 코드만 출력하고, 충돌 종료 시 로그를 남기는 로직은 주석으로만 설명하세요. [answer] | ```lua Event Handler: [self] HandlePhysicsContactEndEvent (PhysicsContactEndEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: PhysicsColliderComponent -- Space: Server, Client --------------------------------------------------------- -- Parameters local Cont [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌이 끝날 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <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 ContactedBodyEntity** 충돌한 Ph
[task] | code [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | 엔진 상태 변수를 관리하여 W 또는 S 키 입력 시 WheelJointComponent 의 SetMotorEnable(1, true) 를 호출하고, 특정 조건에서 SetMotorEnable(1, false) 를 호출하는 EngineOff() 로이드를 실행하는 스크립트를 작성해줘 [answer] | ```lua Property: [server] boolean EngineOn = false Method: [server] void Accelerate() { self:EngineOn() } [server] void Deaccelerate() { self:EngineOn() } [server] void EngineOn() { if self.EngineOn then return end self.EngineOn = true self.Entity.WheelJointComponent:SetMotorEnable(1, true) [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint
[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | HandleKeyDownEvent에서 KeyboardKey.R 키를 누를 때마다 DistanceJointComponent의 연결 상태가 토글되는 로직은 어떤 원리로 작동하나요? [answer] | `HandleKeyDownEvent`에서 `KeyboardKey.R` 키 입력 시 `DistanceJointComponent`의 연결 상태를 토글하는 로직은 **현재 조인트 개수를 확인하여 연결이 없으면 추가하고, 이미 연결되어 있으면 해제**하는 방식으로 작동합니다. 구체적인 원리는 다음과 같습니다. 1. **입력 감지**: `InputService`의 `HandleKeyDownEvent` 핸들러가 실행되며, 누른 키가 `KeyboardKey.R`인지 확인합니다. 2. **상태 확인**: `self.Entity.Distan [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | W, S 키를 눌러 엔티티를 움직이는 예제입니다. ```lua Method: [server] void Accelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJointComponent:SetMotorSpeed(1, -10) } [server] void Deaccelerate() { self.Entity.WheelJointComponent:SetMotorEnable(1, true) self.Entity.WheelJoint
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitEndEvent [question] | UIBasicParticleComponent의 ParticleEmitEndEvent를 처리하여 파티클 종료 후 _TimerService:SetTimerOnce를 호출해 2초 뒤 특정 메시지를 로그로 출력하는 클라이언트 전용 스크립트를 작성해줘. [answer] | UIBasicParticleComponent는 Client 공간에서 `ParticleEmitEndEvent`를 발생시킵니다. 해당 이벤트를 처리하기 위해 `[self]` 태그의 Event Handler를 사용하고, 이벤트 핸들러 내부에서 `_TimerService:SetTimerOnce`를 호출하여 2초 후 로그를 출력하도록 구성합니다. ```lua Event Handler: [self] HandleParticleEmitEndEvent(ParticleEmitEndEvent event) { --------------- Nat [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클의 방출이 종료되었을 때 BaseParticleComponent에서 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="h
[task] | two_turn [pass] | ⏳ 미판정 [title] | PhysicsContactEndEvent [question] | 물리 충돌이 종료될 때 발생하는 PhysicsContactEndEvent 의 주요 속성과 생성자에 대해 알려주세요. [answer] | `PhysicsContactEndEvent`는 두 물리 강체(Rigidbody) 간의 충돌이 끝날 때 발생하는 이벤트입니다. 이 이벤트는 `PhysicsColliderComponent`에 의해 트리거되며, 서버(Server) 및 클라이언트(Client) 공간 모두에서 발생합니다. 주요 속성과 생성자는 다음과 같습니다. ### 1. 속성 (Properties) * **`ContactedBodyEntity`** (`Entity` 타입): * 충돌이 종료된 상대 물리 강체 엔티티를 참조합니다. * 이 속성을 [followup] | ContactedBodyEntity 속성이 충돌 종료 시점에 어떤 값을 가지며, 이 이벤트가 Server와 Client 공간에서 모두 발생하는 경우 처리 방식은 어떻게 되나요? [followup_answer] | `PhysicsContactEndEvent`의 `ContactedBodyEntity` 속성과 Server/Client 공간에서의 처리 방식에 대해 설명합니다. ### 1. `ContactedBodyEntity` 속성의 값 `ContactedBodyEntity` 속성은 **충돌이 종료된 상대 물리 강체(Rigidbody) 엔티티**를 참조하는 `Entity` 타입의 값입니다. * **의미**: 현재 엔티티(`self.Entity`)와 충돌이 끝난 다른 엔티티를 가리킵니다. * **활용**: 이 속성을 통해 충돌한 대상 엔티 [scores] | [judge_reason] | [source_doc] | 두 물리 강체가 충돌이 끝날 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * PhysicsColliderComponent <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 ContactedBodyEntity** 충돌한 Ph
[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | AddJoint 메서드에서 localAnchorA와 localAnchorB의 좌표가 각각 어떤 엔티티의 로컬 좌표계를 기준으로 해야 하는지 헷갈리는데, targetEntity와 자기 자신 중 어디에 해당하나요? [answer] | `WheelJointComponent`의 `AddJoint` 메서드에서 `localAnchorA`와 `localAnchorB`의 좌표 기준은 다음과 같습니다. * **localAnchorA**: **자기 자신(`self.Entity`)**의 로컬 좌표계를 기준으로 합니다. * **localAnchorB**: **`targetEntity`**의 로컬 좌표계를 기준으로 합니다. 즉, 바퀴 조인트를 생성할 때 자기 엔티티의 어느 위치(로컬 좌표)와 타겟 엔티티의 어느 위치(로컬 좌표)를 연결할지를 지정하는 것입니다. 참고로 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl
[task] | single_turn [pass] | ⏳ 미판정 [title] | UserKickEvent [question] | UserKickEvent는 클라이언트에서도 수신할 수 있나요? [answer] | UserKickEvent는 서버에서만 발생하는 이벤트입니다. 따라서 클라이언트에서 이 이벤트를 수신할 수 없습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 추방되었을 때 발생하는 이벤트입니다. 서버에서만 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **KickReason KickReason** 추방 사유입니다. - **string ProfileCode
[task] | single_turn [pass] | ⏳ 미판정 [title] | WheelJointComponent [question] | 바퀴가 회전하도록 MotorEnable을 true로 설정하고 MotorSpeed를 주었는데도 강체가 움직이지 않는다면, MaxMotorTorque 값이 0으로 되어 있는 것이 가장 흔한 원인일까요? [answer] | 네, **MaxMotorTorque 값이 0으로 설정되어 있는 것이 가장 흔한 원인**입니다. `WheelJoint`에서 `MotorEnable`을 `true`로 설정하고 `MotorSpeed`를 부여하더라도, 실제 회전력을 발생시키는 값은 `MaxMotorTorque`입니다. `MaxMotorTorque`가 0이면 모터가 작동하더라도 강체에 전달되는 토크(회전력)가 0이므로 강체가 움직이지 않습니다. 강체가 움직이도록 하려면 `SetMaxMotorTorque` 메서드를 통해 0 이상의 값(예: 100, 500 등)을 설정해야 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | WheelJoint를 생성, 삭제합니다. 연결된 강체가 바퀴처럼 동작합니다. # Properties - **SyncList<WheelJoint> Joints [Sync] [ReadOnly]** Joint 정보를 설정합니다. ##### inherited from Component: - **boolean Enable [Sync]** 컴포넌트 활성화 여부를 확인합니다. - **boolean EnableInHierarchy [ReadOnly] [HideFromInspector]** 계층 구조상에서 이 컴포넌트가 Enabl
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitStartEvent [question] | BasicParticleComponent 를 사용하여 파티클 방출 시작 시 log("Basic Particle Started") 를 출력하는 스크립트를 작성해줘 [answer] | BasicParticleComponent에서 파티클 방출이 시작될 때 발생하는 `ParticleEmitStartEvent`를 처리하면 됩니다. 해당 이벤트 핸들러 내에서 요구하신 로그 메시지를 출력하도록 작성했습니다. ```lua Event Handler: [self] HandleParticleEmitStartEvent(ParticleEmitStartEvent event) { ----------------- Native Event Sender Info ---------------- -- Sender: BasicParticleC [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 입자 방출이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="https://img.shields.io/st
[task] | single_turn [pass] | ⏳ 미판정 [title] | ParticleEmitStartEvent [question] | 서버에서만 실행되는 [server only] 메서드에서 UIAreaParticleComponent의 ParticleEmitStartEvent를 수신하려면 어떤 특별한 처리가 필요한가요? [answer] | 참고 문서에 따르면, `UIAreaParticleComponent`는 **Client** 공간에서만 `ParticleEmitStartEvent`를 발생시킵니다. 따라서 `[server only]` 메서드에서 이 이벤트를 수신할 수 없습니다. 서버와 클라이언트는 별도의 실행 공간이며, 클라이언트 전용 이벤트는 서버로 전달되지 않기 때문에 이를 수신하기 위한 특별한 처리 방법이나 API가 존재하지 않습니다. 클라이언트에서 발생하는 `ParticleEmitStartEvent`를 처리하려면 `[client only]` 또는 `[clie [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 입자 방출이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="https://img.shields.io/st
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserKickEvent [question] | UserKickEvent 생성자의 매개변수 이름과 기본값을 표로 정리하세요. [answer] | `UserKickEvent` 생성자의 매개변수 이름과 기본값은 다음과 같습니다. | 생성자 시그니처 | 매개변수 | 타입 | 기본값 | | :--- | :--- | :--- | :--- | | `UserKickEvent(IUser user)` | `user` | `IUser` | 없음 | | `UserKickEvent(KickReason kickReason, string userId, string profileCode)` | `kickReason` | `KickReason` | `KickReason.Profanity` | | `U [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 추방되었을 때 발생하는 이벤트입니다. 서버에서만 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **KickReason KickReason** 추방 사유입니다. - **string ProfileCode
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitStartEvent [question] | AreaParticleComponent 가 붙은 엔티티에서 ParticleEmitStartEvent 가 발생하면 self:OnParticleStart() 를 호출하도록 하는 스크립트를 작성해줘 [answer] | `AreaParticleComponent`는 Server, Client 양쪽에서 `ParticleEmitStartEvent`를 발생시키므로, 이벤트 핸들러는 `[self]` 공간으로 작성해야 합니다. 이벤트가 발생하면 `self:OnParticleStart()`를 호출하는 로직은 `Method:` 블록에 정의합니다. ```lua Property: [None] Method: [server] void OnParticleStart() { log("AreaParticle start") } Event Handler: [self] [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 입자 방출이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="https://img.shields.io/st
[task] | instruction_following [pass] | ⏳ 미판정 [title] | WebLoadCompleteEvent [question] | WebLoadCompleteEvent의 생성자 시그니처를 코드 블록으로만 출력하세요. [answer] | ```lua WebLoadCompleteEvent() ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 웹 페이지 로드 완료 시 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * WebViewComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **WebLoadCompleteEvent()** 지정한 값으로 WebLoadCompleteEvent를 초기화합니
[task] | instruction_following [pass] | ⏳ 미판정 [title] | UserKickEvent [question] | UserKickEvent를 직접 초기화하는 mLua 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Method: [server only] void OnBeginPlay() { -- UserKickEvent를 직접 초기화합니다. -- 첫 번째 인자로 KickReason을 지정하고, 두 번째와 세 번째 인자로 UserId와 ProfileCode를 지정할 수 있습니다. -- 기본값은 KickReason.Profanity, nil, nil 입니다. local kickEvent = UserKickEvent(KickReason.Profanity, "user_12345", "PROFILE_ABC") [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 유저가 추방되었을 때 발생하는 이벤트입니다. 서버에서만 발생합니다. 이 Event는 아래 API에 의해 발생합니다. * UserService <img src="https://img.shields.io/static/v1?label=Space&message=Server&color=c4a484" alt="custom" title="Server에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **KickReason KickReason** 추방 사유입니다. - **string ProfileCode
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitEndEvent [question] | BasicParticleComponent의 ParticleEmitEndEvent를 처리하여 파티클 방출 종료 시점에 self.Entity의 위치를 로그로 출력하는 스크립트를 작성해줘. [answer] | BasicParticleComponent에서 `ParticleEmitEndEvent`를 처리하려면 `Event Handler` 블록을 사용해야 합니다. 참고 문서에 따르면 `BasicParticleComponent`는 Server와 Client 양쪽에서 이벤트를 발생시키므로, `[self]` 또는 `[client]`/`[server]` 중 적절한 실행 공간을 지정할 수 있습니다. 엔티티의 위치를 로그로 출력하는 것은 클라이언트에서 확인하기 용이하므로 `[client]` 공간을 기준으로 작성합니다. `ParticleEmitEndEv [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클의 방출이 종료되었을 때 BaseParticleComponent에서 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="h
[task] | instruction_following [pass] | ⏳ 미판정 [title] | WebLoadCompleteEvent [question] | WebLoadCompleteEvent가 발생하는 컴포넌트와 실행 공간을 2문장 이내로 설명하세요. [answer] | WebLoadCompleteEvent는 WebViewComponent에 의해 발생합니다. 이 이벤트는 클라이언트(Client) 공간에서 발생하며 처리됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 웹 페이지 로드 완료 시 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * WebViewComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> # Constructors - **WebLoadCompleteEvent()** 지정한 값으로 WebLoadCompleteEvent를 초기화합니
[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | WebViewComponent의 Url 프로퍼티와 Reload 메서드를 사용하여, 특정 시간 간격으로 웹 페이지 주소를 http와 https 사이로 번갈아 변경하고 변경 후 1초마다 페이지를 다시 로드하는 스크립트를 작성해줘 [answer] | WebViewComponent의 `Url` 프로퍼티와 `Reload` 메서드를 사용하여 요청하신 기능을 구현할 수 있습니다. 참고 사항: 1. `Reload` 메서드는 `[Client]` 실행 공간에서만 사용할 수 있으므로, 해당 메서드가 포함된 로직은 클라이언트에서 실행되어야 합니다. 2. `Url` 프로퍼티는 `[Sync]` 속성이므로 서버에서 설정하면 클라이언트로 동기화됩니다. 3. 질문에서는 "변경 후 1초마다"라고 하셨으나, 일반적인 웹뷰 리로드 시나리오를 고려할 때 **주소 변경 직후 1초 후에 리로드**하는 것으로 해 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | UI와 월드에 웹뷰(WebView)를 배치합니다. 웹 페이지의 조작 가능 여부, 탐색 방법 등을 설정할 수 있습니다. # Properties - **boolean ClickingEnabled [Sync]** 웹뷰에서 클릭을 가능하게 할지 여부입니다. - **DragMode DragMode** 웹뷰 내에서 드래그했을 때 어떻게 동작할지 설정합니다. - **float DragThreshold** 드래그 시 클릭으로 인식하지 않게 만들기 위한 임곗값입니다. 수치가 매우 높으면 드래그가 클릭으로 인식될 수 있습니다. - **
[task] | code [pass] | ⏳ 미판정 [title] | WebViewComponent [question] | _SpawnService:SpawnByModelId로 생성한 Button_Forward와 Button_Backward 엔티티에 Event Handler를 추가하여 각각 WebViewComponent의 GoForward와 GoBack 메서드를 호출하도록 처리하는 스크립트를 작성해줘 [answer] | 참고 문서에는 `WebViewComponent`의 `GoForward`와 `GoBack` 메서드, 그리고 버튼 클릭 시 이를 호출하는 구체적인 코드 예제가 포함되어 있지 않습니다. 문서에 제시된 예제는 버튼과 입력 필드를 생성하고 레이아웃만 설정하는 부분까지로 끝나며, 실제 웹뷰 조작 로직은 누락되어 있습니다. 따라서 요청하신 대로 **`WebViewComponent`의 `GoForward`와 `GoBack` 메서드를 호출하는 스크립트는 작성할 수 없습니다.** 대신, 참고 문서에 존재하는 정보만을 기반으로 `Button_For [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | `+`, `-`키로 웹뷰 화면을 확대/축소하는 예제입니다. 화면 우측에 주소 입력 UI와 앞으로 가기, 뒤로 가기 버튼이 생성됩니다. WebViewComponent가 있는 엔티티에 새로운 컴포넌트를 만들어 추가하고, 아래 코드를 작성합니다. ```lua Method: [client only] void OnBeginPlay () { local webview = self.Entity.WebViewComponent if webview == nil then log_error("Entity doesn't have WebView
[task] | code [pass] | ⏳ 미판정 [title] | ParticleEmitStartEvent [question] | UIAreaParticleComponent 가 클라이언트에서 ParticleEmitStartEvent 를 발생시킬 때, self:HandleUIParticleStart(ParticleEmitStartEvent event) 함수를 정의하고 그 안에서 log("UI Area Particle Emit Start") 를 출력하는 스크립트를 작성해줘 [answer] | `UIAreaParticleComponent`는 클라이언트(Space: Client)에서 `ParticleEmitStartEvent`를 발생시킵니다. 따라서 이 이벤트를 처리하는 이벤트 핸들러는 클라이언트 공간에서 실행되어야 합니다. 요구사항에 따라 `HandleUIParticleStart` 함수를 정의하고, 그 안에서 로그를 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleUIParticleStart(ParticleEmitStartEvent event) { log("UI A [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 파티클 입자 방출이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * AreaParticleComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * BasicParticleComponent <img src="https://img.shields.io/st