[task] | knowledge_list [title] | Lazy Map [category] | Guides [rephrased] | * 한 번 생성된 LazyMap은 삭제할 수 없으며, 생성 이후에는 기존 정적 맵과 동일하게 작동합니다. * 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없으며, `IsLazyMap` 값을 `true`로 설정하더라도 인스턴스 맵으로만 동작합니다. * LazyMap에서 `TimerService`를 사용하여 시간을 계산할 경우, 맵 로드 시점에 따라 시간 계산 결과가 달라질 수 있습니다. * LazyMap에 포함된 스크립트의 `OnInitialize()`, `OnMapEnter()`, `OnBegi [original] | - **생성된 LazyMap 삭제 불가능**: 한 번 생성된 LazyMap은 삭제할 수 없습니다. LazyMap이 생성되고 나면 기존 정적 맵과 동일하게 작동합니다. - **인스턴스 맵 제외**: 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 만약 `IsLazyMap` 값을 `true`로 설정했더라도 인스턴스 맵으로만 동작합니다. - **시간 계산 변경**: LazyMap에서 `TimerService`를 사용해 시간을 계산할 경우 맵 로드 시점에 따라 시간 계산이 달라질 수 있습니다. 예를 들어 [chunk_id] | Guides:1401:2
[task] | distill [title] | Lazy Map [category] | Guides [rephrased] | # Lazy Map 프로퍼티나 이벤트 핸들러를 통해 맵 내 엔티티를 참조할 때, 해당 맵이 필요 시점에 동적으로 로드(Lazy Load)됩니다. ### 로드 시점 규칙 * **월드 초기화 시**: 정적 맵의 스크립트가 `LazyMap` 엔티티를 프로퍼티/이벤트로 직접 참조하면, 서버 초기화 시 해당 `LazyMap`이 즉시 로드됩니다. * **월드 플레이 중**: `LazyMap` 생성 시, 그 안에 포함된 스크립트가 다른 `LazyMap`을 참조하고 있다면 참조 대상 `LazyMap`도 함께 로드됩니다. ```lua [original] | 스크립트의 프로퍼티 또는 이벤트로 참조할 때 동적으로 맵이 생성됩니다. **월드 초기화 시점**: 정적 맵에서 LazyMap의 엔티티를 프로퍼티나 이벤트로 직접 참조하는 스크립트가 있다면, 해당 LazyMap은 서버 초기화 시점에 함께 로드됩니다. **월드 플레이 중**: 월드 플레이 중 LazyMap이 생성될 때 그 안의 참조 대상인 다른 LazyMap도 함께 생성됩니다. 예를 들어 LazyMap1이 생성될 때 LazyMap1에 LazyMap2를 참조하는 프로퍼티나 이벤트를 가진 스크립트가 있다면 LazyMap2도 LazyMa [chunk_id] | Guides:1401:1
[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # 행동 트리(BehaviourTree) 기본 동작 구현 ## 1. 개념 설명 행동 트리는 AI의 의사결정 구조를 나타냅니다. 노드(Node)는 매 프레임 `OnBehave(number delta)` 메서드를 통해 상태를 반환하며, 반환 값은 `BehaviourTreeStatus` 열거형으로 구분됩니다. * **Running**: 동작이 진행 중임을 의미합니다. 다음 프레임에도 재호출됩니다. * **Success**: 동작이 정상적으로 완료되었음을 의미합니다. * **Failure**: 동작이 실패했음을 의미합니다. [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] | extract_knowledge [title] | Background Editor [category] | Guides [rephrased] | # UI Background Editor: Piece 모드 설정 ## 1. 개념 설명 UI Background Editor의 `Piece` 컴포넌트는 배경 요소의 움직임 방식을 `Mode` 프로퍼티를 통해 제어합니다. `Mode`는 두 가지 값을 가지며, 각각 다른 동작 원리를 따릅니다. * **Parallax**: Piece의 위치가 카메라의 이동 속도와 연동됩니다. 카메라가 이동할 때 Piece가 다른 속도로 스크롤되어 깊이감을 표현합니다. * **Transition**: 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] | diverse_qa [title] | Background Editor [category] | Guides [rephrased] | 질문: UI Background Editor에서 Piece의 Mode 프로퍼티에는 어떤 값이 존재합니까? 답변: UI Background Editor에서 Piece의 Mode 프로퍼티에는 Parallax와 Transition 두 가지 값이 존재합니다. 질문: Mode가 Parallax로 설정되었을 때 Piece는 어떻게 동작합니까? 답변: Mode가 Parallax로 설정되면 Piece는 카메라와 연동되어, 카메라 이동 속도에 따라 다른 속도로 스크롤됩니다. 질문: Mode가 Transition으로 설정되었을 때 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] | Lazy Map은 메이플스토리 월드에서 맵 로딩 방식을 제어하는 기능으로, 특정 제약 사항과 동작 방식을 가지고 있습니다. LazyMap은 한 번 생성된 이후에는 삭제할 수 없습니다. 생성된 LazyMap은 기존 정적 맵과 동일하게 작동하며, 이는 시스템 내에서의 영구적 존재를 의미합니다. 또한, 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 맵 설정에서 `IsLazyMap` 값을 `true`로 변경하더라도, 해당 맵이 인스턴스 맵으로 지정되어 있다면 인스턴스 맵의 동작 방식만 적용됩니다. 시간 [original] | - **생성된 LazyMap 삭제 불가능**: 한 번 생성된 LazyMap은 삭제할 수 없습니다. LazyMap이 생성되고 나면 기존 정적 맵과 동일하게 작동합니다. - **인스턴스 맵 제외**: 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 만약 `IsLazyMap` 값을 `true`로 설정했더라도 인스턴스 맵으로만 동작합니다. - **시간 계산 변경**: LazyMap에서 `TimerService`를 사용해 시간을 계산할 경우 맵 로드 시점에 따라 시간 계산이 달라질 수 있습니다. 예를 들어 [chunk_id] | Guides:1401:2
[task] | extract_knowledge [title] | Lazy Map [category] | Guides [rephrased] | # LazyMap (지연 생성 맵) ## 1. 개념 설명 LazyMap은 서버 시작 시점에 맵이 즉시 생성되지 않고, 특정 조건(유저 상호작용, 스크립트 호출 등)이 충족되었을 때 동적으로 지연 생성되는 맵 유형입니다. 이 방식을 적용하면 서버 메모리 점유율을 낮추고 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 처음부터 생성될 필요가 없는 특수한 맵에 적용하는 것이 적절합니다. 반대로 모든 월드 유저가 반드시 거치는 로비와 같은 맵에는 LazyMap으로 설정하지 않는 것이 권장됩니다. ## 2. API 및 설정 사 [original] | 월드의 규모가 커질수록 서버 메모리 관리와 성능 최적화가 필요합니다. LazyMap을 사용하면 맵을 동적으로 생성하고, 서버 자원을 효율적으로 관리할 수 있습니다. ## LazyMap LazyMap은 서버가 처음 시작될 때 맵이 생성되지 않고, 특정 상황에서 동적으로 지연 생성되는 맵을 뜻합니다. LazyMap을 적절하게 활용하면 서버 메모리 점유율을 낮추고, 연산 처리 자원을 최적화할 수 있습니다. LazyMap은 주로 처음부터 생성될 필요 없는 특수한 맵에 적용해 사용할 수 있습니다. 반대로 모든 월드 유저가 반드시 거치는 [chunk_id] | Guides:1401:0
[task] | distill [title] | AvatarAction Editor [category] | Guides [rephrased] | # AvatarAction Editor 메이플스토리 기본 BodyAction의 프레임을 재구성하여 크리에이터 전용 BodyAction을 제작하는 도구입니다. 스크립트 없이 UI를 통해 직접 제어 가능합니다. ## 구성 및 동작 규칙 * **BodyAction**: 여러 개의 `AvatarAction`을 포함하는 컨테이너입니다. * **이름 제한**: 50자 이내. * **재생 로직**: 하나의 BodyAction에 여러 개의 `AvatarAction`을 추가(Recipe)하면, 월드 플레이 중 **무작 [original] | AvatarActionEditor를 활용해 메이플스토리 월드에서 제공하는 BodyAction의 프레임들을 재구성해 크리에이터 만의 BodyAction을 만들 수 있습니다. ##### 참고 가이드 * [아바타 애니메이션 제어하기 ](/docs?postId=820) * [ActionSheet로 아바타 애니메이션 손쉽게 제어하기](/docs?postId=545) ## AvatarActionEditor 소개 메이플스토리 월드는 메이플스토리의 기본 BodyAction을 제공하고 있습니다.AvatarActionEditor에서는 스크립트에 [chunk_id] | Guides:1402:0
[task] | diverse_qa [title] | Lazy Map [category] | Guides [rephrased] | 질문: 한 번 생성된 LazyMap은 삭제할 수 있나요? 답변: 아니요, 한 번 생성된 LazyMap은 삭제할 수 없습니다. 질문: LazyMap이 생성된 이후에는 어떤 맵과 동일하게 작동하나요? 답변: 기존 정적 맵과 동일하게 작동합니다. 질문: 인스턴스 맵(Instance Map)을 LazyMap으로 설정할 수 있나요? 답변: 아니요, 인스턴스 맵은 LazyMap으로 설정할 수 없습니다. 질문: 인스턴스 맵의 `IsLazyMap` 값을 `true`로 설정하면 어떻게 되나요? 답변: `IsLazyMap` 값을 `true`로 [original] | - **생성된 LazyMap 삭제 불가능**: 한 번 생성된 LazyMap은 삭제할 수 없습니다. LazyMap이 생성되고 나면 기존 정적 맵과 동일하게 작동합니다. - **인스턴스 맵 제외**: 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 만약 `IsLazyMap` 값을 `true`로 설정했더라도 인스턴스 맵으로만 동작합니다. - **시간 계산 변경**: LazyMap에서 `TimerService`를 사용해 시간을 계산할 경우 맵 로드 시점에 따라 시간 계산이 달라질 수 있습니다. 예를 들어 [chunk_id] | Guides:1401:2
[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # BehaviourTree Editor: ActionNode 및 DecoratorNode 구현 ## 1. 개념 설명 mLua의 BehaviourTree 시스템은 몬스터나 NPC의 인공지능(AI) 행동을 트리 구조로 정의하는 방식입니다. 이 절에서는 BehaviourTree Editor를 사용하여 커스텀 노드를 생성할 때 필요한 기본 ActionNode와 DecoratorNode의 역할을 정의합니다. * **ActionNode**: 실제 행동을 수행하는 리프(Leaf) 노드입니다. `OnBehave` 메서드를 통해 로직을 [original] | ### ActionNode, DecoratorNode 만들기 | 노드 | 설명 | | --- | --- | | ActionChangeStateAlert| 몬스터의 머티리얼을 변경합니다. 감지 범위는 빨간색으로 변경됩니다. | | ActionChangeStateCalm | 몬스터의 머티리얼을 원래대로 되돌립니다. 감지 범위를 나타내는 원의 색상을 초록색으로 변경합니다. | | ActionFollow | 플레이어를 추적합니다. | | ActionMoveRandom | 무작위 방향으로 이동합니다. | | ActionStop | 정지 [chunk_id] | Guides:1399:5
[task] | wikipedia [title] | Lazy Map [category] | Guides [rephrased] | **Lazy Map** Lazy Map은 스크립트의 프로퍼티(Property) 또는 이벤트(Event)를 통해 특정 맵의 엔티티를 참조할 때, 해당 맵이 필요에 따라 동적으로 생성되도록 하는 기능입니다. **생성 시점** Lazy Map의 생성 시점은 월드의 상태에 따라 두 가지로 나뉩니다. 첫째, 월드 초기화 시점입니다. 정적 맵에 위치한 스크립트에서 Lazy Map의 엔티티를 프로퍼티나 이벤트로 직접 참조하고 있다면, 해당 Lazy Map은 서버가 초기화되는 시점에 함께 로드됩니다. 둘째, 월드 플레이 중입니다. 월드 플레 [original] | 스크립트의 프로퍼티 또는 이벤트로 참조할 때 동적으로 맵이 생성됩니다. **월드 초기화 시점**: 정적 맵에서 LazyMap의 엔티티를 프로퍼티나 이벤트로 직접 참조하는 스크립트가 있다면, 해당 LazyMap은 서버 초기화 시점에 함께 로드됩니다. **월드 플레이 중**: 월드 플레이 중 LazyMap이 생성될 때 그 안의 참조 대상인 다른 LazyMap도 함께 생성됩니다. 예를 들어 LazyMap1이 생성될 때 LazyMap1에 LazyMap2를 참조하는 프로퍼티나 이벤트를 가진 스크립트가 있다면 LazyMap2도 LazyMa [chunk_id] | Guides:1401:1
[task] | knowledge_list [title] | AvatarAction Editor [category] | Guides [rephrased] | - `AvatarActionEditor`는 메이플스토리 월드의 기본 `BodyAction` 프레임들을 재구성하여 크리에이터만의 `BodyAction`을 생성하는 도구입니다. - `AvatarActionEditor`는 `Window - AvatarActionEditor` 메뉴를 통해 열 수 있습니다. - `BodyAction`은 하나의 객체로, 내부에 여러 개의 `AvatarAction`을 포함할 수 있습니다. - `BodyAction`의 `Recipes`에 `AvatarAction`을 여러 개 추가하면, 월드 플레이 중 해당 `Bo [original] | AvatarActionEditor를 활용해 메이플스토리 월드에서 제공하는 BodyAction의 프레임들을 재구성해 크리에이터 만의 BodyAction을 만들 수 있습니다. ##### 참고 가이드 * [아바타 애니메이션 제어하기 ](/docs?postId=820) * [ActionSheet로 아바타 애니메이션 손쉽게 제어하기](/docs?postId=545) ## AvatarActionEditor 소개 메이플스토리 월드는 메이플스토리의 기본 BodyAction을 제공하고 있습니다.AvatarActionEditor에서는 스크립트에 [chunk_id] | Guides:1402:0
[task] | extract_knowledge [title] | Background Editor [category] | Guides [rephrased] | # UI 배경 편집기 (Background Editor) ## 1. 개념 설명 `Background Editor`는 메이플스토리 월드(MSW)에서 제공되는 배경 템플릿을 수정하거나, 새로운 배경 리소스를 제작하기 위한 도구입니다. 배경은 **Piece(조각)** 라는 기본 단위들로 구성되며, 각 Piece는 리소스 참조, 변환 정보, 렌더링 속성을 가지며 배치됩니다. 배경의 최종 렌더링 순서와 시각적 위치는 Piece의 `Rendering.IsFront` 값과 `Transform.Z` 값에 의해 결정됩니다. ## 2. API [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] | AvatarAction Editor [category] | Guides [rephrased] | 질문: AvatarActionEditor의 주요 목적은 무엇인가요? 답변: AvatarActionEditor는 메이플스토리 월드에서 제공하는 기본 BodyAction의 프레임들을 재구성하여 크리에이터만의 BodyAction을 만들 수 있게 해주는 도구입니다. 질문: 스크립트 코드를 작성하지 않고도 새로운 BodyAction을 만들고 제어할 수 있는 도구는 무엇인가요? 답변: AvatarActionEditor입니다. 질문: AvatarActionEditor의 구성 요소 두 가지를 나열하세요. 답변: BodyAction과 Avata [original] | AvatarActionEditor를 활용해 메이플스토리 월드에서 제공하는 BodyAction의 프레임들을 재구성해 크리에이터 만의 BodyAction을 만들 수 있습니다. ##### 참고 가이드 * [아바타 애니메이션 제어하기 ](/docs?postId=820) * [ActionSheet로 아바타 애니메이션 손쉽게 제어하기](/docs?postId=545) ## AvatarActionEditor 소개 메이플스토리 월드는 메이플스토리의 기본 BodyAction을 제공하고 있습니다.AvatarActionEditor에서는 스크립트에 [chunk_id] | Guides:1402:0
[task] | extract_knowledge [title] | BehaviourTree Editor로 행동 트리 만들기 [category] | Guides [rephrased] | # 행동 트리(Behaviour Tree) 액션 노드 구현 ## 개념 설명 메이플스토리 월드의 `BehaviourTree Editor`를 통해 AI의 동작을 구성할 때, 개별 동작(액션)은 스크립트 컴포넌트 형태로 구현됩니다. 각 액션 노드는 주로 `OnInit()`와 `OnBehave(number delta)` 메서드를 통해 동작을 처리하며, 반환 값(`BehaviourTreeStatus.Success`, `Failure`, `Running`)을 통해 행동 트리의 흐름을 제어합니다. * **OnBehave**: 매 프레임 [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] | distill [title] | AvatarAction Editor [category] | Guides [rephrased] | # AvatarAction Editor 새로운 `AvatarAction`을 생성해 나만의 애니메이션을 제작합니다. 모든 변경 사항은 반드시 **변경 내용 저장** 버튼을 눌러야 반영됩니다. ## 주요 패널 * **AvatarAction 목록/리스트**: 기본 프레임 목록 또는 크리에이터가 제작한 애니메이션 목록 접근. * **Properties/Event**: 선택된 애니메이션의 상세 정보 확인 및 프레임 추가, 이벤트 프로퍼티 설정. * **미리보기**: 타일 위/의상 착용 상태 미리보기. `PlayType` 값 변 [original] | 새로운 AvatarAction를 생성하고 나만의 애니메이션을 만들 수 있습니다. 제작한 애니메이션은 반드시 **변경 내용 저장**버튼을 눌러야 변경 사항이 반영됩니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1784886390520e79ed180f8ac4c86bf631d0f46bc4403.png "2") | 번호| 이름 | 설명 | | --- | --- | --- | || AvatarAction 목록 | 메이플스토리 월드에서 제공하는 기본 AvatarAction 프 [chunk_id] | Guides:1402:1
[task] | wikipedia [title] | AvatarAction Editor [category] | Guides [rephrased] | # 아바타 액션 에디터 (AvatarAction Editor) 아바타 액션 에디터(AvatarActionEditor)는 메이플스토리 월드에서 제공하는 기본 보디 액션(BodyAction)의 프레임을 재구성하여 크리에이터 고유의 보디 액션을 제작할 수 있는 도구입니다. ## 개요 및 관련 가이드 메이플스토리 월드는 기본적으로 메이플스토리 원작의 보디 액션을 제공합니다. 아바타 액션 에디터를 사용하면 스크립트 코드를 작성하지 않고도 새로운 보디 액션을 생성하고 제어할 수 있습니다. 아바타 애니메이션 제어에 대한 더 자세한 내용은 [original] | AvatarActionEditor를 활용해 메이플스토리 월드에서 제공하는 BodyAction의 프레임들을 재구성해 크리에이터 만의 BodyAction을 만들 수 있습니다. ##### 참고 가이드 * [아바타 애니메이션 제어하기 ](/docs?postId=820) * [ActionSheet로 아바타 애니메이션 손쉽게 제어하기](/docs?postId=545) ## AvatarActionEditor 소개 메이플스토리 월드는 메이플스토리의 기본 BodyAction을 제공하고 있습니다.AvatarActionEditor에서는 스크립트에 [chunk_id] | Guides:1402:0
[task] | knowledge_list [title] | AvatarAction Editor [category] | Guides [rephrased] | 제공된 문서의 내용만 바탕으로 핵심 사실을 정리한 목록입니다. 1. AvatarAction Editor에서 제작한 애니메이션은 '변경 내용 저장' 버튼을 누르지 않으면 변경 사항이 반영되지 않습니다. 2. '미리보기' 공간에서 확인하는 PlayType 값은 저장되지 않으며, 타일 위 모습과 옷 착용 모습을 미리 볼 수 있습니다. 3. '프레임 편집창'에서는 애니메이션 프레임의 순서를 변경할 수 있으며, 재생 방식은 Play Type에 따라 결정됩니다. 4. 'Properties/Event' 영역에서 프레임에 할당할 이벤트 프로퍼티 [original] | 새로운 AvatarAction를 생성하고 나만의 애니메이션을 만들 수 있습니다. 제작한 애니메이션은 반드시 **변경 내용 저장**버튼을 눌러야 변경 사항이 반영됩니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1784886390520e79ed180f8ac4c86bf631d0f46bc4403.png "2") | 번호| 이름 | 설명 | | --- | --- | --- | || AvatarAction 목록 | 메이플스토리 월드에서 제공하는 기본 AvatarAction 프 [chunk_id] | Guides:1402:1
[task] | knowledge_list [title] | AvatarAction Editor [category] | Guides [rephrased] | 제시된 문서 내용에만 기반하여 핵심 사실을 추출한 목록입니다. 1. 제작한 BodyAction은 `AvatarStateAnimationComponent`의 `StateToAvatarBodyActionSheet` 속성에서 **Key**로 등록해야 합니다. 2. `AvatarStateAnimationComponent`에는 기본적으로 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 3. 기존 기본 Key에 크리에이터가 제작한 BodyAction을 연결하면, 기본 State에 연결된 BodyAction에 맞는 ` [original] | 제작한 BodyAction은 AvatarStateAnimationComponent의 StateToAvatarBodyActionSheet의 **Key**에 등록해 사용해야 합니다. 기본적으로 AvatarStateAnimationComponent에는 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 만약 이 기존 Key에서 AvatarBodyAction을 제작한 BodyAction으로 연결할 경우 크리에이터의 예상과 다르게 동작할 수 있습니다. 기본 State와 연결된 BodyAction에 맞는 PlayRate [chunk_id] | Guides:1402:2
[task] | distill [title] | AvatarAction Editor [category] | Guides [rephrased] | **AvatarAction JSON 구조** `Data`는 AvatarAction 이름을 Key로 하는 Dictionary이며, `Frames` 배열에 프레임 데이터를 포함합니다. ```lua { "Data": { "NewAvatarAction": { "Frames": [ { "defined_actionname": "stand1", "frameindex": 0, "framedelay": 0.156, "move_x": 0, [original] | AvatarAction JSON 파일의 구조는 아래와 같습니다. ```lua { "Data": { "NewAvatarAction": { "Frames": [ { "defined_actionname": "stand1", "frameindex": 0, "framedelay": 0.156, "move_x": 0, "move_y": -1, "rotation": 0, "flip": [chunk_id] | Guides:1402:3
[task] | diverse_qa [title] | Lazy Map [category] | Guides [rephrased] | 질문: 스크립트의 프로퍼티 또는 이벤트로 참조할 때 맵 생성 방식은 어떻게 되나요? 답변: 동적으로 맵이 생성됩니다. 질문: 정적 맵에서 LazyMap의 엔티티를 프로퍼티나 이벤트로 직접 참조하는 스크립트가 있을 경우, 해당 LazyMap은 언제 로드되나요? 답변: 서버 초기화 시점에 함께 로드됩니다. 질문: 월드 플레이 중 LazyMap1이 생성될 때, LazyMap1에 다른 LazyMap(LazyMap2)을 참조하는 프로퍼티나 이벤트를 가진 스크립트가 있다면 LazyMap2는 어떻게 되나요? 답변: LazyMap2도 Lazy [original] | 스크립트의 프로퍼티 또는 이벤트로 참조할 때 동적으로 맵이 생성됩니다. **월드 초기화 시점**: 정적 맵에서 LazyMap의 엔티티를 프로퍼티나 이벤트로 직접 참조하는 스크립트가 있다면, 해당 LazyMap은 서버 초기화 시점에 함께 로드됩니다. **월드 플레이 중**: 월드 플레이 중 LazyMap이 생성될 때 그 안의 참조 대상인 다른 LazyMap도 함께 생성됩니다. 예를 들어 LazyMap1이 생성될 때 LazyMap1에 LazyMap2를 참조하는 프로퍼티나 이벤트를 가진 스크립트가 있다면 LazyMap2도 LazyMa [chunk_id] | Guides:1401:1
[task] | knowledge_list [title] | AvatarAction Editor [category] | Guides [rephrased] | **AvatarAction JSON 파일 구조 및 필드 정보** * `Data` 필드는 AvatarAction 이름을 Key로 갖는 Dictionary 타입의 객체입니다. * `NewAvatarAction`은 `Data` Dictionary 내에서 특정 액션을 나타내는 Key로 사용됩니다. * `Frames` 필드는 해당 액션의 프레임 데이터 목록을 포함하는 Array입니다. * `defined_actionname` 필드는 정의된 액션 이름을 나타내는 String 타입 값입니다. * `frameindex` 필드는 [original] | AvatarAction JSON 파일의 구조는 아래와 같습니다. ```lua { "Data": { "NewAvatarAction": { "Frames": [ { "defined_actionname": "stand1", "frameindex": 0, "framedelay": 0.156, "move_x": 0, "move_y": -1, "rotation": 0, "flip": [chunk_id] | Guides:1402:3
[task] | distill [title] | AvatarAction Editor [category] | Guides [rephrased] | # 아바타 AvatarAction Editor ## StateToAvatarBodyActionSheet 등록 규칙 제작한 `BodyAction`은 `AvatarStateAnimationComponent`의 `StateToAvatarBodyActionSheet` Key에 등록해야 합니다. * **주의**: 기존 기본 Key(메이플스토리 원작 움직임)에 커스텀 `BodyAction`을 연결하면, 기본 State에 지정된 `PlayRate` 값 때문에 예상과 다른 동작이 발생할 수 있습니다. * **권장**: 새로운 애니메이 [original] | 제작한 BodyAction은 AvatarStateAnimationComponent의 StateToAvatarBodyActionSheet의 **Key**에 등록해 사용해야 합니다. 기본적으로 AvatarStateAnimationComponent에는 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 만약 이 기존 Key에서 AvatarBodyAction을 제작한 BodyAction으로 연결할 경우 크리에이터의 예상과 다르게 동작할 수 있습니다. 기본 State와 연결된 BodyAction에 맞는 PlayRate [chunk_id] | Guides:1402:2
[task] | extract_knowledge [title] | AvatarAction Editor [category] | Guides [rephrased] | # AvatarActionEditor를 이용한 BodyAction 구성 ## 1. 개념 설명 메이플스토리 월드에서는 메이플스토리 원작의 기본 `BodyAction`을 제공하며, 크리에이터는 `AvatarActionEditor`를 통해 기존 `BodyAction`의 프레임을 재구성하여 새로운 `BodyAction`을 만들 수 있습니다. `AvatarActionEditor`는 `BodyAction`과 `AvatarAction` 두 단위로 구성됩니다. * **BodyAction**: 하나의 `BodyAction`에 여러 개의 ` [original] | AvatarActionEditor를 활용해 메이플스토리 월드에서 제공하는 BodyAction의 프레임들을 재구성해 크리에이터 만의 BodyAction을 만들 수 있습니다. ##### 참고 가이드 * [아바타 애니메이션 제어하기 ](/docs?postId=820) * [ActionSheet로 아바타 애니메이션 손쉽게 제어하기](/docs?postId=545) ## AvatarActionEditor 소개 메이플스토리 월드는 메이플스토리의 기본 BodyAction을 제공하고 있습니다.AvatarActionEditor에서는 스크립트에 [chunk_id] | Guides:1402:0
[task] | diverse_qa [title] | AvatarAction Editor [category] | Guides [rephrased] | 질문: 제작한 BodyAction을 사용하려면 어디에 등록해야 하나요? 답변: 제작한 BodyAction은 AvatarStateAnimationComponent의 StateToAvatarBodyActionSheet의 Key에 등록해 사용해야 합니다. 질문: AvatarStateAnimationComponent에 기본적으로 지정된 Key들은 어떤 움직임과 관련이 있나요? 답변: 기본적으로 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 질문: 기존 기본 Key에 새로 제작한 BodyAction을 연결하면 [original] | 제작한 BodyAction은 AvatarStateAnimationComponent의 StateToAvatarBodyActionSheet의 **Key**에 등록해 사용해야 합니다. 기본적으로 AvatarStateAnimationComponent에는 메이플스토리 원작과 동일한 움직임을 구현한 Key들이 지정되어 있습니다. 만약 이 기존 Key에서 AvatarBodyAction을 제작한 BodyAction으로 연결할 경우 크리에이터의 예상과 다르게 동작할 수 있습니다. 기본 State와 연결된 BodyAction에 맞는 PlayRate [chunk_id] | Guides:1402:2
[task] | extract_knowledge [title] | Lazy Map [category] | Guides [rephrased] | # Lazy Map 보안 및 최적화 Lazy Map은 메모리 최적화를 위해 필요한 시점에 맵을 로드하는 메커니즘입니다. 정적 맵과 달리 초기화 시점과 이벤트 처리 순서가 다르며, 이로 인해 특정 제약 사항이 존재합니다. ## 개념 설명 Lazy Map은 한 번 생성되면 **삭제할 수 없습니다**. 생성 완료 후에는 기존 정적 맵과 동일한 방식으로 작동합니다. 또한, **인스턴스 맵(Instance Map)**은 Lazy Map으로 설정할 수 없습니다. 맵 설정에서 `IsLazyMap` 값을 `true`로 지정하더라도, 해당 맵 [original] | - **생성된 LazyMap 삭제 불가능**: 한 번 생성된 LazyMap은 삭제할 수 없습니다. LazyMap이 생성되고 나면 기존 정적 맵과 동일하게 작동합니다. - **인스턴스 맵 제외**: 인스턴스 맵(Instance Map)은 LazyMap으로 설정할 수 없습니다. 만약 `IsLazyMap` 값을 `true`로 설정했더라도 인스턴스 맵으로만 동작합니다. - **시간 계산 변경**: LazyMap에서 `TimerService`를 사용해 시간을 계산할 경우 맵 로드 시점에 따라 시간 계산이 달라질 수 있습니다. 예를 들어 [chunk_id] | Guides:1401:2
[task] | wikipedia [title] | AvatarAction Editor [category] | Guides [rephrased] | # 아바타 액션(AvatarAction) 에디터 아바타 액션(AvatarAction) 에디터는 메이플스토리 월드에서 새로운 AvatarAction을 생성하고 사용자 정의 애니메이션을 제작하기 위한 도구입니다. 제작된 애니메이션은 화면의 **변경 내용 저장** 버튼을 눌러야 최종적으로 반영됩니다. 에디터 인터페이스는 다음과 같은 주요 영역으로 구성됩니다. 첫째, **AvatarAction 목록** 영역은 메이플스토리 월드에서 기본적으로 제공하는 AvatarAction 프레임 목록을 표시합니다. 둘째, **AvatarAction [original] | 새로운 AvatarAction를 생성하고 나만의 애니메이션을 만들 수 있습니다. 제작한 애니메이션은 반드시 **변경 내용 저장**버튼을 눌러야 변경 사항이 반영됩니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1784886390520e79ed180f8ac4c86bf631d0f46bc4403.png "2") | 번호| 이름 | 설명 | | --- | --- | --- | || AvatarAction 목록 | 메이플스토리 월드에서 제공하는 기본 AvatarAction 프 [chunk_id] | Guides:1402:1
[task] | extract_knowledge [title] | AvatarAction Editor [category] | Guides [rephrased] | # AvatarAction Editor: 애니메이션 프레임 편집 및 이벤트 연결 ## 1. 개념 설명 **AvatarAction**은 메이플스토리 월드에서 캐릭터의 움직임을 정의하는 애니메이션 리소스입니다. 크리에이터는 **AvatarAction Editor**를 사용하여 기본 프레임 목록을 기반으로 새로운 애니메이션을 생성하거나, 기존 애니메이션의 프레임 순서, 시각적 속성, 그리고 프레임 재생 시점에 발생하는 이벤트를 편집할 수 있습니다. 편집된 애니메이션은 저장되지 않으면 반영되지 않으며, 미리보기 공간에서 확인한 `Pl [original] | 새로운 AvatarAction를 생성하고 나만의 애니메이션을 만들 수 있습니다. 제작한 애니메이션은 반드시 **변경 내용 저장**버튼을 눌러야 변경 사항이 반영됩니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1784886390520e79ed180f8ac4c86bf631d0f46bc4403.png "2") | 번호| 이름 | 설명 | | --- | --- | --- | || AvatarAction 목록 | 메이플스토리 월드에서 제공하는 기본 AvatarAction 프 [chunk_id] | Guides:1402:1
[task] | wikipedia [title] | AvatarAction Editor [category] | Guides [rephrased] | ## 아바타 액션 편집기 (AvatarAction Editor) 아바타 액션(AvatarAction)은 JSON 형식의 데이터 파일로 관리되며, 캐릭터의 애니메이션 프레임 정보와 프레임에 따른 이벤트 트리거 정보를 포함합니다. ### 파일 구조 아바타 액션 JSON 파일은 `Data` 객체를 최상위 키로 가지며, 그 안에는 액션 이름을 키로 하는 딕셔너리(Dictionary)가 저장됩니다. 각 액션 항목은 `Frames` 배열을 통해 프레임 데이터를 나열합니다. 기본적인 JSON 파일 구조는 다음과 같습니다. ```lua [original] | AvatarAction JSON 파일의 구조는 아래와 같습니다. ```lua { "Data": { "NewAvatarAction": { "Frames": [ { "defined_actionname": "stand1", "frameindex": 0, "framedelay": 0.156, "move_x": 0, "move_y": -1, "rotation": 0, "flip": [chunk_id] | Guides:1402:3
[task] | distill [title] | 커스텀 PlayerController 만들기 [category] | Guides [rephrased] | ### 커스텀 PlayerController Property 아래 Property를 정의합니다. ```lua Property: [None] boolean IsValid = false [None] table ActionKeys = {} [None] table ActionConditions = {} [None] table HoldActions = {} [None] table InteractionKeys = {} [None] table InputKeys = {} [None] table PressedKeys = {} [None] numb [original] | 필요한 Property를 아래와 같이 작성합니다. ```lua Property: [None] boolean IsValid = false [None] table ActionKeys = {} [None] table ActionConditions = {} [None] table HoldActions = {} [None] table InteractionKeys = {} [None] table InputKeys = {} [None] table PressedKeys = {} [None] number HorizontalInput = 0 [No [chunk_id] | Guides:1403:1