[task] | knowledge_list [title] | MSW MCP [category] | Guides [rephrased] | 제시된 원문은 mLua 스크립트 언어 및 API 문서가 아니라, 메이플스토리 월드(MSW) 개발 환경에서 MCP(Model Context Protocol) 서버를 설정하는 **GUI 설정 및 JSON 컨피그 파일 작성 가이드**입니다. 따라서 원문에 존재하는 정보만을 기반으로 핵심 사실을 정리합니다. * **주의:** 원문에 `mcp_config.json` 파일의 Windows 버전 예시 블록이 `lua` 언어 태그로 잘못 표기되어 있으나, 내용은 JSON 형식입니다. 아래 정리에서는 원문에 명시된 내용 그대로를 근거로 서술합 [original] | 1. **Agent 패널 - [...] 버튼 - MCP Store - Manage MCP Servers - View raw Config** 선택 2. **mcp_config.json**에 MCP 등록 구문을 추가합니다. 3. Manage MCP Servers에서 refresh 버튼 클릭합니다. 4. msw-maker-mcp / msw-mcp가 목록에서 활성화 상태인지 확인합니다. ### 수동 설치 1. 글로벌 경로에 `mcp_config.json`을 생성합니다. 2. MCP_config.json에 MCP 등록 구문을 추가합니다. [chunk_id] | Guides:1368:9
[task] | distill [title] | MSW MCP [category] | Guides [rephrased] | # MCP MSW 설정 가이드 ## 1. Codex CLI 등록 및 연결 ### 서버 등록 Terminal에서 운영체제에 맞는 명령어를 실행하여 서버를 등록합니다. 등록 정보는 사용자 글로벌 경로(`~/.codex/config.toml`)에 저장되어 모든 Codex 세션에 공통 적용됩니다. **Windows (stdio)** ```lua codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-m [original] | 1. Terminal에서 운영체제에 맞는 명령어를 입력하고, 서버를 등록합니다. 이 등록은 **사용자 글로벌 경로 (`~/.codex/config.toml`) 에 저장**되어 모든 Codex 세션에 공통 적용됩니다. **Windows(stdio)**: ```lua codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat" ``` **macOS [chunk_id] | Guides:1368:8
[task] | extract_knowledge [title] | MSW MCP [category] | Guides [rephrased] | # MapleStory Worlds MCP (Model Context Protocol) 설정 ## 1. 개념 설명 MapleStory Worlds(MSW) MCP는 AI 도구가 MSW 개발 환경과 상호작용할 수 있도록 연결하는 프로토콜 서버입니다. 두 가지 타입의 서버가 제공되며, 각각 다른 목적을 갖습니다. 1. **msw-maker-mcp (stdio)**: 로컬에서 실행되는 MakerMCP 바이너리를 통해 월드의 로컬 워크스페이스 파일 시스템과 직접 통신합니다. 운영체제별(Windows, macOS) 실행 경로가 다릅니 [original] | 1. `claude mcp add --scope project ...` 명령어로 월드의 로컬 워크스페이스 폴더의 `.mcp.json` 에 등록합니다. **Windows(stdio)**: ```lua claude mcp add msw-maker-mcp --scope project -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat" ``` **macOS(stdio)**: bat가 아 [chunk_id] | Guides:1368:4
[task] | extract_knowledge [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 ## 개념 설명 메이플스토리 월드는 최적화된 환경을 제공하기 위해 접속한 클라이언트 중 하나를 물리 연산의 주체로 임의 선정합니다. 이 임의로 선정된 클라이언트를 **Host Client**라고 칭합니다. Host Client가 물리 연산을 수행한 결괏값(예: `TransformComponent.position`, 강체의 위치, 속도 등)을 서버가 받아 온 뒤, 모든 클라이언트에게 전달하여 동기화합니다. 이 연산 방식의 특성상 엔티티가 충돌한 직후 크리에이터가 `PhysicsConta [original] | 메이플스토리 월드에서의 기본적인 물리 연산 방식에 대해 알아봅시다. Physics Owner를 변경했을 때의 변화에 대해서도 알아봅시다. ##### 참고 가이드 [물리 사용하기](/docs?postId=757) ## 기본 물리 연산 방식 메이플스토리 월드는 최적화된 환경을 제공하기 위해 접속한 클라이언트 중 하나를 물리 연산의 주체로 임의 선정합니다. 임의로 선정된 클라이언트를 **Host Client**라고 칭합니다. 이 Host Client가 연산한 결괏값을 서버가 받아 온 뒤, 모든 클라이언트에게 전달해 동기화합니다.(` [chunk_id] | Guides:1369:0
[task] | wikipedia [title] | MSW MCP [category] | Guides [rephrased] | # MCP (Model Context Protocol) 서버 설정 MCP 서버는 터미널 명령어를 통해 등록하거나, 설정 파일을 직접 편집하여 구성할 수 있습니다. 서버 등록 정보는 사용자 글로벌 경로(`~/.codex/config.toml`)에 저장되며, 이 설정은 모든 Codex 세션에 공통적으로 적용됩니다. ## 1. 터미널 명령어를 통한 서버 등록 운영체제에 맞는 명령어를 터미널에 입력하여 서버를 등록합니다. * **Windows (stdio)**: ```lua codex mcp add msw-make [original] | 1. Terminal에서 운영체제에 맞는 명령어를 입력하고, 서버를 등록합니다. 이 등록은 **사용자 글로벌 경로 (`~/.codex/config.toml`) 에 저장**되어 모든 Codex 세션에 공통 적용됩니다. **Windows(stdio)**: ```lua codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat" ``` **macOS [chunk_id] | Guides:1368:8
[task] | wikipedia [title] | MSW MCP [category] | Guides [rephrased] | # MCP (Model Context Protocol) 서버 구성 MCP 서버를 구성하는 과정은 자동 설치와 수동 설치로 나뉩니다. 두 방식 모두 `mcp_config.json` 파일에 MCP 등록 구문을 추가하고, 해당 서버가 활성화 상태인지 확인하는 절차로 구성됩니다. ## 자동 설치 자동 설치 과정은 에이전트(Agent) 패널을 통해 진행됩니다. 에이전트 패널의 `[...]` 버튼을 클릭한 후 **MCP Store** > **Manage MCP Servers** > **View raw Config** 순서로 선택합니다. [original] | 1. **Agent 패널 - [...] 버튼 - MCP Store - Manage MCP Servers - View raw Config** 선택 2. **mcp_config.json**에 MCP 등록 구문을 추가합니다. 3. Manage MCP Servers에서 refresh 버튼 클릭합니다. 4. msw-maker-mcp / msw-mcp가 목록에서 활성화 상태인지 확인합니다. ### 수동 설치 1. 글로벌 경로에 `mcp_config.json`을 생성합니다. 2. MCP_config.json에 MCP 등록 구문을 추가합니다. [chunk_id] | Guides:1368:9
[task] | extract_knowledge [title] | MSW MCP [category] | Guides [rephrased] | # MapleStory Worlds MCP 설정 ## 개념 설명 MapleStory Worlds MCP(Model Context Protocol)는 Cursor 편집기에서 MapleStory Worlds 개발 도구와 상호작용할 수 있도록 연결하는 서버 구성입니다. 이 구성은 프로젝트 스코프의 `mcp.json` 파일에 정의되며, 두 개의 주요 서버를 포함합니다: 1. **msw-maker-mcp**: 로컬에서 실행되는 스탠드얼론 프로세스(stdio 방식)로, 메이플스토리 월드 메이커 관련 작업을 처리합니다. 2. **msw-m [original] | 1. Cursor 설정 화면을 엽니다. 2. `Tools & Integrations` 또는 `MCP`를 선택합니다 3. `New MCP Server` - 프로젝트 스코프의 `mcp.json` 편집 화면을 엽니다. 글로벌 등록 옵션은 사용하지 않습니다. 4. 운영체제에 맞게 아래 json 내용을 입력합니다. **Windows**: ```lua { "mcpServers": { "msw-maker-mcp": { "type": "stdio", "command": "cmd.e [chunk_id] | Guides:1368:6
[task] | diverse_qa [title] | MSW MCP [category] | Guides [rephrased] | 질문: MCP 서버를 활성화하기 위해 Agent 패널에서 어떤 경로를 따라가야 하나요? 답변: Agent 패널의 [...] 버튼을 클릭한 후 MCP Store, Manage MCP Servers, View raw Config 순서로 선택해야 합니다. 질문: mcp_config.json 파일에 MCP 등록 구문을 추가한 후, 변경 사항을 적용하기 위해 어떤 행동을 취해야 하나요? 답변: Manage MCP Servers 창에서 refresh 버튼을 클릭하거나, Google Antigravity를 재시작해야 합니다. 질문: msw- [original] | 1. **Agent 패널 - [...] 버튼 - MCP Store - Manage MCP Servers - View raw Config** 선택 2. **mcp_config.json**에 MCP 등록 구문을 추가합니다. 3. Manage MCP Servers에서 refresh 버튼 클릭합니다. 4. msw-maker-mcp / msw-mcp가 목록에서 활성화 상태인지 확인합니다. ### 수동 설치 1. 글로벌 경로에 `mcp_config.json`을 생성합니다. 2. MCP_config.json에 MCP 등록 구문을 추가합니다. [chunk_id] | Guides:1368:9
[task] | diverse_qa [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 질문: 메이플스토리 월드에서 물리 연산의 주체로 임의 선정되는 클라이언트를 무엇이라 부르는가? 답변: 임의로 선정된 클라이언트를 Host Client라고 칭합니다. 질문: Host Client가 연산한 물리 결괏값은 어떤 경로를 통해 모든 클라이언트에 동기화되는가? 답변: Host Client가 연산한 결괏값을 서버가 받아 온 뒤, 모든 클라이언트에게 전달해 동기화합니다. 질문: 메이플스토리 월드의 기본 물리 연산 방식에서 `PhysicsContactEvent`에서 정의한 명령은 모든 클라이언트에게 즉시 동기화되는가? 답변: 아 [original] | 메이플스토리 월드에서의 기본적인 물리 연산 방식에 대해 알아봅시다. Physics Owner를 변경했을 때의 변화에 대해서도 알아봅시다. ##### 참고 가이드 [물리 사용하기](/docs?postId=757) ## 기본 물리 연산 방식 메이플스토리 월드는 최적화된 환경을 제공하기 위해 접속한 클라이언트 중 하나를 물리 연산의 주체로 임의 선정합니다. 임의로 선정된 클라이언트를 **Host Client**라고 칭합니다. 이 Host Client가 연산한 결괏값을 서버가 받아 온 뒤, 모든 클라이언트에게 전달해 동기화합니다.(` [chunk_id] | Guides:1369:0
[task] | extract_knowledge [title] | MSW MCP [category] | Guides [rephrased] | # MCP (Model Context Protocol) 서버 등록 ## 개념 설명 MCP 서버는 외부 도구와의 통신을 위해 설정되는 프로토콜 서버입니다. 메이플스토리 월드(MSW) 환경에서는 로컬에서 실행되는 `stdio` 방식의 서버와 HTTP를 통해 접근하는 `http` 방식의 서버를 지원합니다. 설정 정보는 반드시 **월드의 로컬 워크스페이스 폴더에 위치한 `.mcp.json` 파일**에 저장되어야 합니다. 이를 위해 명령어 실행 시 `--scope project` 옵션을 명시적으로 지정해야 하며, 이 옵션이 생략되면 기 [original] | 터미널에서 등록 방식에 맞는 명령어를 사용합니다. 등록 결과를 **월드의 로컬 워크스페이스 폴더의 `.mcp.json` 에 저장**하기 위해 항상 `--scope project` 옵션을 함께 사용해야 합니다. 옵션 생략 시 기본값 `local` 로 등록되어 사용자별 설정에만 반영됩니다. **Windows(stdio)**: ```lua claude mcp add msw-maker-mcp --scope project -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMC [chunk_id] | Guides:1368:5
[task] | distill [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 ## 핵심 개념 및 주의사항 기본 물리 연산에서 강체 충돌 시 반발 없이 즉시 멈추도록 설정하더라도, **호스트 클라이언트 연산 값이 서버로 전달되어 다시 동기화되는 과정에서 약간의 떨림(Jitter)이 발생할 수 있습니다.** ## 구성 요소 설정 1. **SnowBall 모델** 생성 2. **PhysicsRigidbodyComponent** 추가 * `GravityScale`: 0 * `Restitution`: 1 3. **PhysicsColliderCo [original] | 예제를 통해 기본 물리 연산의 작동 방식을 살펴봅시다. 각기 다른 방향에서 같은 속도로 이동하는 눈덩이가 충돌하게 만들고 충돌 직후 반발 없이 바로 멈추도록 예제를 만들어 봅시다. 이 예제를 만들면 크리에이터는 강체들이 충돌한 직후 어떠한 반발도 없이 즉시 충돌한 지점에서 멈출 수 있을 거라고 생각합니다. 그러나 호스트 클라이언트가 연산한 값을 서버가 받은 뒤 모든 클라이언트에게 동기화해주는 과정에서 충돌 직후 약간의 떨림이 발생하는 것을 확인할 수 있습니다. ![[object Object]](https://mod-file.dn. [chunk_id] | Guides:1369:1
[task] | distill [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | ## Physics Owner 지정 **Physics Owner**는 강체의 물리 연산 주체를 지정합니다. 지정된 주체가 물리 연산과 충돌 이벤트를 처리하며, 연산 결과는 `TransformComponent` 업데이트에 우선 적용됩니다. 충돌 오류, 지연, 성능 저하 방지를 위해 월드 성격에 맞게 지정합니다. ### Physics Owner가 Client일 때 `SetClientAsPhysicsOwner()`로 특정 클라이언트를 **Physics Owner Client**로 지정하여 물리 연산을 위임할 수 있습니다. * ` [original] | ## Physics Owner 지정 **Physics Owner**는 특정 강체의 물리 연산의 주체를 지정하기 위해 사용합니다. PhysicsOwner를 지정하게 되면 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 됩니다. **Server, 특정 Physics Owner Client, ClientOnly**를 Physics Owner로 지정할 수 있고, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 크리에이터가 제작하는 월드의 성격에 따라 Physics Owner를 적절하게 지정하면 충 [chunk_id] | Guides:1369:3
[task] | diverse_qa [title] | MSW MCP [category] | Guides [rephrased] | 질문: Codex CLI에서 MCP 서버를 등록할 때 사용자 글로벌 경로에 저장되는 파일의 경로는 어디인가요? 답변: 사용자 글로벌 경로인 `~/.codex/config.toml`에 저장됩니다. 질문: Windows 환경에서 stdio 방식으로 msw-maker-mcp를 등록하기 위한 명령어는 무엇인가요? 답변: `codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat"` 입니다. [original] | 1. Terminal에서 운영체제에 맞는 명령어를 입력하고, 서버를 등록합니다. 이 등록은 **사용자 글로벌 경로 (`~/.codex/config.toml`) 에 저장**되어 모든 Codex 세션에 공통 적용됩니다. **Windows(stdio)**: ```lua codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat" ``` **macOS [chunk_id] | Guides:1368:8
[task] | distill [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 물리 시뮬레이션은 기본적으로 서버에서 수행되지만, 클라이언트 로컬에서 즉시 피드백이 필요한 경우(예: 발사체 초기 가속) 특정 클라이언트를 물리 소유자로 지정할 수 있습니다. ## 핵심 API **`PhysicsRigidbodyComponent:SetClientAsPhysicsOwner(UserId)`** * **타입**: `UserId` * **동작**: 해당 엔티티의 물리 계산 주체를 지정된 클라이언트로 변경합니다. * **주의**: 물리 컴포넌트(`PhysicsRigi [original] | Method: void OnBeginPlay() { self:InitDirs() self:StartGame() } void InitDirs() { self.Dirs[1] = Vector3(math.sqrt(3)/2, 1/2, 0) self.Dirs[2] = Vector3(0, -1,0) self.Dirs[3] = Vector3(-math.sqrt(3)/2, 1/2, 0) } [server only] v [chunk_id] | Guides:1369:2
[task] | knowledge_list [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 제공된 문서 내용에만 기반하여 핵심 사실을 추출한 목록입니다. 1. **Physics Owner**는 특정 강체의 물리 연산 주체를 지정하여, 해당 주체가 물리 연산과 충돌 이벤트를 처리하도록 하는 역할을 수행합니다. 2. Physics Owner로는 **Server**, **특정 Physics Owner Client**, **ClientOnly**를 지정할 수 있으며, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 3. **SetClientAsPhysicsOwner()** 메서드를 호출하면 특 [original] | ## Physics Owner 지정 **Physics Owner**는 특정 강체의 물리 연산의 주체를 지정하기 위해 사용합니다. PhysicsOwner를 지정하게 되면 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 됩니다. **Server, 특정 Physics Owner Client, ClientOnly**를 Physics Owner로 지정할 수 있고, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 크리에이터가 제작하는 월드의 성격에 따라 Physics Owner를 적절하게 지정하면 충 [chunk_id] | Guides:1369:3
[task] | knowledge_list [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 제공된 문서의 내용만 바탕으로 핵심 사실을 추출하여 정리했습니다. 1. `PhysicsRigidbodyComponent`의 `GravityScale` 프로퍼티를 `0`으로, `Restitution` 프로퍼티를 `1`로 설정하면 눈덩이 모델은 중력의 영향을 받지 않고 충돌 시 반발 없이 멈추는 물리 연산의 기초를 마련할 수 있다. 2. `PhysicsColliderComponent`에 `EnableContactEvent`를 `true`로 설정해야 `HandlePhysicsContactBeginEvent` 이벤트 핸들러가 충돌 발생 [original] | 예제를 통해 기본 물리 연산의 작동 방식을 살펴봅시다. 각기 다른 방향에서 같은 속도로 이동하는 눈덩이가 충돌하게 만들고 충돌 직후 반발 없이 바로 멈추도록 예제를 만들어 봅시다. 이 예제를 만들면 크리에이터는 강체들이 충돌한 직후 어떠한 반발도 없이 즉시 충돌한 지점에서 멈출 수 있을 거라고 생각합니다. 그러나 호스트 클라이언트가 연산한 값을 서버가 받은 뒤 모든 클라이언트에게 동기화해주는 과정에서 충돌 직후 약간의 떨림이 발생하는 것을 확인할 수 있습니다. ![[object Object]](https://mod-file.dn. [chunk_id] | Guides:1369:1
[task] | knowledge_list [title] | MSW MCP [category] | Guides [rephrased] | 제시된 문서의 내용은 mLua 스크립트 언어나 MapleStory Worlds API가 아닌, **Codex CLI 및 Google Antigravity IDE 환경 설정 가이드**입니다. 따라서 요청하신 "mLua 스크립트 규칙"이나 "API 문서 정통 기술 작가"로서의 mLua 코드 생성 역할은 적용되지 않으며, **주어진 원문에 있는 정보만 사용하여** 환경 설정 및 구성 파일 관련 핵심 사실을 목록으로 정리합니다. 원문에 존재하지 않는 mLua API나 코드는 지어내지 않으며, 원문의 명령어와 파일 구조를 그대로 인용합니다 [original] | 1. Terminal에서 운영체제에 맞는 명령어를 입력하고, 서버를 등록합니다. 이 등록은 **사용자 글로벌 경로 (`~/.codex/config.toml`) 에 저장**되어 모든 Codex 세션에 공통 적용됩니다. **Windows(stdio)**: ```lua codex mcp add msw-maker-mcp -- cmd.exe /c call "%LOCALAPPDATA%\Nexon\MapleStory Worlds\MakerMCP\msw-maker-mcp.bat" ``` **macOS [chunk_id] | Guides:1368:8
[task] | diverse_qa [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 질문: 문서에서 설명하는 물리 충돌 예제의 주요 목적은 무엇인가요? 답변: 각기 다른 방향에서 같은 속도로 이동하는 눈덩이가 충돌하게 만들고, 충돌 직후 반발 없이 바로 멈추도록 하는 방식을 보여주는 것입니다. 질문: 호스트 클라이언트가 연산한 값을 서버가 받은 뒤 모든 클라이언트에게 동기화하는 과정에서 발생하는 현상은 무엇인가요? 답변: 충돌 직후 약간의 떨림이 발생하는 것을 확인할 수 있습니다. 질문: SnowBall 모델에 추가되는 PhysicsRigidbodyComponent의 GravityScale 값은 얼마로 설정해야 [original] | 예제를 통해 기본 물리 연산의 작동 방식을 살펴봅시다. 각기 다른 방향에서 같은 속도로 이동하는 눈덩이가 충돌하게 만들고 충돌 직후 반발 없이 바로 멈추도록 예제를 만들어 봅시다. 이 예제를 만들면 크리에이터는 강체들이 충돌한 직후 어떠한 반발도 없이 즉시 충돌한 지점에서 멈출 수 있을 거라고 생각합니다. 그러나 호스트 클라이언트가 연산한 값을 서버가 받은 뒤 모든 클라이언트에게 동기화해주는 과정에서 충돌 직후 약간의 떨림이 발생하는 것을 확인할 수 있습니다. ![[object Object]](https://mod-file.dn. [chunk_id] | Guides:1369:1
[task] | extract_knowledge [title] | MSW MCP [category] | Guides [rephrased] | # MCP 서버 설정 및 등록 본 절에서는 메이플스토리 월드 메이커(MSW Maker) 환경에서 MCP(Model Context Protocol) 서버를 구성하고 활성화하는 방법을 다룹니다. MCP 서버는 에이전트(Agent)와 외부 도구 간의 통신을 담당하며, `msw-maker-mcp`와 `msw-mcp` 두 가지 타입의 서버 구성이 필요합니다. ## 개념 설명 MCP 서버는 JSON 형식의 설정 파일(`mcp_config.json`)을 통해 정의됩니다. 설정 파일에는 다음 두 가지 서버가 포함됩니다. 1. **msw- [original] | 1. **Agent 패널 - [...] 버튼 - MCP Store - Manage MCP Servers - View raw Config** 선택 2. **mcp_config.json**에 MCP 등록 구문을 추가합니다. 3. Manage MCP Servers에서 refresh 버튼 클릭합니다. 4. msw-maker-mcp / msw-mcp가 목록에서 활성화 상태인지 확인합니다. ### 수동 설치 1. 글로벌 경로에 `mcp_config.json`을 생성합니다. 2. MCP_config.json에 MCP 등록 구문을 추가합니다. [chunk_id] | Guides:1368:9
[task] | distill [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 ### Server Owner 설정 `SetServerAsPhysicsOwner()` 를 호출하면 물리 연산(충돌 이벤트, 명령 전달 등)이 **서버**에서 처리됩니다. * **장점**: 충돌 직후 명령이 즉시 실행 및 동기화되어 지연(latency) 현상이 없음. * **주의**: 서버 부하 증가 가능. 불필요한 연산 최소화 및 프로파일러/디버깅을 통한 성능 최적화 필수. ```lua [server] void SpawnAndShoot(integer index) { loc [original] | `SetServerAsPhysicsOwner()` 사용해 Physics Owner를 **Server**로 설정하면 서버에서 충돌 이벤트 전달, 명령 전달 등 모든 물리 연산과 관련된 처리를 서버에서 처리합니다. 충돌 후의 명령을 바로 수행하고, 동기화할 수 있기 때문에 충돌 시 지연되는 모습이 나타나지 않습니다. 그러나 서버에서 연산을 과도하게 처리할 경우 부하가 발생해 월드가 느려지게 될 수 있습니다. 서버에서 물리 연산을 할 경우 불필요한 연산을 최소화하고, 프로파일러와 디버깅을 활용해 월드의 성능을 최적화하는 작업을 반드시 [chunk_id] | Guides:1369:4
[task] | extract_knowledge [title] | MSW MCP [category] | Guides [rephrased] | # MCP 서버 설정 및 연동 (MSW Maker MCP & MSW MCP) 본 절에서는 메이플스토리 월드(MapleStory Worlds) 개발 환경에서 Model Context Protocol(MCP) 서버를 설정하여 AI 에이전트(Cursor, Codex)와 연동하는 방법을 다룬다. 주요 대상은 로컬 워크스페이스 기반의 `msw-maker-mcp`와 원격 API 기반의 `msw-mcp`이다. ## 1. 개념 설명 * **msw-maker-mcp**: 로컬 파일 시스템과 메이플스토리 월드 메이커 툴을 제어하기 위한 표준 [original] | 1. 월드의 로컬 워크스페이스 폴더에 `.cursor/mcp.json` 생성합니다. 2. 운영체제에 맞게 아래 내용을 입력합니다. **Windows**: ```lua { "mcpServers": { "msw-maker-mcp": { "type": "stdio", "command": "cmd.exe", "args": [ "/c", "call", "%LOCALAPPDATA%\\Nexon\\MapleStory Worl [chunk_id] | Guides:1368:7
[task] | wikipedia [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # Physics Owner 지정 **Physics Owner**는 특정 강체(Rigid Body)의 물리 연산 주체를 명시하기 위한 컴포넌트입니다. Physics Owner를 설정하면 지정된 주체가 해당 강체의 물리 연산 및 충돌 이벤트를 처리하게 됩니다. Physics Owner로는 **Server**, **특정 Physics Owner Client**, **ClientOnly** 중 하나를 지정할 수 있으며, 이 연산 결과는 **TransformComponent**의 업데이트에 우선적으로 반영됩니다. 크리에이터가 제작하는 [original] | ## Physics Owner 지정 **Physics Owner**는 특정 강체의 물리 연산의 주체를 지정하기 위해 사용합니다. PhysicsOwner를 지정하게 되면 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 됩니다. **Server, 특정 Physics Owner Client, ClientOnly**를 Physics Owner로 지정할 수 있고, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 크리에이터가 제작하는 월드의 성격에 따라 Physics Owner를 적절하게 지정하면 충 [chunk_id] | Guides:1369:3
[task] | diverse_qa [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 질문: Physics Owner의 주요 목적은 무엇인가요? 답변: Physics Owner는 특정 강체의 물리 연산의 주체를 지정하여, 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 하도록 하는 것입니다. 질문: Physics Owner로 지정할 수 있는 대상은 어떤 것들이 있나요? 답변: Server, 특정 Physics Owner Client, ClientOnly를 Physics Owner로 지정할 수 있습니다. 질문: Physics Owner의 연산 결과는 어디에 우선 적용되나요? 답변: Physics Owner의 [original] | ## Physics Owner 지정 **Physics Owner**는 특정 강체의 물리 연산의 주체를 지정하기 위해 사용합니다. PhysicsOwner를 지정하게 되면 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 됩니다. **Server, 특정 Physics Owner Client, ClientOnly**를 Physics Owner로 지정할 수 있고, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 크리에이터가 제작하는 월드의 성격에 따라 Physics Owner를 적절하게 지정하면 충 [chunk_id] | Guides:1369:3
[task] | wikipedia [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 본 섹션에서는 메이플스토리 월드(mLua) 환경에서 기본 물리 연산의 작동 방식과 호스트 클라이언트-서버 동기화 과정에서 발생할 수 있는 물리적 현상을 예제를 통해 살펴본다. 이 예제의 목표는 서로 다른 방향에서 동일한 속도로 이동하는 두 개의 눈덩이를 충돌하게 하고, 충돌 직후 어떠한 반발력(restitution)도 없이 즉시 멈추도록 설정하는 것이다. 크리에이터의 의도대로 강체들이 충돌한 직후 반발 없이 즉시 지점에서 멈추는 것으로 인식될 수 있으나, 실제 실행 환경에서는 호스트 클 [original] | 예제를 통해 기본 물리 연산의 작동 방식을 살펴봅시다. 각기 다른 방향에서 같은 속도로 이동하는 눈덩이가 충돌하게 만들고 충돌 직후 반발 없이 바로 멈추도록 예제를 만들어 봅시다. 이 예제를 만들면 크리에이터는 강체들이 충돌한 직후 어떠한 반발도 없이 즉시 충돌한 지점에서 멈출 수 있을 거라고 생각합니다. 그러나 호스트 클라이언트가 연산한 값을 서버가 받은 뒤 모든 클라이언트에게 동기화해주는 과정에서 충돌 직후 약간의 떨림이 발생하는 것을 확인할 수 있습니다. ![[object Object]](https://mod-file.dn. [chunk_id] | Guides:1369:1
[task] | extract_knowledge [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # Physics Owner 지정 ## 1. 개념 설명 **Physics Owner**는 특정 강체(Rigid Body)의 물리 연산 주체를 지정하기 위한 설정입니다. Physics Owner가 지정되면, 해당 주체가 물리 연산 및 충돌 이벤트를 처리합니다. 지정 가능한 Physics Owner는 다음 세 가지입니다. * **Server**: 서버가 물리 연산을 처리합니다. * **특정 Physics Owner Client**: 특정 클라이언트가 물리 연산을 처리합니다. * **ClientOnly**: 클라이언트 전용 [original] | ## Physics Owner 지정 **Physics Owner**는 특정 강체의 물리 연산의 주체를 지정하기 위해 사용합니다. PhysicsOwner를 지정하게 되면 지정된 연산 주체가 물리 연산과 충돌 이벤트를 처리하게 됩니다. **Server, 특정 Physics Owner Client, ClientOnly**를 Physics Owner로 지정할 수 있고, 연산 결과는 **TransformComponent** 업데이트에 우선 적용됩니다. 크리에이터가 제작하는 월드의 성격에 따라 Physics Owner를 적절하게 지정하면 충 [chunk_id] | Guides:1369:3
[task] | knowledge_list [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 제시된 문서의 코드와 주석 내용을 바탕으로 추출한 핵심 사실 목록은 다음과 같습니다. 1. `OnBeginPlay` 메서드는 컴포넌트가 초기화될 때 호출되며, 내부적으로 `self:InitDirs()`와 `self:StartGame()` 메서드를 순서대로 호출합니다. 2. `InitDirs` 메서드는 `self.Dirs` 테이블의 1, 2, 3 인덱스에 각각 `(math.sqrt(3)/2, 1/2, 0)`, `(0, -1, 0)`, `(-math.sqrt(3)/2, 1/2, 0)` 값을 가지는 `Vector3` 객체를 할당하여 3 [original] | Method: void OnBeginPlay() { self:InitDirs() self:StartGame() } void InitDirs() { self.Dirs[1] = Vector3(math.sqrt(3)/2, 1/2, 0) self.Dirs[2] = Vector3(0, -1,0) self.Dirs[3] = Vector3(-math.sqrt(3)/2, 1/2, 0) } [server only] v [chunk_id] | Guides:1369:2
[task] | knowledge_list [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | - `SetServerAsPhysicsOwner()` 메서드를 호출하여 Physics Owner를 Server로 설정하면, 충돌 이벤트 전달 및 명령 전달 등 모든 물리 연산 관련 처리가 서버에서 수행됩니다. - Physics Owner가 Server로 설정된 경우, 충돌 후 명령이 즉시 수행되고 동기화되어 충돌 시 지연되는 현상이 발생하지 않습니다. - 서버에서 물리 연산을 과도하게 처리할 경우 서버 부하가 증가하여 월드 전체의 성능 저하(느려짐)가 발생할 수 있으므로, 불필요한 연산 최소화 및 프로파일러·디버깅을 통한 성능 최적 [original] | `SetServerAsPhysicsOwner()` 사용해 Physics Owner를 **Server**로 설정하면 서버에서 충돌 이벤트 전달, 명령 전달 등 모든 물리 연산과 관련된 처리를 서버에서 처리합니다. 충돌 후의 명령을 바로 수행하고, 동기화할 수 있기 때문에 충돌 시 지연되는 모습이 나타나지 않습니다. 그러나 서버에서 연산을 과도하게 처리할 경우 부하가 발생해 월드가 느려지게 될 수 있습니다. 서버에서 물리 연산을 할 경우 불필요한 연산을 최소화하고, 프로파일러와 디버깅을 활용해 월드의 성능을 최적화하는 작업을 반드시 [chunk_id] | Guides:1369:4
[task] | diverse_qa [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | 질문: `OnBeginPlay()` 메서드에서 호출되는 두 메서드의 이름은 무엇인가요? 답변: `OnBeginPlay()` 메서드에서는 `self:InitDirs()`와 `self:StartGame()` 두 메서드가 호출됩니다. 질문: `InitDirs()` 메서드에서 `self.Dirs[2]` 에 할당되는 Vector3 값은 무엇인가요? 답변: `self.Dirs[2]` 에는 `Vector3(0, -1, 0)` 값이 할당됩니다. 질문: `StartGame()` 메서드가 실행되는 공간(execution space)은 어디인가요? [original] | Method: void OnBeginPlay() { self:InitDirs() self:StartGame() } void InitDirs() { self.Dirs[1] = Vector3(math.sqrt(3)/2, 1/2, 0) self.Dirs[2] = Vector3(0, -1,0) self.Dirs[3] = Vector3(-math.sqrt(3)/2, 1/2, 0) } [server only] v [chunk_id] | Guides:1369:2
[task] | distill [title] | 클라이언트의 TimeScale 조정하기 [category] | Guides [rephrased] | # 게임 로직 클라이언트의 TimeScale 조정 `UtilLogic`의 `SetClientTimeScale()` API를 사용하여 클라이언트의 애니메이션, 이동, 물리 속도를 제어합니다. ## SetClientTimeScale * **기능**: `Update(deltaTime)`에 전달되는 `deltaTime` 값을 변경하여 클라이언트 시간 흐름을 조절합니다. * **범위**: `0 ~ 100` (기본값 `1`, 음수 불가) * **동작 규칙**: * **프레임 빈도 유지**: `Update` 호출 횟수 [original] | [UtilLogic](/apiReference/Logics/UtilLogic)의 `SetClientTimeScale()`를 사용해 클라이언트의 애니메이션 재생 속도, 이동 속도, 물리의 속도를 제어할 수 있습니다. 이 메소드를 활용해 카메라 효과를 조절하거나, 애니메이션 재생 속도를 제어해 더욱 몰입감 있는 월드를 제작할 수 있습니다. ##### 참고 가이드 * [UtilLogic](/apiReference/Logics/UtilLogic) ## SetClientTimeScale `SetClientTimeScale()`를 사용해 [chunk_id] | Guides:1370:0
[task] | wikipedia [title] | Physics Owner 지정하기 [category] | Guides [rephrased] | # 충돌 Physics Owner 지정하기 mLua 스크립트 환경에서 물리 연산의 수행 주체(Physics Owner)를 설정하는 방법은 `SetServerAsPhysicsOwner()` 메서드를 통해 서버로 지정하거나, `PhysicsColliderComponent`의 프로퍼티를 조정하여 클라이언트로 한정하는 두 가지 방식이 존재합니다. 각 방식은 충돌 이벤트의 처리 위치와 네트워크 동기화 동작에 따라 게임의 체감 성능과 일관성에 영향을 미칩니다. ## 서버로 Physics Owner 지정하기 `SetServerAsPhysi [original] | `SetServerAsPhysicsOwner()` 사용해 Physics Owner를 **Server**로 설정하면 서버에서 충돌 이벤트 전달, 명령 전달 등 모든 물리 연산과 관련된 처리를 서버에서 처리합니다. 충돌 후의 명령을 바로 수행하고, 동기화할 수 있기 때문에 충돌 시 지연되는 모습이 나타나지 않습니다. 그러나 서버에서 연산을 과도하게 처리할 경우 부하가 발생해 월드가 느려지게 될 수 있습니다. 서버에서 물리 연산을 할 경우 불필요한 연산을 최소화하고, 프로파일러와 디버깅을 활용해 월드의 성능을 최적화하는 작업을 반드시 [chunk_id] | Guides:1369:4