← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 268/274
🔀 랜덤
불러오는 중…

[task] | diverse_qa [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 질문: `DetectPlayer()` 함수는 어떤 실행 공간에서 동작하나요? 답변: `DetectPlayer()` 함수는 `[server only]` 실행 공간에서 동작합니다. 질문: `DetectPlayer()` 함수 내에서 가장 가까운 플레이어를 찾기 위해 사용하는 기준 거리는 무엇인가요? 답변: `self.DetectionRange` 속성 값이 초기 최소 거리(`minDist`)로 사용되어 기준이 됩니다. 질문: `DetectPlayer()` 함수에서 플레이어의 위치를 2차원 벡터로 변환하는 메서드 이름은 무엇인가요? 답변 [original] | ```lua [server only] void DetectPlayer() { local target = nil local minDist = self.DetectionRange local myPos = self.Entity.TransformComponent.WorldPosition:ToVector2() local users = _UserService.UserEntities for userId, user in pairs(user [chunk_id] | Guides:1399:4

[task] | distill [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | **ActionChangeStateAlert** | 몬스터 머티리얼 변경 (감지 범위 빨간색) | | **ActionChangeStateCalm** | 몬스터 머티리얼 원복 (감지 범위 초록색) | | **ActionFollow** | 플레이어 추적 | | **ActionMoveRandom** | 무작위 방향 이동 | | **ActionStop** | 정지 | | **ActionWait** | 일정 시간 대기 | | ** [original] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | ActionChangeStateAlert| 몬스터의 머티리얼을 변경합니다. 감지 범위는 빨간색으로 변경됩니다. | | ActionChangeStateCalm | 몬스터의 머티리얼을 원래대로 되돌립니다. 감지 범위를 나타내는 원의 색상을 초록색으로 변경합니다. | | ActionFollow | 플레이어를 추적합니다. | | ActionMoveRandom | 무작위 방향으로 이동합니다. | | ActionStop | 정지 [chunk_id] | Guides:1399:5

[task] | knowledge_list [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 제공된 문서에 포함된 정보만 기반으로 핵심 사실을 추출하여 목록으로 정리했습니다. * `ActionChangeStateAlert` 노드는 몬스터의 머티리얼을 Rainbow 머티리얼로 변경하고, `PolygonRendererComponent`의 색상을 빨간색(`Color(1, 0, 0, 0.25)`)으로 변경하는 역할을 수행합니다. * `ActionChangeStateAlert`의 `OnBehave` 메서드는 `self.ParentAI.Entity.SpriteRendererComponent`와 `self.ParentAI.En [original] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | ActionChangeStateAlert| 몬스터의 머티리얼을 변경합니다. 감지 범위는 빨간색으로 변경됩니다. | | ActionChangeStateCalm | 몬스터의 머티리얼을 원래대로 되돌립니다. 감지 범위를 나타내는 원의 색상을 초록색으로 변경합니다. | | ActionFollow | 플레이어를 추적합니다. | | ActionMoveRandom | 무작위 방향으로 이동합니다. | | ActionStop | 정지 [chunk_id] | Guides:1399:5

[task] | distill [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | ### 행동 트리 노드 구현 #### ActionWait 일정 시간(`Time`) 동안 `Running`을 반환하고, 시간이 경과하면 `Success`를 반환합니다. ```lua Property: number ElapsedTime = 0 number Time = 0 Method: void OnInit() { self.ElapsedTime = 0 } void OnBehave(number delta) { self.ElapsedTime += delta if self.ElapsedTime >= self [original] | 일정 시간 동안 동작을 멈추고 대기합니다. 일정 시간이 경과하기 전까지 Running을 반환하고, 시간이 경과하면 Success를 반환하도록 아래와 같이 작성합니다. ```lua Property: number ElapsedTime = 0 number Time = 0 Method: void OnInit() { self.ElapsedTime = 0 } void OnBehave(number delta) { self.ElapsedTime += delta if self.ElapsedTime >= self. [chunk_id] | Guides:1399:7

[task] | wikipedia [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | ### ActionNode, DecoratorNode 만들기 BehaviourTree Editor에서는 몬스터의 행동 패턴을 구성하기 위해 ActionNode와 DecoratorNode를 제공합니다. ActionNode는 실제 행동을 수행하며, DecoratorNode는 자식 노드의 실행 조건을 제어합니다. ActionNode에는 몬스터의 상태 변경, 이동, 대기, 정지 등의 행동을 담당하는 노드들이 있습니다. **ActionChangeStateAlert**는 몬스터의 머티리얼을 변경하여 감지 범위를 빨간색으로 표시하며, **A [original] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | ActionChangeStateAlert| 몬스터의 머티리얼을 변경합니다. 감지 범위는 빨간색으로 변경됩니다. | | ActionChangeStateCalm | 몬스터의 머티리얼을 원래대로 되돌립니다. 감지 범위를 나타내는 원의 색상을 초록색으로 변경합니다. | | ActionFollow | 플레이어를 추적합니다. | | ActionMoveRandom | 무작위 방향으로 이동합니다. | | ActionStop | 정지 [chunk_id] | Guides:1399:5

[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # 행동 트리(BehaviourTree) 에디터 사용법 ## 1. 개념 설명 행동 트리(Behaviour Tree, BT)는 에이전트(AI)의 동작을 트리 구조로 정의하는 시스템입니다. mLua 환경에서는 `BehaviourTree Editor`를 통해 시각적으로 노드를 배치하고 연결하여 로직을 구성합니다. 행동 트리는 크게 세 가지 유형의 노드로 구성됩니다. * **Composite Node**: 자식 노드들의 실행 방식을 제어하는 상위 노드입니다. 네이티브로 제공되는 `SelectorNode`, `ParallelNode [original] | 네이티브 Composite Node인 **SelectorNode, ParallelNode, SequenceNode**를 바로 생성하거나, **크리에이터가 생성한 Composite Node**를 추가할 수 있습니다. 노드를 생성하는 방법은 아래와 같습니다. 1. **Workspace - MyDesk - Create Scripts - Create BTNodeType - Create CompositeNode**를 눌러 Composite Node를 생성하고, 행동을 정의합니다. [행동 트리를 활용한 AI 만들기](/docs?postId [chunk_id] | Guides:1399:1

[task] | diverse_qa [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 질문: ActionWait 노드가 일정 시간 동안 동작을 멈추고 대기하기 위해 `OnBehave` 메서드에서 반환하는 상태 값은 무엇이며, 그 반환 조건은 어떻게 되나요? 답변: 일정 시간이 경과하기 전까지는 `BehaviourTreeStatus.Running`을 반환하고, 설정된 시간(`Time`)이 경과하면 `BehaviourTreeStatus.Success`를 반환합니다. 질문: 아래 코드에서 `ElapsedTime`이 `Time` 이상일 때 반환되는 값은 무엇인가요? ```lua if self.ElapsedTime >= s [original] | 일정 시간 동안 동작을 멈추고 대기합니다. 일정 시간이 경과하기 전까지 Running을 반환하고, 시간이 경과하면 Success를 반환하도록 아래와 같이 작성합니다. ```lua Property: number ElapsedTime = 0 number Time = 0 Method: void OnInit() { self.ElapsedTime = 0 } void OnBehave(number delta) { self.ElapsedTime += delta if self.ElapsedTime >= self. [chunk_id] | Guides:1399:7

[task] | distill [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # BehaviourTree Editor: 행동 트리 만들기 BlackBoard의 `PlayerInRange` 키를 활용하여 범위 내 플레이어 추적 및 몬스터 이동 로직을 구현합니다. ## PlayerInRange 추적 BlackBoard에서 `PlayerInRange` 엔티티를 조회하여 추적합니다. 타겟이 없으면 `Failure`, 도달 시 `Success`, 이동 중 `Running`을 반환합니다. ```lua Method: any OnBehave(number delta) { ---@type AIComponent [original] | BlackBoard의 PlayerInRange 키를 활용해 범위 안에 플레이어가 들어왔을 때 플레이어를 추적할 수 있도록 아래와 같이 작성합니다. ```lua Method: any OnBehave(number delta) { ---@type AIComponent local parentAI = self.ParentAI local transform = parentAI.Entity.TransformComponent local target = parentAI.BlackBoard:GetEntity("Player [chunk_id] | Guides:1399:6

[task] | knowledge_list [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 제시된 문서의 내용만을 기반으로 추출한 핵심 사실 목록입니다. **1. BlackBoard 키 접근 및 유효성 검사** `OnBehave` 메서드에서 `self.ParentAI.BlackBoard:GetEntity("PlayerInRange")`를 호출하여 키 이름이 `"PlayerInRange"`인 엔티티를 조회하며, 반환 값이 `nil`인 경우 즉시 `BehaviourTreeStatus.Failure`를 반환합니다. **2. 이동 방향 계산 및 벡터 변환** 타겟 엔티티와 현재 AI 엔티티의 `TransformComponen [original] | BlackBoard의 PlayerInRange 키를 활용해 범위 안에 플레이어가 들어왔을 때 플레이어를 추적할 수 있도록 아래와 같이 작성합니다. ```lua Method: any OnBehave(number delta) { ---@type AIComponent local parentAI = self.ParentAI local transform = parentAI.Entity.TransformComponent local target = parentAI.BlackBoard:GetEntity("Player [chunk_id] | Guides:1399:6

[task] | knowledge_list [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 제공된 문서에 포함된 정보에 기반하여, mLua 스크립트 및 BehaviourTree Editor 관련 핵심 사실을 정리합니다. **주의:** 문서에는 `ActionWait` 노드의 `Property`와 `OnInit`만 명시되어 있으며, `DecoHasNoTarget`과 `DecoHasTarget`은 `Method` 블록만 명시되어 있습니다. 또한 `AIPatrolComponent`의 구체적인 프로퍼티 정의는 문서에 없으므로, 코드 예시에 명시된 접근 방식(`self.ParentAI`, `parentAI.BlackBoard`)만 [original] | 일정 시간 동안 동작을 멈추고 대기합니다. 일정 시간이 경과하기 전까지 Running을 반환하고, 시간이 경과하면 Success를 반환하도록 아래와 같이 작성합니다. ```lua Property: number ElapsedTime = 0 number Time = 0 Method: void OnInit() { self.ElapsedTime = 0 } void OnBehave(number delta) { self.ElapsedTime += delta if self.ElapsedTime >= self. [chunk_id] | Guides:1399:7

[task] | diverse_qa [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 질문: `ActionChangeStateAlert` 노드의 주요 기능은 무엇인가요? 답변: 몬스터의 머티리얼을 변경하고, 감지 범위를 나타내는 색상을 빨간색으로 변경하는 기능입니다. 질문: `ActionChangeStateCalm` 노드 실행 시 감지 범위를 나타내는 원의 색상은 무엇으로 변경되나요? 답변: 초록색으로 변경됩니다. 질문: `DecoHasNoTarget` Decorator는 어떤 조건에서 자식 노드를 실행하나요? 답변: 감지된 플레이어가 없으면 자식 노드를 실행합니다. 질문: `DecoHasTarget` Deco [original] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | ActionChangeStateAlert| 몬스터의 머티리얼을 변경합니다. 감지 범위는 빨간색으로 변경됩니다. | | ActionChangeStateCalm | 몬스터의 머티리얼을 원래대로 되돌립니다. 감지 범위를 나타내는 원의 색상을 초록색으로 변경합니다. | | ActionFollow | 플레이어를 추적합니다. | | ActionMoveRandom | 무작위 방향으로 이동합니다. | | ActionStop | 정지 [chunk_id] | Guides:1399:5

[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # 행동 트리(BehaviourTree)를 활용한 AI 컴포넌트 구성 본 절에서는 `BehaviourTree Editor`를 활용해 몬스터 AI의 기본 동작을 구현하는 방법을 다룹니다. `AIComponent`를 확장하여 행동 트리 ID를 연결하고, 감지 범위 시각화 및 스프라이트 방향 반전 로직을 추가하는 과정을 설명합니다. ## 1. 개념 및 컴포넌트 확장 기본 AI 로직을 구현하기 위해 `NativeScripts`에 포함된 `AIComponent`를 상속(Extend)받습니다. 이 과정에서 생성된 컴포넌트는 맵의 엔티티( [original] | 1. **Workspace - BaseEnvironment - NativeScripts - Component - AIComponent**를 선택해 Extend합니다. 이름을 **AIPatrolComponent**로 변경합니다. 2. 맵에 배치한 몬스터에 **AIPatrolComponent**를 추가하고, **BehaviourTreeId**에 **AIPatrol**의 **Entry Id**를 입력합니다. 3. **AIPatrolComponent**에 새로운 `DrawRange()` 함수를 추가합니다. **PolygonR [chunk_id] | Guides:1399:3

[task] | distill [title] | Background Editor [category] | Guides [rephrased] | # UI Background Editor Background Editor는 MSW 배경 템플릿 수정 또는 신규 배경 제작을 위한 도구입니다. **진입 경로**: `Resource Storage > Background Templates > Make Background` 또는 `Windows > Background Editor` ## 주요 기능 및 UI * **생성/가져오기**: 신규 배경 생성, 기존 배경/템플릿 불러오기 * **캔버스 & Pieces**: Piece 배치 확인 및 목록 관리 (추가/복제/삭제). 목록 순서 [original] | Background Editor를 활용해 MSW에서 제공하는 배경 템플릿을 수정하거나, 직접 배경을 제작할 수 있습니다. ##### 참고 가이드 * [배경 설정하기](/docs?postId=768) ## Background Editor 소개 Background Editor에서 메이플스토리 월드에서 제공하는 배경 템플릿을 크리에이터의 필요에 따라 수정하거나, 새로운 배경을 만들 수 있습니다. Background Editor에 진입하는 방법은 다음과 같습니다. - Resource Storage - Background Templa [chunk_id] | Guides:1400:0

[task] | diverse_qa [title] | Background Editor [category] | Guides [rephrased] | 질문: Background Editor에 진입하는 두 가지 방법은 무엇인가요? 답변: Resource Storage의 Background Templates에서 컨텍스트 메뉴를 통해 Make Background를 선택하거나, Windows 메뉴에서 Background Editor를 선택하는 방법입니다. 질문: Background Editor의 '가져오기' 버튼의 기능은 무엇인가요? 답변: 크리에이터가 직접 제작한 배경이나 MSW 리소스의 background template를 가져오는 기능을 수행합니다. 질문: Pieces 목록의 [original] | Background Editor를 활용해 MSW에서 제공하는 배경 템플릿을 수정하거나, 직접 배경을 제작할 수 있습니다. ##### 참고 가이드 * [배경 설정하기](/docs?postId=768) ## Background Editor 소개 Background Editor에서 메이플스토리 월드에서 제공하는 배경 템플릿을 크리에이터의 필요에 따라 수정하거나, 새로운 배경을 만들 수 있습니다. Background Editor에 진입하는 방법은 다음과 같습니다. - Resource Storage - Background Templa [chunk_id] | Guides:1400:0

[task] | wikipedia [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | BehaviourTree Editor를 활용한 행동 트리(Behaviour Tree) 제작은 AI의 의사결정 구조를 시각적으로 구성하고, 이를 mLua 스크립트로 구현하는 과정입니다. 본 가이드에서는 대기 처리와 목표 존재 여부 확인을 위한 데코레이터(Decorator) 노드 구현 방법과, BehaviourTree Editor에서의 최종 조립 과정을 다룹니다. 대기(Wait) 동작을 구현하기 위해서는 일정 시간 동안 동작을 멈추고 대기하는 로직이 필요합니다. 이를 위해 `OnBehave` 메서드 내에서 누적된 시간(`Elapsed [original] | 일정 시간 동안 동작을 멈추고 대기합니다. 일정 시간이 경과하기 전까지 Running을 반환하고, 시간이 경과하면 Success를 반환하도록 아래와 같이 작성합니다. ```lua Property: number ElapsedTime = 0 number Time = 0 Method: void OnInit() { self.ElapsedTime = 0 } void OnBehave(number delta) { self.ElapsedTime += delta if self.ElapsedTime >= self. [chunk_id] | Guides:1399:7

[task] | diverse_qa [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | 질문: 제공된 첫 번째 코드 블록에서 `BlackBoard:GetEntity("PlayerInRange")`가 반환하는 값이 `nil`일 때 행동 트리는 어떤 상태를 반환합니까? 답변: `BehaviourTreeStatus.Failure`를 반환합니다. 질문: 첫 번째 코드 블록에서 플레이어와의 거리가 0보다 클 때 AI는 어떤 동작을 수행합니까? 답변: 플레이어 방향으로 정규화된 벡터를 구하여 `MovementComponent`의 `MoveToDirection` 메서드를 호출하며, 이후 `BehaviourTreeStatus.Ru [original] | BlackBoard의 PlayerInRange 키를 활용해 범위 안에 플레이어가 들어왔을 때 플레이어를 추적할 수 있도록 아래와 같이 작성합니다. ```lua Method: any OnBehave(number delta) { ---@type AIComponent local parentAI = self.ParentAI local transform = parentAI.Entity.TransformComponent local target = parentAI.BlackBoard:GetEntity("Player [chunk_id] | Guides:1399:6

[task] | extract_knowledge [title] | StateSet 제어하기 [category] | Guides [rephrased] | # StateSet 기반 상태 머신 구성 및 제어 본 절에서는 `StateSet`을 이용하여 게임 로직을 상태 머신(State Machine)으로 구성하는 방법, 노드(Node)와 전이(Transition)의 설정, 그리고 스크립트 기반 조건 및 동작을 적용하는 절차를 다룬다. 예제로는 3초마다 확률적으로 아이템을 스폰하는 `Gacha` 시스템과 물리 힘을 가하는 `Reward` 상태를 사용한다. ## 1. 개념: StateSet, 노드, 전이 `StateSet`은 엔티티의 상태 흐름을 정의하는 컨테이너이다. 상태 머신은 다음 [original] | 1. **Gacha** StateSet의 노드들에 아래와 같이 값을 설정합니다. | 이름 | IsNative | ScriptStateTypeId | 프로퍼티 | | --- | --- | --- | --- | | READY | true | - | NativeStateType: DoNothing | | TRY | true| - | NativeStateType: DoNothing | | SPAWN_POTION | false| SpawnModel | ModelId: Pot [chunk_id] | Guides:1398:8

[task] | distill [title] | Background Editor [category] | Guides [rephrased] | # UI Background Editor: Piece 모드 설정 Piece는 `Mode`에 따라 동작 방식을 결정하며, `Parallax`(카메라 연동)와 `Transition`(일정 속도 이동) 두 가지가 있습니다. ## 공통 프로퍼티 두 모드 모두 아래 프로퍼티를 공유합니다. | 프로퍼티 | 설명 | | :--- | :--- | | **RepeatDirection** | 반복 형식: `None`, `X`, `Y`, `Both` 중 선택 | | **RepeatOffset** | 반복 간격: `0`이면 `ResourceRUID [original] | Piece를 모드에 따라 상세값을 설정할 수 있습니다. | 프로퍼티 | 설명 | | --- | --- | | Mode | Piece에 적용할 모드를 선택합니다. <ul><li>Parallax: Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다.</li><li>Transition: Piece가 일정한 방향과 속도로 움직입니다. </li></ul> | #### Parallax Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다. ![[object Object]](h [chunk_id] | Guides:1400:1

[task] | wikipedia [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # BehaviourTree Editor로 행동 트리 만들기 본 가이드는 메이플스토리 월드의 `BehaviourTree Editor`를 사용하여 AI의 행동 로직을 구현하는 방법에 대해 설명합니다. 특히, 블랙보드(BlackBoard)의 상태를 기반으로 플레이어 추적, 무작위 이동, 정지 등의 동작을 제어하는 구체적인 스크립트 작성법을 다룹니다. ## 플레이어 범위 진입 시 추적 블랙보드의 `PlayerInRange` 키를 활용하여 지정된 범위 안에 플레이어가 진입했을 때 해당 플레이어를 추적하도록 행동 노드를 구성할 수 있습 [original] | BlackBoard의 PlayerInRange 키를 활용해 범위 안에 플레이어가 들어왔을 때 플레이어를 추적할 수 있도록 아래와 같이 작성합니다. ```lua Method: any OnBehave(number delta) { ---@type AIComponent local parentAI = self.ParentAI local transform = parentAI.Entity.TransformComponent local target = parentAI.BlackBoard:GetEntity("Player [chunk_id] | Guides:1399:6

[task] | knowledge_list [title] | Background Editor [category] | Guides [rephrased] | 제시된 문서 내용만을 바탕으로 추출한 핵심 사실 목록입니다. * Background Editor는 `Resource Storage > Background Templates > 컨텍스트 메뉴 > Make Background` 또는 `Windows > Background Editor` 경로를 통해 진입할 수 있으며, MSW 제공 배경 템플릿 수정 및 신규 배경 제작에 사용됩니다. * Background Editor의 '새로 만들기' 기능은 새로운 배경 리소스를 생성하고, '가져오기' 기능은 크리에이터 제작 배경 또는 MSW 리 [original] | Background Editor를 활용해 MSW에서 제공하는 배경 템플릿을 수정하거나, 직접 배경을 제작할 수 있습니다. ##### 참고 가이드 * [배경 설정하기](/docs?postId=768) ## Background Editor 소개 Background Editor에서 메이플스토리 월드에서 제공하는 배경 템플릿을 크리에이터의 필요에 따라 수정하거나, 새로운 배경을 만들 수 있습니다. Background Editor에 진입하는 방법은 다음과 같습니다. - Resource Storage - Background Templa [chunk_id] | Guides:1400:0

[task] | knowledge_list [title] | Background Editor [category] | Guides [rephrased] | 1. UI Background Editor의 `Mode` 프로퍼티는 Piece에 적용할 모드를 `Parallax` 또는 `Transition` 중 하나로 선택하는 데 사용됩니다. 2. `Parallax` 모드는 Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤되도록 설정하는 모드입니다. 3. `Transition` 모드는 Piece가 일정한 방향과 속도로 움직이도록 설정하는 모드입니다. 4. `Parallax` 및 `Transition` 모드 모두에서 `RepeatDirection` 프로퍼티는 Piece의 [original] | Piece를 모드에 따라 상세값을 설정할 수 있습니다. | 프로퍼티 | 설명 | | --- | --- | | Mode | Piece에 적용할 모드를 선택합니다. <ul><li>Parallax: Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다.</li><li>Transition: Piece가 일정한 방향과 속도로 움직입니다. </li></ul> | #### Parallax Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다. ![[object Object]](h [chunk_id] | Guides:1400:1

[task] | distill [title] | Lazy Map [category] | Guides [rephrased] | ## LazyMap 서버 메모리 및 연산 자원 최적화를 위해 필요할 때만 맵을 동적으로 생성하는 기능입니다. 모든 유저가 필수로 거치는 로비 맵에는 적용하지 않는 것을 권장하며, 특수한 맵에 적용합니다. ### 설정 Hierarchy에서 대상 맵을 선택 후 Property의 `IsLazyMap`을 `true`로 설정합니다. ### 생성 시점 유저 상호작용이나 스크립트 호출 등 실제 접근이 발생하는 시점에 생성됩니다. 1. **PortalComponent 이동**: LazyMap 포탈에 링크되어 유저가 포탈을 이용할 때. 2. [original] | 월드의 규모가 커질수록 서버 메모리 관리와 성능 최적화가 필요합니다. LazyMap을 사용하면 맵을 동적으로 생성하고, 서버 자원을 효율적으로 관리할 수 있습니다. ## LazyMap LazyMap은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 뜻합니다. LazyMap을 적절하게 활용하면 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 주로 처음부터 생성될 필요 없는 특수한 맵에 적용해 사용할 수 있습니다. 반대로 모든 월드 유저가 반드시 거치는 [chunk_id] | Guides:1401:0

[task] | wikipedia [title] | Background Editor [category] | Guides [rephrased] | # Background Editor Background Editor는 메이플스토리 월드(MSW)에서 제공하는 배경 템플릿을 크리에이터의 필요에 따라 수정하거나, 새로운 배경을 직접 제작하는 데 사용되는 도구입니다. 배경 설정에 대한 추가 정보는 [배경 설정하기](/docs?postId=768) 가이드를 참고할 수 있습니다. ## 진입 방법 Background Editor에 진입하는 방법은 두 가지입니다. 첫째, Resource Storage의 Background Templates 항목에서 컨텍스트 메뉴를 열고 Make Back [original] | Background Editor를 활용해 MSW에서 제공하는 배경 템플릿을 수정하거나, 직접 배경을 제작할 수 있습니다. ##### 참고 가이드 * [배경 설정하기](/docs?postId=768) ## Background Editor 소개 Background Editor에서 메이플스토리 월드에서 제공하는 배경 템플릿을 크리에이터의 필요에 따라 수정하거나, 새로운 배경을 만들 수 있습니다. Background Editor에 진입하는 방법은 다음과 같습니다. - Resource Storage - Background Templa [chunk_id] | Guides:1400:0

[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # 행동 트리(BehaviourTree)를 활용한 플레이어 감지 로직 구현 ## 1. 개념 설명 행동 트리(BehaviourTree)는 NPC나 객체의 복잡한 행동을 결정하는 구조적 패턴입니다. 이 절에서는 행동 트리의 입력으로 사용할 수 있는 **Blackboard(블랙보드)** 데이터를 동적으로 갱신하는 방법을 다룹니다. 구체적으로, 서버 측에서 주기적으로 주변 플레이어의 위치를 계산하여 가장 가까운 플레이어를 블랙보드의 `PlayerInRange` 엔티티에 저장하는 `DetectPlayer()` 함수와, 이를 호출하는 라이프 [original] | ```lua [server only] void DetectPlayer() { local target = nil local minDist = self.DetectionRange local myPos = self.Entity.TransformComponent.WorldPosition:ToVector2() local users = _UserService.UserEntities for userId, user in pairs(user [chunk_id] | Guides:1399:4

[task] | knowledge_list [title] | Lazy Map [category] | Guides [rephrased] | 제시된 문서 내용을 바탕으로 추출한 핵심 사실 목록입니다. 1. 스크립트의 프로퍼티 또는 이벤트 핸들러에서 LazyMap 내 엔티티를 직접 참조하면, 해당 LazyMap은 정적 맵에서 월드 초기화 시점에 서버와 함께 로드됩니다. 2. 월드 플레이 중 LazyMap이 생성될 때, 그 LazyMap 내 스크립트가 다른 LazyMap을 프로퍼티나 이벤트로 참조하고 있다면 참조 대상 LazyMap도 함께 즉시 로드됩니다. 3. `EntityRef` 타입의 프로퍼티나 변수는 LazyMap을 생성시키지 않으며, `EntityRef`가 실제 [original] | 스크립트의 프로퍼티 또는 이벤트로 참조할 때 동적으로 맵이 생성됩니다. **월드 초기화 시점**: 정적 맵에서 LazyMap의 엔티티를 프로퍼티나 이벤트로 직접 참조하는 스크립트가 있다면, 해당 LazyMap은 서버 초기화 시점에 함께 로드됩니다. **월드 플레이 중**: 월드 플레이 중 LazyMap이 생성될 때 그 안의 참조 대상인 다른 LazyMap도 함께 생성됩니다. 예를 들어 LazyMap1이 생성될 때 LazyMap1에 LazyMap2를 참조하는 프로퍼티나 이벤트를 가진 스크립트가 있다면 LazyMap2도 LazyMa [chunk_id] | Guides:1401:1

[task] | wikipedia [title] | Background Editor [category] | Guides [rephrased] | # UI Background Editor UI Background Editor는 배경(Piece)의 동작 방식을 설정하는 도구입니다. 사용자 모드(Mode)에 따라 세부 프로퍼티를 구성할 수 있으며, 주요 모드인 Parallax와 Transition으로 나뉩니다. ## 모드 (Mode) Piece에 적용할 동작 모드를 선택하는 프로퍼티입니다. 선택 가능한 모드는 다음과 같습니다. * **Parallax**: Piece가 카메라와 연동되어, 카메라의 이동 속도에 따라 상대적으로 다른 속도로 스크롤되는 효과를 적용합니다. * [original] | Piece를 모드에 따라 상세값을 설정할 수 있습니다. | 프로퍼티 | 설명 | | --- | --- | | Mode | Piece에 적용할 모드를 선택합니다. <ul><li>Parallax: Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다.</li><li>Transition: Piece가 일정한 방향과 속도로 움직입니다. </li></ul> | #### Parallax Piece가 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다. ![[object Object]](h [chunk_id] | Guides:1400:1

[task] | wikipedia [title] | Lazy Map [category] | Guides [rephrased] | LazyMap은 월드의 규모가 확대됨에 따라 필요한 서버 메모리 관리와 성능 최적화를 위한 기법으로, 맵을 동적으로 생성하고 서버 자원을 효율적으로 관리하는 데 사용됩니다. LazyMap으로 지정된 맵은 서버가 처음 시작될 때 즉시 생성되지 않고, 특정 조건이 충족될 때까지 지연됩니다. 이를 통해 서버의 메모리 점유율을 낮추고 연산 처리 자원을 최적화할 수 있습니다. 이 기법은 처음부터 생성될 필요가 없는 특수한 맵에 적용하는 것이 적절합니다. 반대로, 모든 월드 유저가 반드시 거쳐야 하는 로비와 같은 필수 맵에는 LazyMap [original] | 월드의 규모가 커질수록 서버 메모리 관리와 성능 최적화가 필요합니다. LazyMap을 사용하면 맵을 동적으로 생성하고, 서버 자원을 효율적으로 관리할 수 있습니다. ## LazyMap LazyMap은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 뜻합니다. LazyMap을 적절하게 활용하면 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 주로 처음부터 생성될 필요 없는 특수한 맵에 적용해 사용할 수 있습니다. 반대로 모든 월드 유저가 반드시 거치는 [chunk_id] | Guides:1401:0

[task] | diverse_qa [title] | Lazy Map [category] | Guides [rephrased] | 질문: LazyMap의 주요 목적은 무엇인가요? 답변: 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화하기 위해 맵을 동적으로 생성하고 서버 자원을 효율적으로 관리하는 것입니다. 질문: 모든 월드 유저가 반드시 거치는 로비 맵에 LazyMap을 설정하는 것이 권장되나요? 답변: 아니요, 로비 같은 필수 맵에는 LazyMap으로 설정하지 않기를 권장합니다. 질문: Hierarchy에서 맵을 LazyMap으로 설정하기 위한 프로퍼티 이름은 무엇이며, 설정값은 어떻게 해야 하나요? 답변: Property 블록의 IsLazyMa [original] | 월드의 규모가 커질수록 서버 메모리 관리와 성능 최적화가 필요합니다. LazyMap을 사용하면 맵을 동적으로 생성하고, 서버 자원을 효율적으로 관리할 수 있습니다. ## LazyMap LazyMap은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 뜻합니다. LazyMap을 적절하게 활용하면 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 주로 처음부터 생성될 필요 없는 특수한 맵에 적용해 사용할 수 있습니다. 반대로 모든 월드 유저가 반드시 거치는 [chunk_id] | Guides:1401:0

[task] | distill [title] | Lazy Map [category] | Guides [rephrased] | ### Lazy Map: 제약 및 동작 규칙 **생성 및 삭제** * 생성된 LazyMap은 삭제 불가합니다. 생성 후 정적 맵과 동일하게 작동합니다. * 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. `IsLazyMap = true`여도 인스턴스 맵으로만 동작합니다. **이벤트 호출 시점** * `OnInitialize()`, `OnMapEnter()`, `OnBeginPlay()`는 서버 시작 시가 아닌, **LazyMap이 실제로 로드되는 시점**에 호출됩니다. * 정적 맵의 [original] | - **생성된 LazyMap 삭제 불가능**: 한 번 생성된 LazyMap은 삭제할 수 없습니다. LazyMap이 생성되고 나면 기존 정적 맵과 동일하게 작동합니다. - **인스턴스 맵 제외**: 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 만약 `IsLazyMap` 값을 `true`로 설정했더라도 인스턴스 맵으로만 동작합니다. - **시간 계산 변경**: LazyMap에서 `TimerService`를 사용해 시간을 계산할 경우 맵 로드 시점에 따라 시간 계산이 달라질 수 있습니다. 예를 들어  [chunk_id] | Guides:1401:2

[task] | knowledge_list [title] | Lazy Map [category] | Guides [rephrased] | 1. `LazyMap`은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 의미하며, 이를 통해 서버 메모리 점유율을 낮추고 연산 처리 자원을 최적화할 수 있습니다. 2. `LazyMap`은 처음부터 생성될 필요 없는 특수한 맵에 적용할 것을 권장하며, 모든 월드 유저가 반드시 거치는 로비 같은 맵에는 `LazyMap`으로 설정하지 않는 것이 좋습니다. 3. 맵을 `LazyMap`으로 설정하는 방법은 Hierarchy의 maps에서 해당 map을 선택한 뒤 Property의 `IsLazyMap` [original] | 월드의 규모가 커질수록 서버 메모리 관리와 성능 최적화가 필요합니다. LazyMap을 사용하면 맵을 동적으로 생성하고, 서버 자원을 효율적으로 관리할 수 있습니다. ## LazyMap LazyMap은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 뜻합니다. LazyMap을 적절하게 활용하면 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 주로 처음부터 생성될 필요 없는 특수한 맵에 적용해 사용할 수 있습니다. 반대로 모든 월드 유저가 반드시 거치는 [chunk_id] | Guides:1401:0

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