[task] | diverse_qa [title] | 중복 컴포넌트 수정하기 [category] | Guides [rephrased] | 질문: 중복된 컴포넌트가 존재할 때 어떤 창에 로그 메시지가 발생하나요? 답변: Console 창과 Build Console 창에 관련 로그 메시지가 발생합니다. 질문: 메이커에서 제작 중인 월드에 처음 들어갈 때 또는 맵을 변경할 때 주로 어떤 로그 메시지가 출력되나요? 답변: 중복된 컴포넌트가 있을 경우 관련 로그 메시지가 출력됩니다. 질문: 맵에 배치된 Entity에서 중복 컴포넌트가 발생할 때 로그 메시지가 출력되는 시점은 언제인가요? 답변: 메이커 프로 모드 최초 진입 시 또는 메이커에서 맵 이동 시 로그 메시지가 Co [original] | 중복된 컴포넌트가 있을 경우 **Console, Build Console 창**에 관련 로그 메시지가 발생합니다. 이 로그 메시지들은 주로 메이커에서 제작 중인 월드에 처음 들어갈 때, 맵을 변경할 때 출력됩니다. 내용과 상황에 따라 적절하게 컴포넌트를 수정하거나, 제거하면 됩니다. 컴포넌트 중복은 주로 아래 네 가지 상황에서 발생합니다. #### 맵에 이미 배치된 Entity에서 중복 컴포넌트 발생 맵에 배치된 Entity에 중복된 Component가 있을 경우 메이커 프로 모드 최초 진입 시 또는 메이커에서 맵 이동 시 로그 [chunk_id] | Guides:1049:1
[task] | distill [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | # mLua 확장 문법 메이플스토리 월드는 표준 Lua에서 지원하지 않는 문법을 확장 지원합니다. ## Continue 루프의 현재 반복에서 남은 코드를 건너뛰고 다음 반복으로 이동합니다. ```lua for i = 1, 10 do if i % 2 == 0 then continue end print("odd number : ", i) end ``` ## 복합 할당 연산자 연산과 할당을 동시에 수행합니다. | 연산자 | 설명 | 예시 | 결과 | | :--- | :--- | :--- | :- [original] | # 학습 과정 소개 메이플스토리 월드에서는 루아에서 기본적으로 지원하지 않지만 다른 프로그래밍 언어에서 유용하게 사용되는 문법을 확장하여 지원합니다. 본 과정에서는 메이플스토리 월드에서 지원하는 루아 확장 문법 및 사용 예시를 소개합니다. # Continue **continue**는 해당 루프 사이클에 남아 있는 나머지 명령어를 건너뛰고 다음 단계의 루프를 수행하도록 하는 키워드입니다. ```lua local oddNumbers = {} for i = 1, 10 do if i % 2 == 0 then co [chunk_id] | Guides:1071:0
[task] | diverse_qa [title] | 중복 컴포넌트 수정하기 [category] | Guides [rephrased] | 질문: 몇몇 컴포넌트는 사용 시 필수로 함께 사용해야 하는 필요 컴포넌트가 자동으로 추가되는데, 이로 인해 어떤 문제가 발생할 수 있나요? 답변: 연관 컴포넌트끼리의 추가 순서에 따라 중복 컴포넌트가 발생할 수 있습니다. 질문: 중복 컴포넌트가 발생한 경우 이를 수정하기 위해 취해야 할 조치는 무엇인가요? 답변: 추가한 컴포넌트를 삭제하고, 재추가해 수정해야 합니다. 질문: 중복 컴포넌트 수정 과정에서 추가로 필요한 작업이 있나요? 답변: 이 과정에서 로직 수정이 필요할 수 있습니다. 질문: `AIChaseComponent`를 [original] | 몇몇 컴포넌트는 사용 시 필수로 함께 사용해야 하는 필요 컴포넌트가 있습니다. 이 필요 컴포넌트는 특정 컴포넌트를 추가했을 때 자동으로 추가되고 있습니다. 이 동작으로 인해 연관 컴포넌트끼리의 추가 순서에 따라 중복 컴포넌트가 발생할 수 있습니다. 이 경우 추가한 컴포넌트를 삭제하고, 재추가해 수정합니다. 이 과정에서 로직 수정이 필요할 수 있습니다. 필요 컴포넌트가 있는 컴포넌트는 아래의 표에서 확인할 수 있습니다. | 추가한 Component | 필요 Component | | --- | --- | | AIChaseCompo [chunk_id] | Guides:1049:2
[task] | knowledge_list [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | 1. 메이플스토리 월드의 mLua는 표준 Lua에서 지원하지 않는 문법을 확장하여 지원하며, 이는 다른 프로그래밍 언어에서 유용하게 사용되는 문법을 포함합니다. 2. `continue` 키워드는 현재 루프 사이클의 나머지 명령어를 건너뛰고 다음 루프 단계를 수행하도록 하는 제어 흐름 문법입니다. 3. `+=` 연산자는 두 값의 합을 계산하여 왼쪽 피연산자에 할당하는 더하기 할당 연산자입니다. 4. `-=` 연산자는 왼쪽 피연산자에서 오른쪽 피연산자를 뺀 결과를 왼쪽 피연산자에 할당하는 빼기 할당 연산자입니다. 5. `*=` 연산자는 [original] | # 학습 과정 소개 메이플스토리 월드에서는 루아에서 기본적으로 지원하지 않지만 다른 프로그래밍 언어에서 유용하게 사용되는 문법을 확장하여 지원합니다. 본 과정에서는 메이플스토리 월드에서 지원하는 루아 확장 문법 및 사용 예시를 소개합니다. # Continue **continue**는 해당 루프 사이클에 남아 있는 나머지 명령어를 건너뛰고 다음 단계의 루프를 수행하도록 하는 키워드입니다. ```lua local oddNumbers = {} for i = 1, 10 do if i % 2 == 0 then co [chunk_id] | Guides:1071:0
[task] | extract_knowledge [title] | 중복 컴포넌트 수정하기 [category] | Guides [rephrased] | # 중복 컴포넌트 수정 가이드 ## 1. 개념 설명 메이플스토리 월드(mLua) 환경에서 Entity에 동일한 또는 같은 계열의 Component가 두 개 이상 존재하면 시스템이 이를 '중복 컴포넌트'로 인식하여 오류를 발생시킵니다. 이 문제는 주로 `Console` 또는 `Build Console` 창에 로그 메시지로 출력되며, 월드 진입 시나 맵 전환 시점에 주로 확인됩니다. 중복 컴포넌트는 크게 다음 네 가지 상황으로 분류됩니다. 1. **맵에 정적 배치된 Entity**: 모델 기반 Entity 또는 맵에 직접 배치된 [original] | 중복된 컴포넌트가 있을 경우 **Console, Build Console 창**에 관련 로그 메시지가 발생합니다. 이 로그 메시지들은 주로 메이커에서 제작 중인 월드에 처음 들어갈 때, 맵을 변경할 때 출력됩니다. 내용과 상황에 따라 적절하게 컴포넌트를 수정하거나, 제거하면 됩니다. 컴포넌트 중복은 주로 아래 네 가지 상황에서 발생합니다. #### 맵에 이미 배치된 Entity에서 중복 컴포넌트 발생 맵에 배치된 Entity에 중복된 Component가 있을 경우 메이커 프로 모드 최초 진입 시 또는 메이커에서 맵 이동 시 로그 [chunk_id] | Guides:1049:1
[task] | extract_knowledge [title] | 중복 컴포넌트 수정하기 [category] | Guides [rephrased] | # 중복 컴포넌트 발생 원리와 수정 방법 ## 개념 설명 mLua 환경에서 특정 컴포넌트를 엔티티에 추가할 때, 해당 컴포넌트의 정상적인 동작을 위해 필수적으로 함께 존재해야 하는 '필요 컴포넌트'가 자동으로 추가됩니다. 이 자동 추가 동작은 연관된 컴포넌트들이 이미 존재하는 상태에서 추가 순서가 잘못되거나 중복으로 처리될 경우, 동일한 필요 컴포넌트가 두 번 이상 등록되는 '중복 컴포넌트' 문제를 유발할 수 있습니다. 중복 컴포넌트가 발생한 엔티티의 상태를 정상화하기 위해서는 문제가 된 컴포넌트를 삭제한 후 다시 추가하는 과 [original] | 몇몇 컴포넌트는 사용 시 필수로 함께 사용해야 하는 필요 컴포넌트가 있습니다. 이 필요 컴포넌트는 특정 컴포넌트를 추가했을 때 자동으로 추가되고 있습니다. 이 동작으로 인해 연관 컴포넌트끼리의 추가 순서에 따라 중복 컴포넌트가 발생할 수 있습니다. 이 경우 추가한 컴포넌트를 삭제하고, 재추가해 수정합니다. 이 과정에서 로직 수정이 필요할 수 있습니다. 필요 컴포넌트가 있는 컴포넌트는 아래의 표에서 확인할 수 있습니다. | 추가한 Component | 필요 Component | | --- | --- | | AIChaseCompo [chunk_id] | Guides:1049:2
[task] | extract_knowledge [title] | 멀티 터치 [category] | Guides [rephrased] | # 이벤트 멀티 터치 구현 ## 1. 개념 설명 이 절에서는 `ScreenTouchHoldEvent`를 활용하여 유저가 엔티티를 터치한 상태로 움직일 때 엔티티가 해당 지점으로 이동하도록 만드는 로직을 다룹니다. 멀티 터치를 지원하기 위해 현재 터치 중인 `touchId` 목록을 관리하고, 터치 해제 시(`TouchReleaseEvent`) 모든 터치가 종료되면 `ScreenTouchHoldEvent`의 구독을 취소하여 불필요한 연산을 방지하는 방식을 적용합니다. * **`AddHandler()`**: 특정 `touchI [original] | 7. `AddHandler()` 함수를 추가합니다. 매개 변수로 **integer** 타입의 **touchId**를 추가합니다. `ScreenTouchHoldEvent`와 `Move()` 함수를 연결합니다. 나중에 구독 취소를 하기 위해, 연결한 이벤트의 핸들러는 프로퍼티로 가지고 있도록 합니다. ```lua Method: [client] void AddHandler(integer touchId) { if self.handler ~= nil then [chunk_id] | Guides:1048:2
[task] | knowledge_list [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | * 비트 AND 연산자 `&`는 두 피연산자의 같은 위치 비트가 모두 1인 경우에만 결과 비트를 1로 반환하고, 나머지는 0으로 반환하는 논리 연산자입니다. * 비트 OR 연산자 `|`는 두 피연산자의 같은 위치 비트 중 하나라도 1인 경우 결과 비트를 1로 반환하고, 모두 0인 경우에만 0을 반환하는 논리 연산자입니다. * 비트 AND 할당 연산자 `&=`는 왼쪽 피연산자와 오른쪽 피연산자의 비트 AND 연산 결과를 왼쪽 피연산자에 재할당하는 복합 할당 연산자입니다. * 비트 OR 할당 연산자 `|=`는 왼쪽 피연산 [original] | 비트 AND 연산자(Bitwise AND operator) `&`는 두 개의 값을 비교하여 같은 위치의 비트가 모두 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 반면, 비트 OR 연산자(Bitwise OR operator) `|`는 두 개의 값을 비교하여 같은 위치의 비트 중 하나라도 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 예를 들어 봅시다. ```lua local a = 10 -- 이진수 1010 local b = 7 -- 이진수 0111 local result = a & b -- 비트 [chunk_id] | Guides:1071:2
[task] | extract_knowledge [title] | 루아 프로파일링 요약 보고서 [category] | Guides [rephrased] | # 루아 프로파일링 요약 보고서 ## 1. 개념 설명 루아 프로파일러는 스크립트 실행 성능과 자원 사용량을 계측하는 도구입니다. **File - Export Report** 메뉴를 통해 수집된 데이터를 XML 형식으로 내보낼 수 있으며, 이 파일을 **루아 프로파일링 요약 보고서**라고 합니다. 보고서는 크게 두 가지 수준의 정보를 제공합니다. 1. **전체 요약 (Context Summary)**: 프로파일링 세션 전체의 프레임 통계, 네트워크 트래픽, 메모리 사용량, 관리 오브젝트 수 등 글로벌 지표. 2. **샘플 요약 [original] | # 학습 과정 소개 루아 프로파일링 요약 보고서에서 어떤 정보가 제공되는지 살펴봅시다. ##### 참고 가이드 [루아 프로파일러를 활용하여 최적화하기](/docs/?postId=762) # 루아 프로파일링 요약 보고서 루아 프로파일러에서 **File - Export Report**를 클릭하면 루아 프로파일링 요약 리포트를 XML로 Export할 수 있습니다. 다음은 요약 리포트에서 제공되는 정보 목록입니다. | 항목 | 설명 | | --- | --- | | Name | 콘텍스트 이름 | | FrameCount | 계측된 프 [chunk_id] | Guides:1046:0
[task] | distill [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | # 비트 연산자 & 할당 연산자 ### 연산자 * **`&` (AND)**: 같은 위치의 비트가 모두 1이면 1, 아니면 0을 반환합니다. * **`|` (OR)**: 같은 위치의 비트 중 하나라도 1이면 1, 아니면 0을 반환합니다. ```lua local a = 10 -- 1010 local b = 7 -- 0111 print(a & b) -- 2 (0010) print(a | b) -- 15 (1111) ``` ### 할당 연산자 * **`&=`**: AND 연산 결과를 할당합니다. * **`|=`**: [original] | 비트 AND 연산자(Bitwise AND operator) `&`는 두 개의 값을 비교하여 같은 위치의 비트가 모두 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 반면, 비트 OR 연산자(Bitwise OR operator) `|`는 두 개의 값을 비교하여 같은 위치의 비트 중 하나라도 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 예를 들어 봅시다. ```lua local a = 10 -- 이진수 1010 local b = 7 -- 이진수 0111 local result = a & b -- 비트 [chunk_id] | Guides:1071:2
[task] | diverse_qa [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | 질문: `..=` 연산자는 어떤 역할을 수행하나요? 답변: `..=`는 문자열 이어 붙이기 할당 연산자로, 문자열을 이어 붙인 결과를 변수에 할당합니다. 질문: 다음 코드를 실행했을 때 출력되는 값은 무엇인가요? ```lua local str = 'Hello, ' str ..= 'MapleStory ' str ..= 'World!' print(str) ``` 답변: 출력되는 값은 "Hello, MapleStory World!"입니다. 질문: 비트 시프트 연산자에서 `<<`는 이진수 값을 어떻게 이동시키나요? 답변: `<<`는 이 [original] | 문자열 이어 붙이기 할당 연산자(String concatenation assignment operator) `..=`는 문자열을 이어 붙인 결과를 할당합니다. ```lua local str = 'Hello, ' str ..= 'MapleStory ' str ..= 'World!' print(str) -- Output : -- Hello, MapleStory World! ``` #### 왼쪽 비트 시프트 할당 연산자 비트 시프트는 프로그래밍에서 사용되는 비트 연산자 중 하나로, 이진수 값을 왼쪽이나 오른쪽으로 이동시킵니다. 왼쪽 [chunk_id] | Guides:1071:1
[task] | knowledge_list [title] | 자동 번역 [category] | Guides [rephrased] | 제시된 문서의 내용을 바탕으로 메이플스토리 월드의 자동 번역 기능 관련 핵심 사실을 추출하여 정리하였습니다. ```lua -- 핵심 사실 목록 1. 메이플스토리 월드는 크리에이터가 공식적으로 지원하지 않는 언어에 대해 기계 번역을 통한 자동 번역 기능을 제공합니다. 2. 자동 번역을 활성화하기 위해 TextComponent, TextInputComponent, TextRendererComponent, ChatBalloonComponent 컴포넌트의 AllowAutomaticTranslation 프로퍼티를 true로 설정해야 합니다 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 지원하지 않은 언어의 자동 번역 기능을 지원합니다. 이 기능을 통해 크리에이터는 번역 부담을 덜고, 다양한 언어 사용자들은 보다 편하게 월드를 즐길 수 있습니다. 이번 과정에서는 자동 번역 기능 작동 방식과 설정 방법을 알아봅시다. ##### 참고 가이드 [WorldConfig](/docs?postId=1101) [로컬라이징의 이해](/docs/?postId=951) [포맷에 맞게 로컬라이징하기](/docs/?postId=968) ##### 참고 API Reference [chunk_id] | Guides:1072:0
[task] | wikipedia [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | **메이플스토리 월드 mLua의 확장된 연산자** 메이플스토리 월드(MapleStory Worlds)의 스크립트 언어 mLua는 표준 Lua 5.3 문법을 기반으로 하되, 개발 편의성을 높이기 위해 몇 가지 확장된 할당 연산자를 지원합니다. 이러한 연산자들은 변수에 저장된 값을 직접 수정하고 다시 할당하는 과정을 한 줄의 코드로 수행할 수 있게 합니다. **문자열 이어 붙이기 할당 연산자** 문자열 이어 붙이기 할당 연산자(String concatenation assignment operator)인 `..=`는 기존 문자열 변 [original] | 문자열 이어 붙이기 할당 연산자(String concatenation assignment operator) `..=`는 문자열을 이어 붙인 결과를 할당합니다. ```lua local str = 'Hello, ' str ..= 'MapleStory ' str ..= 'World!' print(str) -- Output : -- Hello, MapleStory World! ``` #### 왼쪽 비트 시프트 할당 연산자 비트 시프트는 프로그래밍에서 사용되는 비트 연산자 중 하나로, 이진수 값을 왼쪽이나 오른쪽으로 이동시킵니다. 왼쪽 [chunk_id] | Guides:1071:1
[task] | distill [title] | 자동 번역 [category] | Guides [rephrased] | # 로컬라이징: 자동 번역 메이플스토리 월드는 크리에이터가 직접 번역하지 않은 언어에 대해 기계 번역(자동 번역)을 지원합니다. 원문 언어로만 작성해도, 플레이어가 해당 언어를 설정할 경우 자동 번역된 콘텐츠로 즐길 수 있습니다. ## 핵심 규칙 및 주의사항 * **적용 대상**: `AllowAutomaticTranslation` 프로퍼티가 활성화된 `TextComponent`, `TextInputComponent`, `TextRendererComponent`, `ChatBalloonComponent` 엔티티에만 적용됩니다. [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 지원하지 않은 언어의 자동 번역 기능을 지원합니다. 이 기능을 통해 크리에이터는 번역 부담을 덜고, 다양한 언어 사용자들은 보다 편하게 월드를 즐길 수 있습니다. 이번 과정에서는 자동 번역 기능 작동 방식과 설정 방법을 알아봅시다. ##### 참고 가이드 [WorldConfig](/docs?postId=1101) [로컬라이징의 이해](/docs/?postId=951) [포맷에 맞게 로컬라이징하기](/docs/?postId=968) ##### 참고 API Reference [chunk_id] | Guides:1072:0
[task] | distill [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | # DataStorage 에러 코드 처리 DataStorage 호출은 `TimedOut`(타임아웃)이나 `ResourceExhausted`(호출 한도 초과) 등 다양한 이유로 실패할 수 있습니다. 요청 결과의 **에러 코드**를 반드시 확인하여 데이터 부재 시 발생할 수 있는 문제(예: 기존 데이터 덮어쓰기)를 방지해야 합니다. 구체적인 에러 코드 정의는 [DataStorage 활용하기](/docs/?postId=692) 문서를 참고하세요. ### 유저 추방 (Kick) 월드 플레이에 필수적인 초기 데이터(예: Currency) [original] | # 학습 과정 소개 DataStorage는 간단하게 데이터를 저장하고 불러올 수 있습니다. 그러나 DataStorage를 사용하며 다양한 문제가 발생할 수 있습니다. 이번 가이드에서는 권장하는 DataStorage 사용 방법 중 일부를 소개합니다. 크리에이터가 만드는 월드 특성에 따라 알맞은 해결 방법이 필요합니다. # DataStorage 에러 코드 처리 다양한 이유로 인해 데이터를 DataStorage로부터 불러오지 못하는 상황이 발생할 수 있습니다. 예를 들어 요청에 시간이 너무 오래 걸려 실패하거나(TimedOut), [chunk_id] | Guides:1073:0
[task] | diverse_qa [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | 질문: 메이플스토리 월드의 루아 확장 문법에서 `continue` 키워드의 주요 기능은 무엇인가요? 답변: `continue`는 해당 루프 사이클에 남아 있는 나머지 명령어를 건너뛰고 다음 단계의 루프를 수행하도록 하는 키워드입니다. 질문: 다음 코드를 실행했을 때 `oddNumbers` 테이블에 저장되는 값은 무엇인가요? ```lua local oddNumbers = {} for i = 1, 10 do if i % 2 == 0 then continue end table.insert(oddNum [original] | # 학습 과정 소개 메이플스토리 월드에서는 루아에서 기본적으로 지원하지 않지만 다른 프로그래밍 언어에서 유용하게 사용되는 문법을 확장하여 지원합니다. 본 과정에서는 메이플스토리 월드에서 지원하는 루아 확장 문법 및 사용 예시를 소개합니다. # Continue **continue**는 해당 루프 사이클에 남아 있는 나머지 명령어를 건너뛰고 다음 단계의 루프를 수행하도록 하는 키워드입니다. ```lua local oddNumbers = {} for i = 1, 10 do if i % 2 == 0 then co [chunk_id] | Guides:1071:0
[task] | extract_knowledge [title] | 중복 컴포넌트 수정하기 [category] | Guides [rephrased] | # 중복 컴포넌트 (Duplicate Components) ## 1. 개념 설명 **중복 컴포넌트**란 하나의 엔티티(Entity)나 모델(Model)에 동일하거나 동류(동일한 기반 클래스에서 확장된)의 컴포넌트가 2개 이상 존재하는 상태를 말합니다. 이러한 중복은 주로 다음과 같은 상황에서 발생합니다. 1. 제작 과정에서 동일한 종류의 컴포넌트를 실수로 여러 번 추가하는 경우. 2. 부모-자식 관계의 모델 또는 엔티티에서 상속받은 컴포넌트를 인지하지 못한 채, 자식 측에 다시 컴포넌트를 추가하는 경우. 중복 컴포넌트가 존 [original] | # 학습 과정 소개 MSW는 크리에이터의 월드 제작을 지원하기 위해 다양한 기능을 지속적으로 업데이트하고, 수정하고 있습니다. MSW는 앞으로 중복 컴포넌트가 발생하지 않도록 작업 중입니다. 기능 지원이 완전히 종료되기 전에 미리 가이드를 참고해 월드가 문제 없이 동작할 수 있도록 중복 컴포넌트가 있는지 확인하고 수정하시길 권장합니다. # 중복 컴포넌트 엔티티나 모델에 동일한 혹은 동류의 컴포넌트가 2개 이상 추가되었다면 그 컴포넌트들을 중복 컴포넌트라 칭합니다. 중복 컴포넌트는 제작 과정에서 예상치 못하게 하나의 엔티티에 동 [chunk_id] | Guides:1049:0
[task] | knowledge_list [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | 제시된 문서의 내용만 기반으로 핵심 사실을 추출하여 정리했습니다. 1. DataStorage를 사용할 경우 요청 시간 초과(TimedOut)나 호출 횟수 한도 초과(ResourceExhausted) 등 다양한 이유로 데이터 로딩이 실패할 수 있으므로, 요청 함수의 결과 에러 코드를 확인하여 예외 상황을 대비한 기능을 구현해야 합니다. 2. 필수 데이터 로딩 실패 시 유저를 추방하기 위해 `_UserService:KickUser(UserId, KickReason.WorldError)` 메서드를 호출할 수 있으며, 이 메서드는 서버 [original] | # 학습 과정 소개 DataStorage는 간단하게 데이터를 저장하고 불러올 수 있습니다. 그러나 DataStorage를 사용하며 다양한 문제가 발생할 수 있습니다. 이번 가이드에서는 권장하는 DataStorage 사용 방법 중 일부를 소개합니다. 크리에이터가 만드는 월드 특성에 따라 알맞은 해결 방법이 필요합니다. # DataStorage 에러 코드 처리 다양한 이유로 인해 데이터를 DataStorage로부터 불러오지 못하는 상황이 발생할 수 있습니다. 예를 들어 요청에 시간이 너무 오래 걸려 실패하거나(TimedOut), [chunk_id] | Guides:1073:0
[task] | diverse_qa [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | 질문: 비트 AND 연산자 `&`는 어떤 조건에서 결과로 1을 반환하나요? 답변: 두 값의 같은 위치 비트가 모두 1인 경우에만 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 질문: 비트 OR 연산자 `|`는 어떤 조건에서 결과로 1을 반환하나요? 답변: 두 값의 같은 위치 비트 중 하나라도 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 질문: 다음 코드의 출력 값은 무엇인가요? ```lua local a = 10 -- 이진수 1010 local b = 7 -- 이진수 0111 local result = [original] | 비트 AND 연산자(Bitwise AND operator) `&`는 두 개의 값을 비교하여 같은 위치의 비트가 모두 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 반면, 비트 OR 연산자(Bitwise OR operator) `|`는 두 개의 값을 비교하여 같은 위치의 비트 중 하나라도 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 예를 들어 봅시다. ```lua local a = 10 -- 이진수 1010 local b = 7 -- 이진수 0111 local result = a & b -- 비트 [chunk_id] | Guides:1071:2
[task] | extract_knowledge [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | # mLua 확장 연산자 mLua는 표준 Lua 5.3 문법 위에 특정 할당 연산자를 확장하여 제공합니다. 본 절에서는 문자열 및 비트 연산에 사용되는 확장 할당 연산자의 동작 원리와 사용법을 다룹니다. ## 1. 문자열 이어 붙이기 할당 연산자 (`..=`) `..=` 연산자는 왼쪽 운영자의 문자열과 오른쪽 운영자의 문자열을 이어 붙인 결과를 다시 왼쪽 변수에 할당하는 역할을 수행합니다. ### API 사용법 * **형식**: `변수명 ..= "문자열"` * **동작**: 기존 문자열 값 뒤에 새 문자열을 연결하고, [original] | 문자열 이어 붙이기 할당 연산자(String concatenation assignment operator) `..=`는 문자열을 이어 붙인 결과를 할당합니다. ```lua local str = 'Hello, ' str ..= 'MapleStory ' str ..= 'World!' print(str) -- Output : -- Hello, MapleStory World! ``` #### 왼쪽 비트 시프트 할당 연산자 비트 시프트는 프로그래밍에서 사용되는 비트 연산자 중 하나로, 이진수 값을 왼쪽이나 오른쪽으로 이동시킵니다. 왼쪽 [chunk_id] | Guides:1071:1
[task] | diverse_qa [title] | 자동 번역 [category] | Guides [rephrased] | 질문: 메이플스토리 월드에서 자동 번역 기능의 주요 목적은 무엇인가요? 답변: 크리에이터가 지원하지 않은 언어의 번역을 기계 번역을 통해 제공하여, 크리에이터의 번역 부담을 덜고 다양한 언어 사용자가 보다 편하게 월드를 즐길 수 있게 하는 것입니다. 질문: 자동 번역이 적용되기 위해 크리에이터가 활성화해야 하는 프로퍼티의 이름은 무엇인가요? 답변: AllowAutomaticTranslation 질문: AllowAutomaticTranslation 프로퍼티가 포함된 컴포넌트는 4가지입니다. 이 컴포넌트들의 이름을 모두 나열하세요. [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 지원하지 않은 언어의 자동 번역 기능을 지원합니다. 이 기능을 통해 크리에이터는 번역 부담을 덜고, 다양한 언어 사용자들은 보다 편하게 월드를 즐길 수 있습니다. 이번 과정에서는 자동 번역 기능 작동 방식과 설정 방법을 알아봅시다. ##### 참고 가이드 [WorldConfig](/docs?postId=1101) [로컬라이징의 이해](/docs/?postId=951) [포맷에 맞게 로컬라이징하기](/docs/?postId=968) ##### 참고 API Reference [chunk_id] | Guides:1072:0
[task] | wikipedia [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | # 메이플스토리 월드 mLua 확장 문법 메이플스토리 월드 스크립트 언어 mLua는 표준 루아에서 기본적으로 제공하지 않으나, 다른 프로그래밍 언어에서 흔히 사용되는 문법을 확장하여 지원합니다. 본 항목에서는 이러한 확장 문법과 그 사용 예시를 다룹니다. ## continue 키워드 `continue`는 현재 루프 반복 사이클의 나머지 명령문을 건너뛰고 바로 다음 반복으로 진행하게 하는 제어문 키워드입니다. 이를 통해 특정 조건이 충족될 때 루프 내 후속 작업을 생략할 수 있습니다. ```lua local oddNumbers [original] | # 학습 과정 소개 메이플스토리 월드에서는 루아에서 기본적으로 지원하지 않지만 다른 프로그래밍 언어에서 유용하게 사용되는 문법을 확장하여 지원합니다. 본 과정에서는 메이플스토리 월드에서 지원하는 루아 확장 문법 및 사용 예시를 소개합니다. # Continue **continue**는 해당 루프 사이클에 남아 있는 나머지 명령어를 건너뛰고 다음 단계의 루프를 수행하도록 하는 키워드입니다. ```lua local oddNumbers = {} for i = 1, 10 do if i % 2 == 0 then co [chunk_id] | Guides:1071:0
[task] | wikipedia [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | # DataStorage 활용 가이드 **DataStorage**는 mLua 환경에서 데이터를 저장하고 불러오는 기능을 제공합니다. 이 가이드는 DataStorage 사용 시 발생할 수 있는 일반적인 문제를 방지하고, 월드의 특성에 맞는 최적의 사용법을 제안하기 위해 작성되었습니다. ## 에러 코드 처리 및 데이터 무결성 보장 데이터 로딩은 네트워크 지연으로 인한 타임아웃(`TimedOut`)이나 호출 한도 초과(`ResourceExhausted`) 등 다양한 이유로 실패할 수 있습니다. 따라서 요청 함수가 반환하는 에러 코드 [original] | # 학습 과정 소개 DataStorage는 간단하게 데이터를 저장하고 불러올 수 있습니다. 그러나 DataStorage를 사용하며 다양한 문제가 발생할 수 있습니다. 이번 가이드에서는 권장하는 DataStorage 사용 방법 중 일부를 소개합니다. 크리에이터가 만드는 월드 특성에 따라 알맞은 해결 방법이 필요합니다. # DataStorage 에러 코드 처리 다양한 이유로 인해 데이터를 DataStorage로부터 불러오지 못하는 상황이 발생할 수 있습니다. 예를 들어 요청에 시간이 너무 오래 걸려 실패하거나(TimedOut), [chunk_id] | Guides:1073:0
[task] | wikipedia [title] | 메이플스토리 월드 루아 문법 확장 [category] | Guides [rephrased] | **메이플스토리 월드 루아 문법 확장: 비트 연산자** 메이플스토리 월드 스크립트 언어인 mLua(Lua 5.3 기반)에서는 비트 단위 연산을 수행하기 위한 연산자를 제공합니다. 이러한 연산자는 두 정수 값의 개별 비트를 비교하여 논리적 결과를 도출하거나, 특정 플래그(flag) 값을 조작하는 데 주로 활용됩니다. **비트 AND 연산자 (`&`)** 비트 AND 연산자는 두 개의 값에 대해 동일한 위치의 비트를 비교합니다. 비교 대상인 두 값의 특정 위치 비트가 모두 1인 경우에만 결과 값의 해당 비트에 1을 설정하고, 그 외 [original] | 비트 AND 연산자(Bitwise AND operator) `&`는 두 개의 값을 비교하여 같은 위치의 비트가 모두 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 반면, 비트 OR 연산자(Bitwise OR operator) `|`는 두 개의 값을 비교하여 같은 위치의 비트 중 하나라도 1이면 결과로 1을 반환하고, 그렇지 않으면 0을 반환합니다. 예를 들어 봅시다. ```lua local a = 10 -- 이진수 1010 local b = 7 -- 이진수 0111 local result = a & b -- 비트 [chunk_id] | Guides:1071:2
[task] | diverse_qa [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | 질문: DataStorage를 사용할 때 발생할 수 있는 대표적인 문제는 무엇이며, 이 가이드의 목적은 무엇인가요? 답변: DataStorage를 사용하며 다양한 문제가 발생할 수 있으며, 이번 가이드는 크리에이터가 만드는 월드 특성에 따라 알맞은 해결 방법이 필요하다는 전제 하에 권장하는 DataStorage 사용 방법 중 일부를 소개하는 것을 목적으로 합니다. 질문: DataStorage로부터 데이터를 불러오지 못하는 원인으로 'TimedOut'과 'ResourceExhausted'가 각각 어떤 상황을 의미하나요? 답변: 'T [original] | # 학습 과정 소개 DataStorage는 간단하게 데이터를 저장하고 불러올 수 있습니다. 그러나 DataStorage를 사용하며 다양한 문제가 발생할 수 있습니다. 이번 가이드에서는 권장하는 DataStorage 사용 방법 중 일부를 소개합니다. 크리에이터가 만드는 월드 특성에 따라 알맞은 해결 방법이 필요합니다. # DataStorage 에러 코드 처리 다양한 이유로 인해 데이터를 DataStorage로부터 불러오지 못하는 상황이 발생할 수 있습니다. 예를 들어 요청에 시간이 너무 오래 걸려 실패하거나(TimedOut), [chunk_id] | Guides:1073:0
[task] | wikipedia [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | # DataStorage의 재시도 및 예외 처리 메이플스토리 월드 스크립트에서 `DataStorage`를 사용하여 데이터를 불러오는 과정에서, 요청은 정상적으로 이루어졌으나 원인이 불명확한 일시적인 장애로 인해 실패할 수 있습니다. 이러한 상황을 대비하여 데이터 불러오기 요청을 여러 번 반복적으로 시도하는 로직을 구현할 수 있습니다. 아래 예시 코드는 데이터 불러오기에 실패할 경우 1초 대기 후 재시도하는 방식을 적용합니다. 설정된 재시도 횟수(2회)를 모두 소진하고도 성공하지 못하면 해당 유저를 월드에서 추방합니다. 또한, 과 [original] | 크리에이터는 정상적으로 요청했지만 원인이 불명확한 일시 장애가 발생해 데이터 불러오기를 실패할 수 있습니다. 이런 상황을 대비해 데이터 불러오기 요청을 여러 번 시도할 수 있습니다. 아래 예시 코드는 데이터 불러오기에 실패하면 2초 뒤에 재시도합니다. 그 이후 일정 횟수 이상 실패하면 유저를 월드에서 추방합니다. 더불어 과도한 요청으로 인한 에러 코드 ResourceExhausted: 1000005가 발생하면, 재시도하지 않고 유저를 추방합니다. ```lua Property: [Sync] integer meso = 0 [Syn [chunk_id] | Guides:1073:1
[task] | distill [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | **[Guides] DataStorage 재시도 및 오류 처리** 정상 요청에도 원인이 불명확한 일시 장애로 데이터 로드 실패가 발생할 수 있습니다. 이를 방지하기 위해 재시도 로직을 구현해야 하며, 특정 에러 코드 발생 시에는 재시도하지 않고 즉시 처리를 중단해야 합니다. ### 핵심 동작 규칙 1. **재시도 로직**: `GetAndWait` 실패 시 지정된 시간(`wait`) 후 재시도합니다. 2. **ResourceExhausted (1000005)**: 호출 횟수 한도 초과 에러입니다. **재시도하지 않으며** 즉시 [original] | 크리에이터는 정상적으로 요청했지만 원인이 불명확한 일시 장애가 발생해 데이터 불러오기를 실패할 수 있습니다. 이런 상황을 대비해 데이터 불러오기 요청을 여러 번 시도할 수 있습니다. 아래 예시 코드는 데이터 불러오기에 실패하면 2초 뒤에 재시도합니다. 그 이후 일정 횟수 이상 실패하면 유저를 월드에서 추방합니다. 더불어 과도한 요청으로 인한 에러 코드 ResourceExhausted: 1000005가 발생하면, 재시도하지 않고 유저를 추방합니다. ```lua Property: [Sync] integer meso = 0 [Syn [chunk_id] | Guides:1073:1
[task] | knowledge_list [title] | 효과적으로 DataStorage 사용하기 [category] | Guides [rephrased] | 1. `DataStorageService`를 통한 데이터 불러오기 요청은 원인이 불명확한 일시 장애로 인해 실패할 수 있으므로, 실패 시 재시도 로직을 구현하여 안정성을 높일 수 있다. 2. `DataStorageService:GetUserDataStorage(UserId)` 메서드는 서버 실행 공간(`[server only]`)에서 호출되며, 매개변수 `UserId`를 받아 해당 유저의 데이터 저장소 객체를 반환하지만, 실패 시 `nil`을 반환할 수 있다. 3. `userDataStorage:GetAndWait(key)` 메서드 [original] | 크리에이터는 정상적으로 요청했지만 원인이 불명확한 일시 장애가 발생해 데이터 불러오기를 실패할 수 있습니다. 이런 상황을 대비해 데이터 불러오기 요청을 여러 번 시도할 수 있습니다. 아래 예시 코드는 데이터 불러오기에 실패하면 2초 뒤에 재시도합니다. 그 이후 일정 횟수 이상 실패하면 유저를 월드에서 추방합니다. 더불어 과도한 요청으로 인한 에러 코드 ResourceExhausted: 1000005가 발생하면, 재시도하지 않고 유저를 추방합니다. ```lua Property: [Sync] integer meso = 0 [Syn [chunk_id] | Guides:1073:1
[task] | wikipedia [title] | 자동 번역 [category] | Guides [rephrased] | # 메이플스토리 월드 로컬라이징: 자동 번역 메이플스토리 월드(MapleStory Worlds)는 크리에이터가 직접 지원하지 않는 언어에 대해 기계 번역 기반의 자동 번역 기능을 제공합니다. 이 기능을 활용하면 크리에이터는 다국어 번역에 소요되는 시간과 노력을 절감할 수 있으며, 다양한 언어를 사용하는 플레이어는 보다 편리하게 월드를 즐길 수 있습니다. 본 가이드에서는 자동 번역의 개념, 설정 방법, 그리고 작동 방식을 설명합니다. ## 관련 문서 및 API 자동 번역 기능을 이해하고 적용하기 위해 다음 문서와 API 레퍼런스 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 지원하지 않은 언어의 자동 번역 기능을 지원합니다. 이 기능을 통해 크리에이터는 번역 부담을 덜고, 다양한 언어 사용자들은 보다 편하게 월드를 즐길 수 있습니다. 이번 과정에서는 자동 번역 기능 작동 방식과 설정 방법을 알아봅시다. ##### 참고 가이드 [WorldConfig](/docs?postId=1101) [로컬라이징의 이해](/docs/?postId=951) [포맷에 맞게 로컬라이징하기](/docs/?postId=968) ##### 참고 API Reference [chunk_id] | Guides:1072:0
[task] | extract_knowledge [title] | 자동 번역 [category] | Guides [rephrased] | # 로컬라이징 자동 번역 ## 1. 개념 설명 자동 번역(Automatic Translation)은 크리에이터가 정식으로 번역을 지원하지 않는 언어에 대해 기계 번역을 통해 텍스트를 제공하는 기능입니다. * **원문 언어(Source Language):** 크리에이터가 월드에 입력한 텍스트의 기준이 되는 언어입니다. * **지원 언어:** 크리에이터가 직접 번역하여 제공하는 언어입니다. * **자동 번역 대상 언어:** 지원 언어에 포함되지 않으며, 플레이어가 선택 시 기계 번역으로 변환되는 언어입니다. 이 기능은 [original] | # 학습 과정 소개 메이플스토리 월드에서는 크리에이터가 지원하지 않은 언어의 자동 번역 기능을 지원합니다. 이 기능을 통해 크리에이터는 번역 부담을 덜고, 다양한 언어 사용자들은 보다 편하게 월드를 즐길 수 있습니다. 이번 과정에서는 자동 번역 기능 작동 방식과 설정 방법을 알아봅시다. ##### 참고 가이드 [WorldConfig](/docs?postId=1101) [로컬라이징의 이해](/docs/?postId=951) [포맷에 맞게 로컬라이징하기](/docs/?postId=968) ##### 참고 API Reference [chunk_id] | Guides:1072:0