← 목록

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

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

[task] | wikipedia [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | ## 카드와 UI 만들기 이 섹션에서는 카드 짝 맞추기 게임에서 카드 엔티티를 생성하고 UI 보드에 배치하는 방법을 설명합니다. 스크립트는 클라이언트에서 실행되며, 미리 정의된 모델 ID를 사용하여 카드 객체를 스폰합니다. ### 속성 설정 스크립트 컴포넌트는 카드가 생성될 위치를 나타내는 `Entity` 타입의 속성 `CardSpawnRoot`를 정의합니다. 이 속성은 `/ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group` 경로에 있는 UI 객체를 참조하도록 설정됩니다. ### [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] void CreateCardEntities() { local cardModelId = "Model_Card EntiryID" local card = _SpawnService:SpawnByModelId(cardModelId, "Card", Vector3(0,0,0), self.CardSpawn [chunk_id] | Guides:561:3

[task] | distill [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리를 활용한 AI 만들기 ## 개념 및 비교 * **FSM (유한 상태 기계)**: 상태(State)와 전이(Transition)로 구성. 직관적이지만 복잡도가 높아지면 유지보수가 어렵고 재사용이 불가능함. * **HFSM (계층적 FSM)**: FSM 단점을 보완하여 모듈화. 하지만 개별 상태의 재사용이 어려움(예: 'HIT' 상태가 'IDLE'과 'BATTLE' 하위에 각각 존재해야 함). * **행동 트리 (BT)**: 개별 로직으로 모듈화된 **노드(Node)**의 집합. 재사용이 가능하며, 결합 순서 [original] | # 학습 과정 소개 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아봅시다. [행동 트리 노드 만들기](/docs?postId=1155)에서 행동 트리 구현 방법과 예제를 소개합니다. ##### 참고 가이드 * [행동 트리 노드 만들기](/docs?postId=1155) * [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) ##### 참고 API Reference * [BTNode](/apiReference [chunk_id] | Guides:562:0

[task] | diverse_qa [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | 질문: `CardSpawnRoot` 프로퍼티의 타입과 기본값은 무엇인가요? 답변: `CardSpawnRoot`의 타입은 `Entity`이며, 기본값은 `/ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group`입니다. 질문: `CreateCardEntities` 메서드의 실행 공간은 어디인가요? 답변: `CreateCardEntities` 메서드는 클라이언트에서만 실행되도록 `[client only]`로 지정되어 있습니다. 질문: `CreateCardEntities` 함수 내부에서 사용된 [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] void CreateCardEntities() { local cardModelId = "Model_Card EntiryID" local card = _SpawnService:SpawnByModelId(cardModelId, "Card", Vector3(0,0,0), self.CardSpawn [chunk_id] | Guides:561:3

[task] | extract_knowledge [title] | Effective MSW 2 [category] | Guides [rephrased] | # mLua 실행 제어(Execution Control)의 제약 및 처리 mLua에서 함수의 실행 공간(`[server only]`, `[client only]`, `[server]`, `[client]`, `[multicast]`)을 설정하면 클라이언트와 서버 간 통신이 자동으로 처리됩니다. 그러나 매개 변수의 타입 제한, 서버/클라이언트 시작 시점의 비대칭, 그리고 엔티티의 존재 범위(Locality)에 따라 실행 제어가 실패하거나 의도대로 동작하지 않는 경우가 있습니다. ## 1. 개념 설명 실행 제어 함수는 다른 실행 [original] | # 학습 과정 소개 함수의 실행 공간을 설정하면 별도의 과정 없이 쉽게 클라이언트와 서버가 통신할 수 있습니다. 자동으로 처리하기 때문에 편리하지만, 몇몇 경우는 제약이 있어 크리에이터가 원하는 대로 동작하지 않을 수 있습니다. 일부는 로그가 나오지만, 어떤 것은 동작하지 않는 이유를 확인할 수 없을 수도 있습니다. 이번 가이드에서는 실행 제어를 사용할 수 없는 경우를 알아봅시다. # 매개 변수가 지원하지 않는 종류 함수에는 여러 종류의 매개 변수(parameter)가 있습니다. 이 매개 변수는 다른 공간에서 실행 제어를 사용 [chunk_id] | Guides:560:0

[task] | knowledge_list [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 제공된 문서 원문에 포함된 정보만을 바탕으로 추출한 핵심 사실 목록입니다. 1. 본 가이드의 학습 목표는 행동 트리와 `BTNodeType` 개념을 이해하고, `AIComponent`를 활용하여 Action Node를 생성하는 방법을 익히는 것입니다. 2. 행동 트리(Behaviour Tree, BT)는 노드(Node)라 불리는 개별 단위의 집합으로 구성되며, 각 노드는 개별 로직으로 모듈화되어 있어 상황과 목적에 따라 재사용이 가능합니다. 3. 행동 트리는 상태와 전이로 구성된 유한 상태 기계(FSM)와 달리, 각 노드가 결합 [original] | # 학습 과정 소개 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아봅시다. [행동 트리 노드 만들기](/docs?postId=1155)에서 행동 트리 구현 방법과 예제를 소개합니다. ##### 참고 가이드 * [행동 트리 노드 만들기](/docs?postId=1155) * [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) ##### 참고 API Reference * [BTNode](/apiReference [chunk_id] | Guides:562:0

[task] | extract_knowledge [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | # 카드 엔티티 생성 및 배치 ## 개념 설명 메이플스토리 월드에서 카드 짝 맞추기 게임을 제작할 때, 실제 카드 객체를 UI 보드에 배치하기 위해 `Entity` 타입의 속성을 정의하고 `_SpawnService`를 활용합니다. 클라이언트 측에서만 동작하는 로직으로, 사전에 정의된 모델 ID를 기반으로 특정 좌표에 카드 엔티티를 생성합니다. ## API 사용법 * **`Entity` Property**: 카드가 생성될 부모 객체(보통 UI의 블록 그룹)를 참조하기 위해 사용됩니다. * **`_SpawnService:Sp [original] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI_Block_Group Method: [client only] void CreateCardEntities() { local cardModelId = "Model_Card EntiryID" local card = _SpawnService:SpawnByModelId(cardModelId, "Card", Vector3(0,0,0), self.CardSpawn [chunk_id] | Guides:561:3

[task] | wikipedia [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기: 카드와 UI 만들기 이 가이드는 메이플스토리 월드(MapleStory Worlds)에서 카드 짝 맞추기 게임의 사용자 인터페이스(UI)와 카드 생성 로직을 설정하는 방법을 설명합니다. 주요 작업은 `CardBoard` 컴포넌트의 스크립트 편집과 `CardPairGameLogic` 로직의 연동으로 구성됩니다. ## CardBoard 컴포넌트 설정 먼저 `CardPairGameUI` 그룹에 `CardBoard` 컴포넌트를 추가하고, 해당 컴포넌트를 선택하여 스크립트 에디터를 엽니다. 스크립트 내에서 카드가 생 [original] | 1. **CardBoard** 컴포넌트를 **CardPairGameUI** 그룹에 추가합니다. 2. **CardBoard** 컴포넌트를 선택해 스크립트 에디터를 엽니다. 3. **CardSpawnRoot** 프로퍼티를 추가하고, 반환 타입을 Entity로 변경합니다. 4. 엔티티는 **UI_Block_Group**으로 지정합니다. ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI [chunk_id] | Guides:561:2

[task] | extract_knowledge [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | # ScrollLayoutGroupComponent와 카드 배치 ## 개념 설명 `ScrollLayoutGroupComponent`는 여러 개의 엔티티를 화면에 펼쳐 배치할 때 사용하는 컴포넌트입니다. 주로 상점이나 인벤토리처럼 한눈에 확인해야 하는 이미지가 많은 UI를 제작할 때 사용되며, 자식 UI Entity들의 크기와 배치 간격 등을 일괄적으로 적용할 수 있습니다. 본 문서에서는 `UI_Block_Group` 엔티티에 `ScrollLayoutGroupComponent`를 적용하여 카드 짝 맞추기 게임의 보드를 구성합니다 [original] | 이제 카드를 화면에 불러낼 차례입니다. 카드를 불러내기 위해선 **/ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group**를 활용합니다. **UI_Block_Group**은 [ScrollLayoutGroupComponent](/apiReference?postId=382%7B%22target%22:%22_self%22%7D)를 활용했습니다. **ScollLayoutGroupComponent**는 여러 개의 엔티티를 펼쳐야할 때 사용합니다. 주로 상점이나, 인벤토리처럼 한 눈에 봐야하는 이미지 [chunk_id] | Guides:561:1

[task] | wikipedia [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리를 활용한 AI 만들기 이 문서는 행동 트리(Behaviour Tree)와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 다룹니다. 행동 트리의 구체적 구현 방법과 예제는 [행동 트리 노드 만들기](/docs?postId=1155) 가이드에서 확인할 수 있으며, 시각적 편집을 통한 행동 트리 제작법은 [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) 가이드에 자세히 설명되어 있습니다. 관련 API 문서로는 BTN [original] | # 학습 과정 소개 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아봅시다. [행동 트리 노드 만들기](/docs?postId=1155)에서 행동 트리 구현 방법과 예제를 소개합니다. ##### 참고 가이드 * [행동 트리 노드 만들기](/docs?postId=1155) * [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) ##### 참고 API Reference * [BTNode](/apiReference [chunk_id] | Guides:562:0

[task] | distill [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리 AI 행동 트리는 프레임마다 `Root` 노드에서 시작하여 **위에서 아래, 왼쪽에서 오른쪽** 순서로 순차 실행됩니다. 부모 노드는 등록된 순서대로 자식 노드를 실행하며, 자식 노드는 **`Running`, `Success`, `Failure`** 중 하나의 `BehaviourTreeStatus`를 반환합니다. 부모 노드는 자식의 반환 값에 따라 다음 실행을 결정합니다. ## 노드 종류 1. **Action Node**: 엔티티의 실질적 행동이나 조건을 정의하는 **Leaf Node**입니다. 자식 노드가 없으 [original] | 행동 트리는 프레임마다 Root 노드에서 시작합니다. 그 후 순차적으로 실행됩니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽입니다. 부모 노드가 자식 노드를 실행하며 실행 순서는 각 부모에 등록된 순서대로 실행됩니다. 부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 부모가 가진 자식 노드를 모두 순차적으로 실행합니다. 예를 들어 부모 노드에 자식 노드 A, B, C가 순차적으로 등록된 경우 A가 가장 좌측에, 노드 C가 가장 우측에 배치됩니다. 부모 노드 실행 시 자식 노드는 A, B, C 순으로 실행 [chunk_id] | Guides:562:1

[task] | extract_knowledge [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | # 카드 짝 맞추기: UI 활성화 및 카드 모델 생성 본 절에서는 `mLua` 스크립트를 사용하여 게임 UI를 활성화하는 방법과, 카드 엔티티를 효율적으로 생성하기 위한 모델(Model) 및 데이터셋(DataSet) 설정 과정을 설명합니다. ## 1. 개념 설명 ### UI 활성화 로직 월드 내 UI 컴포넌트는 기본적으로 비활성화(Disable) 상태일 수 있습니다. 사용자가 월드에 입장했을 때 게임 화면(예: `CardPairGameUI`)을 표시하려면 해당 UI 엔티티의 `Enable` 프로퍼티를 `true`로 변경해야 합 [original] | 리메이크한 월드에는 제작에 필요한 UI, 리소스, 그리고 비어 있는 컴포넌트 등이 있습니다. 단계 별로 하나씩 채워나가며 함께 게임을 완성해봅시다. # CardPairGameUI 활성화 월드에 유저가 입장하면 **CardPairGameUI**가 **Enable**로 변경되도록 만들어 봅시다. 월드 전체에 적용되는 규칙이나 로직을 만들 때는 Logic을 사용합니다. **CardPairGameLogic** 로직에는 짝 맞추기에 기본적으로 필요한 UI를 켜거나 끄기, 카드 입력 등 전반적인 규칙을 작성할 것입니다. 우선 월드에 입장 [chunk_id] | Guides:561:0

[task] | distill [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | **Selector Node** 자식을 순서대로 실행합니다. 자식이 `Success`를 반환하면 즉시 실행을 멈추고 부모에게 `Success`를 반환합니다. 모든 자식이 `Failure`를 반환해야 부모에게 `Failure`를 반환합니다. **RandomSelector Node** 자식 중 하나를 무작위로 선택해 실행합니다. 선택된 자식의 반환값(`Success`/`Failure`)을 그대로 부모에게 전달합니다. * **동작 규칙**: 난수를 생성하여 해당 난수가 속하는 누적 확률 범위에 해당하는 자식을 선택합니다. (예: 확 [original] | **Selector Node**는 자식 노드를 순서대로 실행하다가 자식 노드가 Success를 반환하면 실행을 멈추고 부모 노드로 Success를 반환합니다. 모든 자식 노드가 Failure를 반환하면 부모 노드에 Failure를 반환합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168858785873218b87041fd46df9756a267a30ce29e.png "SelectorNode") #### RandomSelector Node **RandomSelec [chunk_id] | Guides:562:2

[task] | extract_knowledge [title] | Effective MSW 2 [category] | Guides [rephrased] | # 3.2 로컬(Local) 컨텍스트 처리 메이플스토리 월드(MapleStory Worlds)의 mLua 스크립트 환경은 기본적으로 멀티플레이 기반을 가집니다. 그러나 일부 리소스는 모든 클라이언트가 공유하는 글로벌 상태가 아니라, 특정 클라이언트(사용자)에만 존재하는 **로컬(Local)** 개념으로 처리되어야 합니다. 주요 로컬 처리 대상은 다음과 같습니다. * **Localized Entity**: 클라이언트마다 독립적으로 존재하는 엔티티 * **입력 처리(Input)**: 키보드, 마우스 등 사용자 장치의 입력 이 [original] | 메이플스토리 월드에서는 기본적으로 멀티 플레이를 손쉽게 구현할 수 있습니다. 대부분의 기능을 멀티 플레이 기반으로 처리하는 것을 권장합니다. 하지만 일부 항목은 별도의 Local 개념이 필요합니다. 주요 항목은 다음과 같습니다. * Localized Entity * 입력 처리 * 내 캐릭터 처리 **UIEntity**와 **입력** 그리고 **내 캐릭터** 모두 **나의 클라이언트에만 존재하는 개념**이라 별도로 처리해야 합니다. 특히 **내 캐릭터**는 클라이언트에서 처리하기 위해 `_UserService.LocalPlay [chunk_id] | Guides:560:1

[task] | diverse_qa [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 질문: 이 문서에서 다루는 주요 학습 목표는 무엇인가요? 답변: 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아보는 것입니다. 질문: 유한 상태 기계(FSM)를 구성하는 두 가지 핵심 요소는 무엇인가요? 답변: 상태(State)와 전이(Transition)입니다. 질문: FSM은 주로 어떤 목적으로 사용되나요? 답변: 주로 AI 설계를 위해 사용됩니다. 질문: FSM 모델에서 상태 전이가 발생하는 조건은 무엇인가요? 답변: 상태에 대한 액션 수행 중 [original] | # 학습 과정 소개 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아봅시다. [행동 트리 노드 만들기](/docs?postId=1155)에서 행동 트리 구현 방법과 예제를 소개합니다. ##### 참고 가이드 * [행동 트리 노드 만들기](/docs?postId=1155) * [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) ##### 참고 API Reference * [BTNode](/apiReference [chunk_id] | Guides:562:0

[task] | diverse_qa [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | 질문: CardBoard 컴포넌트를 추가해야 하는 대상 그룹은 무엇인가요? 답변: CardBoard 컴포넌트는 CardPairGameUI 그룹에 추가합니다. 질문: CardSpawnRoot 프로퍼티의 반환 타입은 무엇으로 설정해야 하나요? 답변: CardSpawnRoot 프로퍼티의 반환 타입은 Entity로 변경해야 합니다. 질문: CardSpawnRoot 프로퍼티에 지정되는 엔티티 경로(경로값)는 무엇인가요? 답변: CardSpawnRoot 프로퍼티에 지정되는 엔티티는 /ui/CardParirGameUi/UI_Board/UI_ [original] | 1. **CardBoard** 컴포넌트를 **CardPairGameUI** 그룹에 추가합니다. 2. **CardBoard** 컴포넌트를 선택해 스크립트 에디터를 엽니다. 3. **CardSpawnRoot** 프로퍼티를 추가하고, 반환 타입을 Entity로 변경합니다. 4. 엔티티는 **UI_Block_Group**으로 지정합니다. ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI [chunk_id] | Guides:561:2

[task] | wikipedia [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | ## Selector Node Selector Node는 자식 노드를 순서대로 실행하는 동작을 수행합니다. 실행 중 어느 자식 노드라도 Success를 반환하면 즉시 실행을 중단하고, 부모 노드에게 Success를 반환합니다. 반대로 모든 자식 노드가 Failure를 반환한 경우에만 부모 노드에게 Failure를 반환합니다. ## RandomSelector Node RandomSelector Node는 등록된 자식 노드 중 하나를 무작위로 선택하여 실행합니다. 선택된 자식 노드가 Success를 반환하면 부모 노드에게 Succ [original] | **Selector Node**는 자식 노드를 순서대로 실행하다가 자식 노드가 Success를 반환하면 실행을 멈추고 부모 노드로 Success를 반환합니다. 모든 자식 노드가 Failure를 반환하면 부모 노드에 Failure를 반환합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168858785873218b87041fd46df9756a267a30ce29e.png "SelectorNode") #### RandomSelector Node **RandomSelec [chunk_id] | Guides:562:2

[task] | distill [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리(AI) 활용 가이드 AI 엔티티에는 `AIComponent` 또는 이를 확장한 컴포넌트가 필수입니다. `AIComponent`는 `BTNodeType` 기반으로 Action Node를 생성하거나, 완성된 행동 트리의 최상위 노드를 Root로 설정하여 AI를 제어합니다. > **추천**: 스크립트로 노드를 생성·연결하기보다 **Behaviour Tree Editor**에서 노드를 연결하는 방식을 권장합니다. ## 노드 생성 API ### `CreateNode()` `BTNodeType` 기반 노드 객체를 생성합니 [original] | AI로 사용할 엔티티에는 **AIComponent 또는 확장한 AIComponent**가 포함되어 있어야 합니다. AIComponent는 BTNodeType에서 정의된 내용으로 Action Node를 별도의 객체로 생성하거나, 만들어진 행동 트리의 최상위 노드를 Root 노드로 설정하여 엔티티에 AI를 부여하기 때문입니다. Action Node를 만들 때는 AIComponent의 `CreateNode()`, `CreateLeafNode()`를 활용해 Action Node를 생성할 수 있습니다. > **Tip** > Action N [chunk_id] | Guides:562:4

[task] | knowledge_list [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 1. AI 기능을 적용할 엔티티에는 `AIComponent` 또는 이를 확장한 컴포넌트가 필수적으로 포함되어야 합니다. 2. `AIComponent`는 `BTNodeType`에서 정의된 내용을 기반으로 Action Node를 별도의 객체로 생성하거나, 생성된 행동 트리의 최상위 노드를 Root 노드로 설정하여 엔티티에 AI를 부여하는 역할을 수행합니다. 3. `AIComponent`의 `CreateNode()` 메서드는 `BTNodeType` 객체를 생성하며, 매개변수로 생성될 `BTNodeType`과 이름을 전달받습니다. 4. ` [original] | AI로 사용할 엔티티에는 **AIComponent 또는 확장한 AIComponent**가 포함되어 있어야 합니다. AIComponent는 BTNodeType에서 정의된 내용으로 Action Node를 별도의 객체로 생성하거나, 만들어진 행동 트리의 최상위 노드를 Root 노드로 설정하여 엔티티에 AI를 부여하기 때문입니다. Action Node를 만들 때는 AIComponent의 `CreateNode()`, `CreateLeafNode()`를 활용해 Action Node를 생성할 수 있습니다. > **Tip** > Action N [chunk_id] | Guides:562:4

[task] | knowledge_list [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 제공된 문서에는 명시된 API 함수, 매개변수, 반환 타입, 또는 서버/클라이언트 실행 공간 제약이 포함되어 있지 않습니다. 따라서 요청하신 조건(API 이름·매개변수·반환 타입·동기화/서버·클라이언트 제약 명시)을 충족할 수 있는 기술적 사실은 존재하지 않습니다. 문서에 포함된 논리적 사실만 추출하여 목록으로 정리하면 다음과 같습니다. 1. `Selector Node`는 자식 노드를 순서대로 실행하며, 자식 노드 중 하나라도 `Success`를 반환하면 즉시 실행을 중단하고 부모 노드에게 `Success`를 반환합니다. 2. [original] | **Selector Node**는 자식 노드를 순서대로 실행하다가 자식 노드가 Success를 반환하면 실행을 멈추고 부모 노드로 Success를 반환합니다. 모든 자식 노드가 Failure를 반환하면 부모 노드에 Failure를 반환합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168858785873218b87041fd46df9756a267a30ce29e.png "SelectorNode") #### RandomSelector Node **RandomSelec [chunk_id] | Guides:562:2

[task] | diverse_qa [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 질문: 행동 트리의 실행은 언제 시작되며, 어떤 순서대로 진행되나요? 답변: 행동 트리는 프레임마다 Root 노드에서 시작하며, 실행 순서는 위에서 아래, 왼쪽에서 오른쪽 방향으로 순차적으로 진행됩니다. 질문: 부모 노드에 자식 노드 A, B, C가 순차적으로 등록되어 있을 때, 실행 순서는 어떻게 되나요? 답변: 자식 노드는 A, B, C 순으로 실행됩니다. 질문: 자식 노드 A가 자식 노드 D, F를 갖고 있을 때, A와 B의 실행 관계는 어떻게 되나요? 답변: 부모 노드 실행 시 A의 자식 노드 D, F를 모두 실행한 후 [original] | 행동 트리는 프레임마다 Root 노드에서 시작합니다. 그 후 순차적으로 실행됩니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽입니다. 부모 노드가 자식 노드를 실행하며 실행 순서는 각 부모에 등록된 순서대로 실행됩니다. 부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 부모가 가진 자식 노드를 모두 순차적으로 실행합니다. 예를 들어 부모 노드에 자식 노드 A, B, C가 순차적으로 등록된 경우 A가 가장 좌측에, 노드 C가 가장 우측에 배치됩니다. 부모 노드 실행 시 자식 노드는 A, B, C 순으로 실행 [chunk_id] | Guides:562:1

[task] | knowledge_list [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | ```lua -- 문서에서 추출한 핵심 사실 목록 local facts = { "행동 트리는 프레임마다 Root 노드에서 시작하여 위에서 아래, 왼쪽에서 오른쪽 순서로 순차적으로 실행됩니다.", "부모 노드는 자식 노드를 실행하며, 실행 순서는 각 부모 노드에 등록된 순서대로 처리됩니다.", "부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 등록된 자식 노드를 모두 순차적으로 실행합니다.", "부모 노드에 자식 노드 A, B, C가 순차적으로 등록되면 A가 가장 좌측, C가 [original] | 행동 트리는 프레임마다 Root 노드에서 시작합니다. 그 후 순차적으로 실행됩니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽입니다. 부모 노드가 자식 노드를 실행하며 실행 순서는 각 부모에 등록된 순서대로 실행됩니다. 부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 부모가 가진 자식 노드를 모두 순차적으로 실행합니다. 예를 들어 부모 노드에 자식 노드 A, B, C가 순차적으로 등록된 경우 A가 가장 좌측에, 노드 C가 가장 우측에 배치됩니다. 부모 노드 실행 시 자식 노드는 A, B, C 순으로 실행 [chunk_id] | Guides:562:1

[task] | wikipedia [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 게임 로직 행동 트리를 활용한 AI 만들기 게임 로직에서 인공지능(AI)을 구현하기 위해 행동 트리(Behaviour Tree)를 사용할 경우, 해당 AI를 적용할 엔티티에는 반드시 `AIComponent` 또는 이를 확장한 컴포넌트가 포함되어 있어야 합니다. `AIComponent`는 `BTNodeType`에서 정의된 내용을 바탕으로 Action Node를 별도의 객체로 생성하거나, 이미 만들어진 행동 트리의 최상위 노드를 루트(Root) 노드로 설정함으로써 엔티티에 AI 동작을 부여하는 역할을 수행합니다. Action N [original] | AI로 사용할 엔티티에는 **AIComponent 또는 확장한 AIComponent**가 포함되어 있어야 합니다. AIComponent는 BTNodeType에서 정의된 내용으로 Action Node를 별도의 객체로 생성하거나, 만들어진 행동 트리의 최상위 노드를 Root 노드로 설정하여 엔티티에 AI를 부여하기 때문입니다. Action Node를 만들 때는 AIComponent의 `CreateNode()`, `CreateLeafNode()`를 활용해 Action Node를 생성할 수 있습니다. > **Tip** > Action N [chunk_id] | Guides:562:4

[task] | diverse_qa [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 질문: Selector Node는 자식 노드를 실행하는 순서와 종료 조건이 어떻게 되나요? 답변: Selector Node는 자식 노드를 순서대로 실행하다가, 자식 노드가 Success를 반환하면 즉시 실행을 멈추고 부모 노드로 Success를 반환합니다. 질문: Selector Node에서 모든 자식 노드가 Failure를 반환하면 부모 노드로 어떤 값이 반환되나요? 답변: 모든 자식 노드가 Failure를 반환하면 부모 노드에 Failure를 반환합니다. 질문: RandomSelector Node의 주요 동작 방식은 무엇인가 [original] | **Selector Node**는 자식 노드를 순서대로 실행하다가 자식 노드가 Success를 반환하면 실행을 멈추고 부모 노드로 Success를 반환합니다. 모든 자식 노드가 Failure를 반환하면 부모 노드에 Failure를 반환합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168858785873218b87041fd46df9756a267a30ce29e.png "SelectorNode") #### RandomSelector Node **RandomSelec [chunk_id] | Guides:562:2

[task] | wikipedia [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리를 활용한 AI 만들기 행동 트리(Behaviour Tree)는 게임 로직에서 인공지능(AI)의 의사결정 구조를 표현하는 방식으로, 프레임 단위로 Root 노드에서 시작하여 순차적으로 실행됩니다. 실행 순서는 기본적으로 위에서 아래, 왼쪽에서 오른쪽 방향으로 진행되며, 부모 노드가 자식 노드를 실행합니다. 이때 자식 노드의 실행 순서는 각 부모 노드에 등록된 순서에 따라 결정됩니다. 부모 노드는 그 종류에 따라 자식 노드를 실행하는 조건을 다르게 가지며, 설정된 조건에 부합할 때만 해당 부모 노드에 등록된 모든 자식 [original] | 행동 트리는 프레임마다 Root 노드에서 시작합니다. 그 후 순차적으로 실행됩니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽입니다. 부모 노드가 자식 노드를 실행하며 실행 순서는 각 부모에 등록된 순서대로 실행됩니다. 부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 부모가 가진 자식 노드를 모두 순차적으로 실행합니다. 예를 들어 부모 노드에 자식 노드 A, B, C가 순차적으로 등록된 경우 A가 가장 좌측에, 노드 C가 가장 우측에 배치됩니다. 부모 노드 실행 시 자식 노드는 A, B, C 순으로 실행 [chunk_id] | Guides:562:1

[task] | extract_knowledge [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리를 활용한 AI 만들기 ## 1. 개념 설명 행동 트리(Behaviour Tree)는 프레임마다 Root 노드에서 시작하여 순차적으로 실행되는 구조입니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽이며, 부모 노드가 등록된 순서대로 자식 노드를 실행합니다. 행동 트리는 다음과 같은 두 가지 유형의 노드로 구성됩니다. * **Action Node (행동 노드)**: 엔티티의 실질적인 행동이나 조건을 정의하는 Leaf Node입니다. 자식 노드를 갖지 않으며, 크리에이터가 `BTNodeType`을 활용하여 직접 [original] | 행동 트리는 프레임마다 Root 노드에서 시작합니다. 그 후 순차적으로 실행됩니다. 실행 순서는 위에서 아래, 왼쪽에서 오른쪽입니다. 부모 노드가 자식 노드를 실행하며 실행 순서는 각 부모에 등록된 순서대로 실행됩니다. 부모 노드는 종류에 따라 자식 노드 실행 조건을 달리하며, 조건에 부합할 때 부모가 가진 자식 노드를 모두 순차적으로 실행합니다. 예를 들어 부모 노드에 자식 노드 A, B, C가 순차적으로 등록된 경우 A가 가장 좌측에, 노드 C가 가장 우측에 배치됩니다. 부모 노드 실행 시 자식 노드는 A, B, C 순으로 실행 [chunk_id] | Guides:562:1

[task] | knowledge_list [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | 제공된 문서 내용만을 바탕으로 추출한 핵심 사실 목록입니다. 1. 부모 노드는 자식 노드가 `Success` 또는 `Failure`를 반환할 경우 다음 자식 노드를 실행하지만, 자식 노드가 `Running`을 반환하면 해당 자식 노드를 다음 프레임에 다시 실행합니다. 2. `Sequence Node`와 `Selector Node`는 자식 노드 중 하나(예: B)가 `Running`을 반환하는 동안 나머지 자식 노드(예: C)를 실행하지 않습니다. 3. `RandomSelector Node`는 `Running`을 반환하는 선택 [original] | 자식 노드가 Success 또는 Failure를 반환하면 부모 노드는 다음 자식 노드를 실행합니다. 그러나 자식 노드가 Running을 반환하면 부모 노드는 Running을 반환했던 자식 노드를 다음 프레임에 다시 실행합니다. 이 특성을 활용해 여러 프레임 동안 동작하는 노드를 만들 수 있습니다. 아래 그림과 같이 자식 노드 A, B, C가 있을 때 Sequence Node와 Selector Node의 경우 B 노드가 Running을 반환하는 동안 C 노드를 실행하지 않습니다. RandomSelector Node는 선택된 노드를 계 [chunk_id] | Guides:562:3

[task] | distill [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리 AI: Running 상태 처리 및 Action Node 정의 ## Running 상태 처리 규칙 자식 노드가 `Success` 또는 `Failure`를 반환하면 부모 노드는 다음 자식으로 이동합니다. `Running`을 반환하면 부모 노드는 해당 자식을 다음 프레임에 재실행합니다. * **Sequence / Selector**: `Running` 상태의 자식이 존재하면 나머지 자식 실행을 보류합니다. * **RandomSelector**: 선택된 노드가 `Running`을 반환하면 계속 실행합니다. * [original] | 자식 노드가 Success 또는 Failure를 반환하면 부모 노드는 다음 자식 노드를 실행합니다. 그러나 자식 노드가 Running을 반환하면 부모 노드는 Running을 반환했던 자식 노드를 다음 프레임에 다시 실행합니다. 이 특성을 활용해 여러 프레임 동안 동작하는 노드를 만들 수 있습니다. 아래 그림과 같이 자식 노드 A, B, C가 있을 때 Sequence Node와 Selector Node의 경우 B 노드가 Running을 반환하는 동안 C 노드를 실행하지 않습니다. RandomSelector Node는 선택된 노드를 계 [chunk_id] | Guides:562:3

[task] | distill [title] | 효과음 만들기 [category] | Guides [rephrased] | # SoundComponent & SoundService `SoundComponent`와 `SoundService`를 사용해 음원 재생 및 제어를 수행합니다. ## SoundComponent 엔티티에 추가하여 소리를 재생/정지합니다. * **음원 소스**: Resource Storage의 `Audio RUID` 또는 크리에이터 추가 음원의 `RUID`. * **핵심 기능**: 특정 엔티티와의 거리 기반 음량 조절, 상호작용 시 몰입감 제공. * **상세 프로퍼티**: [SoundComponent API 문서](/ap [original] | # 학습 과정 소개 월드를 입체적으로 만들기 위해 [**SoundComponent**](/apiReference/Components/SoundComponent)와 [**SoundService**](/apiReference/Services/SoundService)를 활용해 음원을 재생하고, 때에 맞게 제어하는 방법을 소개합니다. # SoundComponent 월드를 더욱 입체적으로 만들기 위해 다양한 소리가 이곳저곳에서 재생되게 만들거나, 플레이어와 특정 엔티티의 거리에 따라 다른 음량으로 들리게 만들 수 있습니다. **Soun [chunk_id] | Guides:578:0

[task] | extract_knowledge [title] | 카드와 UI 만들기 [category] | Guides [rephrased] | # 카드 소환 및 UI 배치 (Card Pair Game) 본 절에서는 메이플스토리 월드(mLua)에서 `CardBoard` 컴포넌트를 통해 카드 모델(`Model_Card`)을 UI 영역에 소환하고, 이를 트리거하는 로직(`CardPairGameLogic`)을 구성하는 방법을 다룹니다. ## 1. 개념 설명 카드 짝 맞추기 게임에서 물리적 카드 객체는 서버가 아닌 클라이언트 화면에 표시되는 UI 요소로 동작합니다. 이를 위해 다음과 같은 구조를 사용합니다. 1. **CardBoard 컴포넌트**: 카드들이 배치될 UI 컨 [original] | 1. **CardBoard** 컴포넌트를 **CardPairGameUI** 그룹에 추가합니다. 2. **CardBoard** 컴포넌트를 선택해 스크립트 에디터를 엽니다. 3. **CardSpawnRoot** 프로퍼티를 추가하고, 반환 타입을 Entity로 변경합니다. 4. 엔티티는 **UI_Block_Group**으로 지정합니다. ```lua Property: [None] Entity CardSpawnRoot = /ui/CardParirGameUi/UI_Board/UI_Blocks/UI [chunk_id] | Guides:561:2

[task] | extract_knowledge [title] | 행동 트리를 활용한 AI 만들기 [category] | Guides [rephrased] | # 행동 트리를 활용한 AI 만들기 ## 1. 개념 설명 AI 설계를 위한 모델링 기법으로는 **유한 상태 기계(FSM)**, **계층적 유한 상태 기계(HFSM)**, 그리고 **행동 트리(Behaviour Tree, BT)**가 있습니다. ### 1.1 유한 상태 기계 (FSM) 특정 조건과 상황에 따라 유한개의 상태 중 하나로 전환되거나 해당 상태에 따른 액션을 수행하는 모델입니다. * **구성 요소**: 상태(State)와 전이(Transition) * **동작 원리**: 현재 상태에서 액션을 수행하다가 특정 조 [original] | # 학습 과정 소개 행동 트리와 BTNodeType 개념을 이해하고, AIComponent를 활용해 Action Node를 생성하는 방법을 알아봅시다. [행동 트리 노드 만들기](/docs?postId=1155)에서 행동 트리 구현 방법과 예제를 소개합니다. ##### 참고 가이드 * [행동 트리 노드 만들기](/docs?postId=1155) * [Behaviour Tree Editor로 행동 트리 만들기](/docs?postId=1399) ##### 참고 API Reference * [BTNode](/apiReference [chunk_id] | Guides:562:0

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