msw-ai-tf/maplestory-worlds-creator-docs huggingface dataset:
프로퍼티 에디터

# 학습 과정 소개

프로퍼티 에디터 창을 이용해 컴포넌트의 프로퍼티를 확인하고, 수정할 수 있습니다.

#### 참고 가이드

  * [Entity, Component, Property](/docs/?postId=54%7B%22target%22:%22_blank%22%7D)
  * [Workspace](/docs/?postId=121%7B%22target%22:%22_blank%22%7D)
  * [Hierarchy](/docs/?postId=453%7B%22target%22:%22_blank%22%7D)
  * [모델의 활용](/docs?/postId=461)
  * [컴포넌트 추가와 삭제](/docs/?postId=58%7B%22target%22:%22_blank%22%7D)



# 프로퍼티 에디터 소개

Property 패널은 엔티티, 모델에 포함된 컴포넌트의 프로퍼티를 확인, 변경할 수 있는 에디터입니다. MSW에서 제공하는 컴포넌트 중 Attribute가 HideFromInspector인 프로퍼티는 에디터에 나타나지 않고, 스크립트에서만 접근이 가능합니다. 크리에이터가 생성한 프로퍼티를 에디터에서 숨기고 싶다면 Attribute Setting의 '표시 안 함' 옵션을 선택합니다. 프로퍼티 에디터 창에서 모델, 엔티티에 컴포넌트를 추가, 삭제, 비활성화할 수 있습니다.

[png](1722919835240d375b04a5ca8460aa0b70afe977333b8)

[{"번호":"\u0001","이름":"컴포넌트 추가","설명":"검색창 옆의 + 버튼을 눌러 컴포넌트를 추가할 수 있습니다. [컴포넌트 추가와 삭제](docs\/?postId=58)를 참고하세요. 또한 프로퍼티 에디터 하단의 Add Component 버튼을 눌러 추가할 수 있습니다."},{"번호":"\u0001","이름":"검색창","설명":"검색 창은 탭 타이틀 바로 아래에 위치합니다. 검색 기준에 따라 다른 결괏값이 나오기에 필요에 따라 선택해 검색합니다. 검색 기준은 Component와 Property 두 가지이며, 다음과 같이 사용합니다. Component: 검색어에 해당하는 컴포넌트를 찾을 때 사용합니다.Property: 검색어에 해당하는 프로퍼티가 포함된 컴포넌트를 찾을 때 사용합니다."},{"번호":"\u0001","이름":"모델 프로퍼티","설명":"각 엔티티, 모델에 포함된 컴포넌트의 일부 프로퍼티를 즐겨찾기처럼 모아놓은 것입니다. 크리에이터가 생성한 엔티티, 모델의 경우 이름 영역을 눌러 이름을 변경할 수 있습니다."},{"번호":"\u0001","이름":"Model Extension Info","설명":"참조하고 있는 모델 정보 혹은 모델을 확장한 모델의 계층 정보를 확인할 수 있습니다."},{"번호":"\u0001","이름":"컴포넌트의 프로퍼티","설명":"컴포넌트의 프로퍼티 정보를 보여줍니다. 컴포넌트가 추가된 순서대로 정렬됩니다."},{"번호":"!","이름":"햄버거 메뉴","설명":"엔티티에 포함된 컴포넌트 목록 전체를 접거나 펼칩니다."}]

# 프로퍼티 에디터 기능

#### 체크박스 활성, 비활성

컴포넌트 이름 왼쪽에 위치한 체크박스를 눌러 컴포넌트 자체를 활성/비활성화할 수 있습니다. [png](1692601186919c8ee674ef7054b5b88e3325a085e3853)

#### Edit 버튼

충돌 영역을 설정할 때는 Edit 버튼을 누르면 Scene에서 충돌 영역을 수정할 수 있습니다. [엔티티의 충돌](/docs/?postId=175) 가이드를 참고하세요.

#### 증감 커서

Vector, Number, integer 타입의 값을 변경할 때 마우스를 사용해 값을 변경할 수 있습니다. 커서가 값 근처로 다가가면  모양으로 변하고, 값을 변경할 수 있습니다. [gif](16956247765542533d53ec25841009cb68f6d39ab1b8f)

#### 수식 입력

프로퍼티 에디터에서 Vector, number 타입의 값을 입력하는 항목은 수식을 사용할 수 있습니다.

  * `+`,`-`,`/`,`*` 연산이 가능합니다.
  * 연산 실패 시 이전 값이 적용됩니다.
  * 정수형만 가능한 타입의 경우 결괏값의 소수점은 버려집니다.



[gif](1692583022446085bd548f1af4126b5e9e64653081457)

#### 복수의 엔티티 선택

여러 개의 엔티티를 동시에 선택하면, 공통으로 가지고 있는 컴포넌트의 프로퍼티들만 걸러 보여집니다. 특정 값을 변경할 때, 그 값이 선택한 모든 엔티티에게 적용됩니다. 이때 선택한 엔티티들의 리스트 개수가 같으면 공통 편집이 가능합니다. 예를 들어 CustomFootholdComponent의 edgeLists와 같은 list 타입의 값은 Size의 개수가 같다면 동일한 값으로 값을 변경할 수 있습니다.

[gif](169260611101535f49fc4f0084a35a65869a08f4548ab)
DataStorage 사용량 제한 활용하기

# 학습 과정 소개

DataStorage를 사용할 때는 제한 용량과 Credit 제한을 확인하고 용량에 맞게 사용해야 합니다. DataStorage 사용량 제한에 관해 알아보겠습니다.

# DataStorage 제한 용량

DataStorage의 용량 제한은 다음과 같습니다. 문자열 값 크기는 UTF-8 인코딩을 통해 Byte 배열로 변환했을 때의 Byte 수로 계산됩니다.

[{"구분":"DataStorage name","제한 용량":"1 ~ 64 byte"},{"구분":"DataStorage key","제한 용량":"1 ~ 100 byte"},{"구분":"DataStorage tag","제한 용량":"0 ~ 64 byte"},{"구분":"DataStorage version","제한 용량":"0 ~ 64 byte"},{"구분":"update","제한 용량":"0 ~ 50,000 byte"},{"구분":"set","제한 용량":"0 ~ 300,000 byte"}]

# Credit

Credit이란 데이터베이스 요청 수 제한을 위해 계산되는 단위를 의미합니다. Credit의 최솟값은 1입니다. Credit은 실제 데이터베이스에 요청하는 경우에만 소모되는 특징이 있습니다. FunctionGroup별로 매분 지급되는 Credit 수, 누적되는 Credit 수, 데이터베이스 요청 시 소모되는 Credit 수가 다릅니다. 함수별로 속하는 FunctionGroup은 [DataStorage 사용량 제한 알아보기](/docs?postId=1044)에서 확인할 수 있습니다.

[{"FunctionGroup":"List DataStorage","분당 지급되는 Credit":"10 + (접속자 수 * 2)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"1"},{"FunctionGroup":"Delete DataStorage","분당 지급되는 Credit":"10 + (접속자 수 * 2)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"1"},{"FunctionGroup":"List Sorted","분당 지급되는 Credit":"50 + (접속자 수 * 2)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"1"},{"FunctionGroup":"List","분당 지급되는 Credit":"10 + (접속자 수 * 2)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"1"},{"FunctionGroup":"Delete","분당 지급되는 Credit":"50 + (접속자 수 * 2)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"1"},{"FunctionGroup":"Get","분당 지급되는 Credit":"100 + (접속자 수 * 10)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"4,000byte당 1"},{"FunctionGroup":"Set","분당 지급되는 Credit":"100 + (접속자 수 * 10)","최대 누적 가능한 Credit":"분당 지급되는 Credit * 2","요청 시 소모되는 Credit":"4,000byte당 1"}]

#### Byte 크기에 따른 Credit 소모

0에서 4000 Byte는 1 Credit을 사용합니다. 또한 존재하지 않는 값을 조회했을 때도 Credit이 소모됩니다. 문자열 값 크기는 UTF-8 인코딩을 통해 Byte 배열로 변환했을 때의 Byte 수로 계산됩니다.

> Tip. Key, Tag, Version 크기는 Credit에 영향을 끼치지 않습니다.

#### batch 계열 함수의 Credit 소모

BatchGetAsync 같은 Batch 계열 함수는 여러 키를 한 번에 접근할 수 있습니다. 이 함수들은 요청하는 키 수에 따라 Credit 소모 개수가 정해집니다. 두 값을 요청한 경우라도, 요청한 Byte 수에 따라 소모되는 Credit 수가 달라집니다. 예를 들어 요청한 두 값의 크기가 각 2,000 Byte라면 총 2 Credit을 소모합니다. 반면에, 두 값의 크기가 각 4,000 Byte, 4,500 Byte라면 4,000Byte인 값은 1 Credit을 소모하고 4,500 Byte인 값은 2 Credit을 소모합니다. Batch 계열 함수를 사용할 때는 Credit이 소모되는 시점을 염두에 두어야 합니다. Credit은 데이터베이스에 실제로 요청하는 시점에 소모됩니다. 만약 `BatchGetAndWait()` 함수로 50개의 Key를 넘겼다면 호출 한 번에 50개 값에 대한 Credit이 소모되지 않습니다. 호출 즉시에는 25개 값만큼의 Credit이 소모되고, 이후 반환되는 Page를 통해 `MoveToNextPageAndWait()`를 통해 다음 Page로 이동할 때 나머지 25개 값만큼의 Credit이 소모됩니다.

> Tip. `BatchSetAndWait()` 함수는 넘긴 키 개수만큼을 곧바로 요청합니다.

#### Transact 계열 함수의 Credit 소모

Transact 계열 함수는 batch 계열 함수와 비슷하게 동작합니다. 다만 트랜잭션 보장을 위해 더 많은 처리가 필요하므로 batch 계열 함수보다 2배의 Credit을 소모합니다.

#### Credit을 소모하지 않는 함수

어떤 함수를 사용했지만, 이미 다른 함수가 Page를 불러왔을 때는 Credit을 소모하지 않습니다. 대표적으로 `MoveToNextPageAndWait()`, `LoadNextPageAndWait()` 함수는 상황에 따라 Credit을 소모하지 않습니다. 예를 들어, GlobalDataStoragePages의 `LoadNextPageAndWait()` 함수를 사용해 다음 Page를 미리 불러오고 `MoveToNextPageAndWait()`함수를 호출하면 이미 Page를 불러왔기 때문에 데이터베이스에 요청하지 않습니다. 그러므로 Credit은 `LoadNextPageAndWait()`함수를 호출할 때만 소모하게 됩니다.
10강 IP 보호에 대한 책임 및 관리 방법

[png](17290972791310d59688104284b329c6da70838c67f87)

  
# IP의 정의 

IP(Intellectual Property)란 특정 대상의 고유한 표현물이나 창작물로 게임에 있어서는 게임의 세계관, 스토리, 캐릭터, 몬스터, 이미지, 배경음악, 영상 등 게임을 구성하는 일체의 저작물을 말합니다.

크리에이터님께서는 콘텐츠를 제작하실 때, 타인의 권리를 침해하지 않도록 주의해야 하며, 활용하려는 콘텐츠의 IP를 존중하고 보호할 수 있어야 합니다. 이와 관련하여 메이플스토리 월드 내에서 지켜야 하는 IP 활용 시 유의 사항과 자신의 IP 침해가 확인되는 경우 대응하는 방법을 안내해 드립니다.

  
# 메이플스토리 월드 내에서 IP 사용 

메이플스토리 월드에서는 “Toben”이 직접 제공하는 IP 또는 별도로 사용을 허락한 게임 IP를 활용하여 개별 월드, 아이템, 이미지, 사운드, 기타 데이터 등 CGC를 제작할 수 있습니다. * CGC: 크리에이터 제작 콘텐츠(Creators Generated Contents 이하 "CGC")

  1. 메이플스토리(해외 서비스 중인 메이플스토리의 고유 콘텐츠 포함)
  2. 바람의나라
  3. 큐플레이
  4. 듀랑고



> ※ 주의사항 단, 아래 사항에 해당하는 경우 “Toben”이 직접 제공하는 IP 또는 별도로 사용을 허락한 게임 IP를 활용하여 CGC의 제작 및 게시 등 행위를 할 수 없습니다. 1\. IP가 ‘Toben이 크리에이터에게 플랫폼 내에서 별도로 사용을 허락하는 게임 IP’ 내에서 제3자와의 프로모션/콜라보 등을 통해 사용되고 있거나 사용된 경우 2\. ㈜넥슨코리아가 퍼블리싱 하고 있는 게임과 동일하거나 상당히 높은 정도로 유사하여, ㈜넥슨코리아의 공식 콘텐츠로 오인될 수 있는 경우 3\. 플랫폼 내 "오리지널 월드"와 동일하거나 상당히 높은 정도로 유사한 경우 (다만 콘텐츠 제작의 IP 사용 가이드 제5조 제2항의 기준에 부합하는 경우는 허용됨)

이외 제3자가 권리를 보유하고 있는 IP를 사용할 경우 반드시 해당 제3자로부터 사용 허락을 받아야 합니다. 제3자가 권리를 보유한 IP를 사용하여 제작한 CGC로 인하여 발생한 법적인 책임은 1차적으로 크리에이터님께 있으니 반드시 유의해주세요.

메이플스토리 월드 내 IP 사용과 관련한 더욱 자세한 내용은 [[콘텐츠 제작의 IP 사용 가이드]](https://maplestoryworlds.nexon.com/ko/legal/tos/992)를 참고해주세요.

  
# IP 침해 건 대응 방법 

만약 크리에이터님의 저작물 및 IP가 침해된 것으로 확인되는 경우, 를 토대로 적절한 조치를 요청하실 수 있습니다.

  
**<권리침해 신고 안내>** 크리에이터와 플레이어(이하 “이용자”)의 허락을 받지 않은 저작물 등이 메이플스토리 월드 플랫폼에 “크리에이터 제작 콘텐츠”로 무단으로 등록되어 저작권 또는 기타 지적재산권이 침해된 경우, 소정의 양식을 제출하여 Toben의 지정 대리인()에게 적절한 조치를 요청할 수 있습니다. \\* 이용자 계정의 국가 및 지역이 ‘한국’인 경우 해당   
**<제출 필요 서류>** 

  1. 저작물 내지 IP의 명칭 또는 침해되었다고 주장되는 저작물의 대표적인 목록
  2. 침해저작물의 명칭 내지 해당 자료를 찾을 수 있을 정도의 충분한 정보
  3. 신고자의 이름, 주소, 연락 가능한 전화 번호 및 이메일 주소
  4. (저작물 내지 IP의 소유자가 아닌 경우) 신고자가 소유자를 대신하여 관련된 권한을 부여 받았음을 입증할 수 있는 위임장 등 서면



요청이 접수된 이후 처리 절차는 다음과 같습니다. [png](17290816591587eab32fbe46a47cd9424b9573e538179)

접수 및 처리에 대한 자세한 내용은 [[넥슨 권리 침해 신고센터]](https://help.nexon.com/Violation/Violationguide)를 통해 확인하실 수 있으며, 메이플스토리 월드는 IP 침해 발생 건이 조속히 처리될 수 있도록 최선을 다하겠습니다.

  
  
발행일 : 2025.03.21 / 발행버전: v2.0
상품 관리하기

# 학습 과정 소개

월드 숍 뷰어의 활용 방법과 상품 상태별 기능 제한에 대해 알아봅시다.

# World Shop Viewer

메이커에서 상품을 등록하고, 관리할 수 있는 창입니다. 등록한 상품 종류에 따라 각 폴더에 자동으로 분류됩니다. 주요 콘텍스트 메뉴는 아래와 같습니다.

[png](166858313170660da397e5b2e48979353a37c1b33889d)

[{"이름":"Copy Item ID","설명":"등록한 상품의 ID를 복사합니다."},{"이름":"Copy Item Thumbnail RUID","설명":"등록한 상품의 섬네일 RUID를 복사합니다."},{"이름":"Create New Item","설명":"새로운 아이템, 이용권을 생성합니다. 메뉴를 누르면 상품 등록 페이지가 열립니다."},{"이름":"Edit Item","설명":"등록한 상품을 수정합니다."},{"이름":"Open Item List(Web)","설명":"생성한 상품들의 상태를 확인할 수 있는 외부 브라우저 창을 엽니다."},{"이름":"Refresh Viewer","설명":"상품 목록을 새로고침합니다."}]

등록한 상품에 커서를 올려 상품 정보를 확인할 수 있습니다. [png](1668586084462d10abb24e7614e7dba6a3b078397c147)

# 상품 상태별 기능 제한

상품의 상태에 따라 기능이 제한됩니다. 아래의 표를 참고하세요. 전체 상품를 검색할 때 판매 대기 상태인 상품을 노출하지 않으려면, 해당 상품을 미출시 상태로 변경하여 조회되지 않도록 할 수 있습니다.

[{"상태":"미출시","월드에서 정보 조회":"불가","월드에서 상품 노출":"불가","실제 구매 가능":"불가","테스트 구매 가능":"가능","상품 정보 수정":"가능","공식 홈페이지 상품 노출":"불가"},{"상태":"판매 대기","월드에서 정보 조회":"가능","월드에서 상품 노출":"노출","실제 구매 가능":"불가","테스트 구매 가능":"가능","상품 정보 수정":"가능","공식 홈페이지 상품 노출":"노출 안 됨"},{"상태":"판매 중","월드에서 정보 조회":"가능","월드에서 상품 노출":"노출","실제 구매 가능":"가능","테스트 구매 가능":"가능","상품 정보 수정":"가능","공식 홈페이지 상품 노출":"이용권만 노출"},{"상태":"판매 종료","월드에서 정보 조회":"가능","월드에서 상품 노출":"노출","실제 구매 가능":"불가","테스트 구매 가능":"가능","상품 정보 수정":"가능","공식 홈페이지 상품 노출":"노출 안 됨"},{"상태":"제재 중","월드에서 정보 조회":"가능","월드에서 상품 노출":"노출","실제 구매 가능":"불가","테스트 구매 가능":"가능","상품 정보 수정":"가능","공식 홈페이지 상품 노출":"노출 안 됨"}]

#### 상품 제재 안내

크리에이터가 제작한 상품은 메이플스토리 월드의 에 따라 제재받을 수 있습니다. 제재받은 상품 이름은 월드 유저에게는 운영정책 위반 명칭으로 변경되어 보이게 됩니다. 더불어 상품 이미지는 기본으로 변경됩니다. 상품의 제재 내용은 World Shop Viewer의 툴팁에서 확인할 수 있습니다.

제재 상품 관련 문의가 있다면 를 이용해 주세요.

# 메이커와 월드에서의 차이

상품을 구매 환경에 따라 아래와 같은 차이점이 있습니다.

[{"상태":"코인 차감","메이커":"코인을 차감하지 않고 구매할 수 있습니다.","출시된 월드":"코인을 차감합니다."},{"상태":"구매 팝업","메이커":"상품 구매 창 하단에 '테스트 구매 시에는 코인을 차감하지 않습니다.' 문구가 표시됩니다.","출시된 월드":"상품 구매 창 하단에 잔액이 표시됩니다."},{"상태":"상품 조회","메이커":"미출시, 판매 중, 판매 대기, 판매 종료상태에서 모두 조회할 수 있습니다.","출시된 월드":"판매 대기, 판매 중, 판매 종료 상태의 상품만 조회할 수 있습니다."},{"상태":"구매","메이커":"미출시, 판매 중, 판매 대기, 판매 종료 상태에서 모두 구매 할 수 있습니다.","출시된 월드":"판매 중 상태의 상품만 구매할 수 있습니다."}]

##### 참고 가이드

‘유료’ 확률형 콘텐츠를 제공하는 경우 확률 정보 공개 가이드에 따라 콘텐츠 사용 전 사용자에게 고지해야 할 의무가 있습니다. [확률 정보 공개](/docs/?postId=667%7B%22target%22:%22_self%22%7D)를 참고해 상품을 제작하길 바랍니다.

  * [상품 등록하기](/docs/?postId=581)
  * [월드 숍 서비스 활용하기](/docs/?postId=659)
Event System

# 학습 과정 소개

크리에이터는 로직을 여러 가지 방법으로 작성할 수 있습니다. 그 방법 중 하나는 이벤트를 활용하는 것입니다. 이번 시간에는 메이플스토리 월드의 이벤트 시스템과 여러 이벤트를 다루는 방법을 살펴봅니다.

# 이벤트 기반의 로직 구성

로직을 작성하다 보면 특정 타이밍에 해야 할 일이 생깁니다. 그럴 때는 행위가 일어난 주체가 무엇을 할 것인지 결정해야 합니다.

예를 들어, 월드에서 캐릭터가 공격받았을 때 아래와 같이 구현한다고 가정해 봅시다.

  1. 캐릭터의 HP를 감소시키고
  2. 대미지를 보여주고
  3. 잠깐 캐릭터를 무적으로 만듭니다.



이렇게 구현하려면 캐릭터가 공격받았을 때 각 기능을 하는 함수를 호출해야 합니다. 여기서 크리에이터가 피격 효과에 특별한 이펙트를 더하려 한다면 4\. 피격 이펙트를 표시한다. 를 추가하면 됩니다.   
이러한 일반 로직은 행위가 일어난 주체가 행동을 관리합니다. 하지만 이벤트 기반 로직은 행동 실행 주체에서 행동을 관리합니다. 즉, 행위가 일어난 주체는 행위가 일어났을 때 행동에 필요한 정보와 타이밍만 알려주고, 실제로 무엇을 할지는 각각의 행동 실행 주체가 결정합니다.

위의 예로 돌아가 봅시다. 캐릭터가 공격받으면 각각의 함수를 호출하는 것이 아니라 공격받은 상황만 이벤트로 만들어 전송합니다. 이벤트를 전송받은 행동 실행 주체는 내부적으로 정해진 행동(HP 감소, 대미지 보여주기, 잠시 캐릭터를 무적으로 만듦)을 수행합니다. 이처럼 동작하기 위해 행동 실행 주체가 해야 할 일은 이벤트 발생 시점을 구독하는 것뿐입니다. 피격 이펙트를 추가하려 한다면, 이펙트를 관리하는 곳에서 공격받은 상황 이벤트를 추가로 구독하면 됩니다.

유명 스트리머의 알림을 받는다고 생각해 봅시다. 해당 스트리머는 어떤 알림이 필요하다고 판단될 때 구독자들에게 알림을 보낼 것입니다. 그 알림을 받고 어떤 행동을 취할지는 각각의 구독자가 결정하는 것입니다.   
정리하면 다음과 같습니다.

  * 일반 로직에서는 행위가 일어난 주체가 일을 처리한다.
  * 이벤트 시스템에서는 행동 실행 주체가 일을 처리한다.



# 이벤트 시스템의 구성

메이플스토리 월드의 이벤트 시스템은 크게 3가지로 구성됩니다.

[{"요소":"이벤트(Event)","설명":"로직 상에서 어떤 사건의 발생을 의미합니다. 이벤트 종류의 식별 정보 및 추가 정보 등을 들고 있는 자료형입니다."},{"요소":"핸들러(Handler)","설명":"이벤트를 받았을 때 처리하는 행동의 주체입니다. Listener, Subscriber 등의 유사 용어가 있습니다."},{"요소":"센더(Sender)","설명":"이벤트를 발송하는 객체입니다. Emitter, Dispatcher 등의 유사 용어가 있습니다."}]

학급 전체에 공지문을 우편 배달한다고 가정해 봅시다. 그렇다면 이벤트, 핸들러, 센더는 아래와 같을 것입니다.

  * 이벤트 : 공지문
  * 핸들러 : 학급의 학생들
  * 센더 : 우편배달원



# 이벤트 시스템의 장단점

이벤트 시스템이 일반 로직보다 무조건 좋은 것은 아닙니다. 이벤트 기반 로직은 여러 개발 방식 중 하나이며, 장단점이 모두 존재합니다. 그러므로 크리에이터의 필요에 따라 적절한 로직을 활용하는 것이 좋습니다.

## 장점

  * 다른 컴포넌트나 기능에 의존적이지 않습니다. 분산된 구조를 만드는 데 유리합니다.
  * 행위가 일어난 주체는 수정하지 않고 행위에 대한 액션만 추가할 수 있습니다.
  * 다른 컴포넌트의 정보를 알 필요가 없습니다.



## 단점

  * 어떤 사건이 발생했을 때 전체적인 흐름을 파악하기 어렵습니다. 각각 처리하기 때문에 실행 시점에서는 알 수 없기 때문입니다.
  * 디버깅이 다소 어려울 수 있습니다.
  * 순차 처리가 어려울 수 있습니다.



# 마무리

이번 시간에는 이벤트 시스템의 개념을 살펴보았습니다. 메이플스토리 월드는 Entity Event System을 사용하고 있습니다. Entity Event System은 Entity를 중계소로 이용합니다. [Entity Event System](/docs/?postId=176)에서 자세한 내용을 살펴봅시다.
아틀라스 활용하기

# 학습 과정 소개

아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다.

# 아틀라스 언패커 소개

아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileDataSet으로 넣어 렉트타일로 사용할 수 있습니다. 아틀라스 언패커에서 자를 수 있는 단일 아틀라스의 최대 크기는 2048*2048px이며, 최대 256 조각으로 자를 수 있습니다. [png](1687513798252916899bf05f9499bbf19567965588c04)

[{"번호":"\u0001","설명":"파일 선택: 자를 이미지 파일을 외부에서 불러옵니다. All: 잘라진 모든 스프라이트의 목록 중 저장하고자 하는 특정 스프라이트만 선택하거나, 목록 전체를 선택 또는 선택 취소할 수 있습니다.파일 이름 접두사: 자른 이미지를 저장하기 위해서 반드시 입력해야 하는 항목입니다. 입력한 이름 뒤에 수가 하나씩 커지며 '이름_숫자'로 저장됩니다."},{"번호":"\u0001","설명":"자르기: 자르기 설정을 활용해 자를 셀의 개수 혹은 크기를 설정할 수 있습니다. Scale: 이미지의 전체 크기를 확대, 축소하거나 원 상태로 되돌릴 수 있습니다."},{"번호":"\u0001","설명":"카테고리: 자른 이미지가 저장될 카테고리를 선택합니다. 저장 시 선택한 카테고리로 Resource Storage에 저장됩니다.렉트타일 셋에 추가: 자른 이미지를 선택한 렉트타일 셋에 추가합니다.AnimationClip에 추가 : 이 옵션을 선택한 상태로 자른 이미지를 업로드하면 자른 이미지가 곧바로 AnimationClip Editor 창에 추가됩니다."},{"번호":"\u0001","설명":"불러온 아틀라스를 확인할 수 있는 미리보기 창입니다. 마우스 오른쪽을 누른 채 이동하면 화면을 이동시킬 수 있습니다.아틀라스를 자르면 이미지 위에 파란색 선이 생성됩니다."},{"번호":"\u0001","설명":"자른 이미지가 3번의 설정에 맞춰 저장됩니다."}]

# 아틀라스 자르기

  1. Window - Atlas Unpacker를 선택해 아틀라스 언패커 창을 엽니다.  
[png](16528540865389d7c47d2f2b747c99924d748f6c18163)
  2. 파일 선택을 눌러 자를 아틀라스를 불러옵니다. 상단의 자르기를 누르고, 원하는 자르기 설정 값을 입력합니다.  
[png](168751554538180aaeefd2e4d4aa2ab647feed7edb273)
  3. 자른 스프라이트 중 불필요한 이미지는 선택을 해제한 후 [업로드] 버튼을 눌러 이미지를 Resource Storage에 저장합니다.  
[png](16875159466158034a64f151b4837a10bf671b671044a)



#### 셀 크기, 셀 개수 자르기

셀 크기는 설정한 X, Y 값에 따라 동일한 크기의 사각형이 아틀라스 크기에 맞게 생성되고, 잘라집니다. 셀 개수는 전체 이미지를 설정한 행과 열 개수에 따라 잘라집니다. 자르기 설정에 따라 이미지를 자를 때 포함되지 않는 아틀라스의 일부 여백은 스프라이트로 저장되지 않습니다.

[png](16875161330420c3aa0db95274d089f58db3c96404b28)

#### 오프셋 조절

X, Y 축을 기준으로 오프셋을 조절할 수 있습니다. 설정한 오프셋 값에 따라 아틀라스를 자르는 위치를 조정합니다.

[png](1687516298212f390271a14934c66a4432d0d664bcf2c)

#### 패딩 조절

패딩 값을 조정하면 나뉜 셀을 기준으로 X, Y 값에 따라 여백이 생기고, 여백을 제외하고 아틀라스를 자릅니다. [png](16875163895425d939f8086df4a3c97661cc466924550)

# 렉트타일로 사용하기

자른 스프라이트를 바로 렉트타일로 활용하고 싶다면, 렉트타일 셋에 추가 기능을 활용합니다. 렉트타일 활용 방법은 [RectTileMap의 활용](/docs/?postId=589)을 참고하세요.

  1. Workspace - MyDesk - Create TileDataSet을 눌러 자른 스프라이트를 추가할 새로운 타일 데이터 셋을 만듭니다.
  2. [⋯] 버튼을 누르고, Reference 창에서 자른 스프라이트들을 추가할 TileDataSet을 선택합니다.  
[png](16875169132067a31bbf1c39343488599f4114284cb20)
  3. 파일 이름 접두사와 세부 정보를 설정한 뒤 [업로드] 버튼을 누릅니다. 선택했던 TileDataSet에 모든 이미지가 추가된 것을 확인할 수 있습니다.
신발 만들기

# 학습 과정 소개

신발 제작 방법을 알아봅시다. 신발 제작을 응용해 신발과 함께 양말, 부츠도 제작할 수 있습니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다.

# 사전 준비

아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Shoes.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/Avatar_psd/version4_230221/Avatar_Shoes.psd"} $$

> Tip. 아이템은 아바타 발을 기준으로 최대 120x120 안에서 제작을 권장합니다. [png](1677032255514a026c711634c4196ab0b96bc5424e7f9)

# 제작 시트 설명

제작 시트는 회색 레이어와 노란색 레이어로 구분되어 있습니다. 3개의 회색 레이어는 이미지를 데이터화하기 위한 data 폴더, 이미지 제작에 도움을 줄 아바타 body 레이어, 가이드용 선 레이어가 있습니다. 회색 레이어는 모두 잠겨있고, 작업 중에 수정은 필요하지 않습니다. 노란색 레이어는 크리에이터가 실제 아이템을 그릴 수 있는 곳입니다.

> Tip. 모든 레이어의 이름을 수정하거나 삭제할 경우 아이템을 제작할 수 없습니다. 절대 이름을 변경하지 마세요.

#### 회색 레이어

  1. data 폴더 data 폴더는 아이템을 데이터화하기 위해 필요한 폴더입니다. 이미지 제작에는 영향을 주지 않습니다. 
     * data:origin: 빨간색 점으로 데이터의 중심을 표시합니다.
     * data:type:Shoes: 어떤 종류의 데이터인지 알 수 있습니다.
     * data:vslot:So: vslot의 개념은 모자에서만 사용됩니다.
     * data:use_zmap_preset1: 아바타를 구성하는 이미지는 층층이 쌓여 만들어집니다. 아바타의 다양한 몸동작을 만들기 위해 몸을 바탕으로 옷, 방패, 무기 순으로 이미지가 층층이 위에 쌓이는 구조입니다.   
아이템에 따라 분리된 각 Sprite의 높이가 순서대로 정리된 파일이 zmap입니다.
  2. guide_character_summary 레이어: 아바타의 샘플 body입니다. 레이어 이름 뒤에 붙은 숫자가 클수록 아래에 배치되는 내부적인 규칙입니다.
  3. guide_grid: 그리드 선 기준으로 아이템을 제작합니다. 초록색 선 안에서만 작업을 해야 합니다. [png](16454358868351d94f93644cf46569a2be51ed1f9a202)



#### 노란색 레이어

크리에이이터는 노란색 레이어(edithere:shoes_shoesTop_69)에 신발을 그릴 수 있습니다. 신발을 그릴 때는 초록색 가이드 선을 벗어나지 않게 그려야합니다. [png](1645440415221e758aa75302b4bd09e503f4d49bcb3e6)

# 제작하기

기본 신발을 바탕으로 아래와 같은 양말과 부츠를 제작해봅시다.

[{"기본 신발":"[gif](1677034678429be2cb1f089194731bb321d1ae36b20b9)","양말":"[gif](16454352494023ec9b27f8e0a42a381d086d237e2b2b3)","부츠":"[gif](1645435264743dc9d75c9a3f64a42b6e86045f49379c6)"},{"기본 신발":"[png](16770347093535d4307c5ab37400aa90bad527003fba3)","양말":"[png](1645435318415ef3ced3935204051b9cc6449d708478c)","부츠":"[png](1645435335260644d7e893d5b40ddb3be0e42b7337cb5)"}]

#### 양말 만들기

  1. 노란색 레이어(edithere:shoes_shoesTop_69)에 이미지 작업을 합니다.  
[png](16454410334432e1fa75cfc224edd82bb0b18c3dba8a4)
  2. 포토샵 툴에서 Pencil tool 클릭하고 아바타의 body에 맞춰 각각의 동작에 도트로 초록 양말을 그려줍니다.  
[png](16770347338082118238cdd5b49a4be66f71c853fea79)



> 더 알아보기 애니메이션을 확인해 보고 싶다면 [등록하기](/docs/?postId=590)를 진행하여 미리 보기로 확인할 수 있습니다.

#### 부츠 만들기

  1. 노란색 레이어(edithere:shoes_shoesTop_69)에 이미지 작업을 합니다.  
[png](16454410334432e1fa75cfc224edd82bb0b18c3dba8a4)
  2. 포토샵 툴에서 Pencil tool 클릭하고 아바타의 body에 맞춰 각각의 동작에 도트로 부츠를 그려줍니다.  
[png](16455205733994a5eb10228ae4fc5aa409cb8b24588f8)



##### 참고 가이드

  * [하의 만들기](/docs?postId=584)
  * [망토 만들기](/docs?postId=585)
  * [상의 만들기](/docs?postId=586)
  * [장갑 만들기](/docs?postId=587)
확률 정보 공개 

# 확률 정보 공개란?

메이플스토리 월드의 모든 크리에이터는 창작한 아이템 내 확률형 아이템을 제공하는 경우 확률 정보 공개 가이드에 따라 아이템 사용 전 사용자에게 고지해야 할 의무가 있습니다.

  * 메이플스토리 월드의 확률 정보 공개 가이드는 ‘확률형 아이템 확률 정보공개 관련 해설서’의 내용을 따릅니다. 해당 해설서의 내용을 따르지 않을 경우 최대 월드 이용 제한이 적용될 수 있습니다.



# 확률 정보 공개 대상 및 방법

아래 항목에 해당할 경우 확률형 아이템 정보 공개 대상이 될 수 있으며, 자세한 확률 정보 공개 대상 및 방법은 확률형 아이템 확률 정보 공개 관련 해설서를 확인해주시기 바랍니다. 

  * 확률형 아이템이란?

    * 플레이어가 직접적ㆍ간접적으로 유상으로 구매하는 아이템 중 구체적 종류, 효과 및 성능 등이 우연적 요소에 의하여 결정되는 것
  * 확률형 아이템의 종류

    1. 캡슐형 확률형 아이템: 구매 또는 사용 시 다른 아이템을 제공하는 확률형 아이템으로서 제공되는 아이템의 종류ㆍ등급ㆍ성능 등이 우연적 요소에 의하여 결정되는 확률형 아이템
    2. 강화형 확률형 아이템: 구매 또는 사용 시 다른 아이템의 종류ㆍ등급ㆍ성능을 변화시키는 확률형 아이템으로서 그 변화 결과가 우연적 요소에 의하여 결정되는 확률형 아이템
    3. 합성형 확률형 아이템: 이용자가 직접적ㆍ간접적으로 유상 구매하는 아이템과 다른 아이템을 결합하여 획득하는 확률형 아이템으로서 해당 확률형 아이템의 종류ㆍ등급ㆍ성능이 우연적 요소에 의하여 결정되는 확률형 아이템
    4. 3종 외 추가 확인 필요 아이템 유형 
       * A. 제공되는 총수 또는 기간이 한정된 확률형 아이템
       * B. 확률 정보가 변경되는 확률형 아이템
       * C. 소위 ‘천장’ 시스템이 있는 확률형 아이템
       * D. 월드코인을 통해 획득한 재화로 확률형 아이템을 구매하는 아이템 등



# 확률형 아이템 준수사항

메이플스토리 월드의 모든 크리에이터는 창작한 아이템 내 확률형 아이템을 제공함에 있어 아래의 내용을 모두 준수하였는지 확인해주시기 바랍니다. 본 준수사항 및 이외 해설서에 안내되어 있는 항목을 위반하는 경우 최대 월드 이용 제한이 적용될 수 있습니다.

[{"분류":"표시 방법 준수 여부","내용":"확률 정보를 백분율로 표시하였는가?확률 표기는 최초로 0 이외의 숫자가 나오는 자리보다 네 자리 이상 낮은 소수점 자리에서 반올림하여 표시하였는가?개별 확률 안내가 어려운 경우 분수 등 플레이어가 쉽게 이용할 수 있는 방법으로 표시하였는가?"},{"분류":"확률 고지 경로\/방식 준수 여부","내용":"월드 내 고지 여부월드 내 사용 화면에서 확인 가능하도록 표시하였는가?확인이 어려운 경우 월드 내 외부연결 링크 등 대체제를 마련하였는가?홈페이지 고지 여부개별 커뮤니티 등에 확률 정보를 안내했을 경우, 해당 URL을 월드 ‘상세 화면’ – 공지 사항에 기재하였는가?"},{"분류":"공개 대상 준수 여부","내용":"캡슐형\/강화형\/합성형 확률형 아이템에 대한 확률을 공개하였는가?유료+무료 아이템에 대한 확률을 공개하였는가? 제공 수\/기간을 명확하게 안내하였는가?"},{"분류":"고지 확률 일치 여부","내용":"인 월드, 홈페이지 등에 고지한 확률이 일치하는가?월드 내 실제 적용 확률과 고지 확률이 일치하는가?"},{"분류":"확률 고지 기간 준수 여부","내용":"판매 중인 기간 동안 고지하고 있는가?확률형 아이템 공급 정보 변경 시 사전 고지를 진행하였는가?"},{"분류":"광고\/선전물 표시 방법 준수 여부","내용":"외부 마케팅 영역에 관련 안내를 포함하고 있는가?"}]

본 가이드에서 안내되지 않은 콘텐츠 개발에 대한 준수사항은  및 을 따릅니다.
컴포넌트 추가와 삭제

# 학습 과정 소개

엔티티에 정체성을 불어넣는 방법은 컴포넌트를 이용하는 것입니다. 컴포넌트와 프로퍼티 에디터 창 이용 방법을 알아보겠습니다.

# 컴포넌트 구분

컴포넌트는 엔티티의 정체성을 결정하는 역할을 합니다. 컴포넌트는 크리에이터가 제작한 모델에서 몇 가지 컴포넌트를 추가하거나, 삭제해 겉모습은 같지만 다르게 동작하는 엔티티를 제작할 수 있습니다.

프로퍼티 에디터 창에서 컴포넌트는 Map, UI, Player, Etc 4가지 항목으로 분류하고 있습니다.각 항목에 맞는 컴포넌트가 들어 있으며, 컴포넌트의 특징은 아이콘으로 구분할 수 있습니다. 컴포넌트 각각의 설명은 [API Reference](/apiReference?postId=317)를 참고하세요.

[{"아이콘":"[png](1636357080473d55d20344b90435a823e542b11829a0e)","컴포넌트":"아바타 관련 컴포넌트"},{"아이콘":"[png](1636357498603c3f1666fb49d43f2a8a35ab4921b118b)","컴포넌트":"UI 관련 컴포넌트"},{"아이콘":"[png](16363570539712866386877bf4ee885533554c4398352)","컴포넌트":"AI 관련 컴포넌트"},{"아이콘":"[png](163635714752051801c9ae8b24113a2a0cbe18dd96bb6)","컴포넌트":"기타 컴포넌트크리에이터 제작 컴포넌트"},{"아이콘":"[png](1636357093244b60a272cb7fb490eb5770df741becff3)","컴포넌트":"카메라 관련 컴포넌트"},{"아이콘":"[png](1636357430620486e701f5b2d4d1599e7c72705e23f50)","컴포넌트":"플레이어 관련 컴포넌트"},{"아이콘":"[png](1636357473313e6e6178c7e9f4a10a65949eb0b391541)","컴포넌트":"스프라이트 관련 컴포넌트"},{"아이콘":"[png](1636357387379505d66dc8dbf4770a32b9817b213ea39)","컴포넌트":"이동 관련 컴포넌트"},{"아이콘":"[png](16363573741458fe0e51a246b4ae5898d1c2fefe92710)","컴포넌트":"맵에 영향을 끼치는 관련 컴포넌트"},{"아이콘":"[png](16363574605286d5c7249c6344b829d3efe1b34d9eb51)","컴포넌트":"소리 관련 컴포넌트"},{"아이콘":"[png](16363571792923152ba595bf340ed9f87583aeb7d3868)","컴포넌트":"아이템 관련 컴포넌트"},{"아이콘":"[png](1636357117698b48ce0db38bc432e97e40269c8545180)","컴포넌트":"조작 관련 컴포넌트"},{"아이콘":"[png](163635710557194c1304e88c34552b0a68d2b30eb3568)","컴포넌트":"충돌 관련 컴포넌트"}]

# 컴포넌트 추가

  1. 프로퍼티 에디터 하단의 Add component를 누릅니다. [png](1634619180422b0c8ea84e18648749cd9d6642ff0b8d1)   

  2. 추가할 컴포넌트를 검색, 선택합니다. [png](1634619277305f8cc364cb0b7421eb3bad22bfdbbd4c6)   

  3. 프로퍼티 에디터 창에 선택한 컴포넌트가 추가되었는지 확인합니다. [png](1634619296245c4904b69ee43474b9ec416bd7e652521)   




# 컴포넌트 초기화

설정한 컴포넌트 값을 초깃값으로 되돌립니다.

  * 콘텍스트 메뉴를 열고, Reset All Properties를 선택해 컴포넌트의 프로퍼티 값을 초기화합니다. [png](1634619750943da28f727fc4548fa859cb322bf88dbe7)



# 컴포넌트 상태 변경

컴포넌트는 추가와 동시에 자동으로 활성화됩니다. 필요할 때 체크박스를 이용해 간단하게 활성 혹은 비활성 상태로 변경이 가능합니다.

  * 아이콘과 컴포넌트 이름 사이의 체크박스를 선택해 상태를 변경합니다. [png](16346176407708cb3de01eaaf48a68ab2dd6fe1b1183f) : 컴포넌트 활성 상태 [png](16346176985962dcc6fd403f34978b50521f0a8329013) : 컴포넌트 비활성 상태



[png](1634619923114e5669c9d06f14fbba2355f32e99f00a1)

  * 컴포넌트명 옆 콘텍스트 메뉴를 열고, Disable Component를 선택해 비활성화 할 수 있습니다.



# 컴포넌트 삭제

콘텍스트 메뉴를 열고, Remove Component를 선택해 컴포넌트를 삭제합니다. [png](16346199801992f5684c3b2e44bf194317e3efda34a18)
Background Editor

Background Editor를 활용해 MSW에서 제공하는 배경 템플릿을 수정하거나 새로운 심도 깊은 배경을 직접 제작할 수 있습니다.

## Background Editor 소개

사진

[{"번호":"nan","이름":"새로 만들기","설명":"새로운 배경을 제작을 위한 RUID를 생성합니다."},{"번호":"nan","이름":"가져오기","설명":"크리에이터가 제작한 배경 혹은 MSW 리소스의 background template를 가져올 수 있습니다."},{"번호":"nan","이름":"배경 이름","설명":"편집 중인 배경 리소스의 이름을 표시합니다."},{"번호":"nan","이름":"축소, 확대","설명":"씬 뷰를 1.0배~10.0배로 확대하거나 축소합니다."},{"번호":"nan","이름":"씬뷰\/캔버스","설명":"배경을 편집하는 메인 캔버스입니다. Piece를 선택·이동하고 Scale·Rotation을 조작하며, 줌과 패닝을 할 수 있습니다."},{"번호":"nan","이름":"Pieces","설명":"배경을 구성하는 Piece(레이어) 목록입니다. 가시성 토글, 이름 편집, Piece 추가·복제·삭제를 할 수 있습니다."},{"번호":"nan","이름":"Piece Property","설명":"선택한 Piece의 속성을 편집합니다."},{"번호":"nan","이름":"초기화","설명":"마지막으로 저장한 상태로 되돌립니다."},{"번호":"nan","이름":"RUID 복사","설명":"현재 편집 중인 배경 리소스의 RUID를 클립보드에 복사합니다."},{"번호":"nan","이름":"수정","설명":"변경 사항을 저장합니다."}]

## Piece Property

배경 리소스를 구성하는 조각들의 프로퍼티를 설정하는 창입니다.

### Resource

조각의 RUID를 선택할 수 있습니다. ResourceType은 임의로 수정할 수 없습니다.

[{"프로퍼티":"ResourceRUID","설명":"Resource Storage의 내 리소스, MSW 리소스 혹은 Workspace에 추가한 이미지의 RUID입니다."},{"프로퍼티":"ResourceType","설명":"선택한 RUID에 따라 리소스 타입이 자동으로 결정되며, 임의로 수정할 수 없습니다."}]

### Transform

[{"프로퍼티":"Position","설명":"배경에서 Piece의 위치 좌표(X, Y)입니다."},{"프로퍼티":"Z","설명":"같은 그룹(전경\/후경) 안에서의 렌더 순서입니다. 값이 클수록 위에 그려집니다."},{"프로퍼티":"Width","설명":"리소스 원본의 가로 크기(px)로, 수정할 수 없습니다."},{"프로퍼티":"Height","설명":"리소스 원본의 세로 크기(px)로, 수정할 수 없습니다."},{"프로퍼티":"Scale","설명":"Piece의 표시 배율입니다. 기본값은 (1.0, 1.0)입니다."},{"프로퍼티":"Rotation","설명":"회전 각도입니다. 0~359° 범위이며, 360°를 입력하면 0°로 정규화됩니다."},{"프로퍼티":"Flip","설명":"Piece를 수평 방향으로 뒤집습니다."}]

### Rendering

Piece의 투명도, 색상 그리고 전/후경을 설정할 수 있습니다.

[{"프로퍼티":"Alpha","설명":"불투명도입니다. 1은 불투명, 0은 투명입니다."},{"프로퍼티":"Color","설명":"Piece에 적용할 색상(RGBA)입니다."},{"프로퍼티":"IsFront","설명":"true로 설정 시 전경으로 선택되어 캐릭터 앞에 보여집니다. false로 설정 시 후경으로 선택되어 캐릭터 뒤에 보여집니다."}]

### ScriptedDynamics

[{"프로퍼티":"Mode","설명":"Piece에 적용할 동적 효과 모드를 선택합니다. 선택한 Mode에 따라 설정 항목이 달라집니다."},{"프로퍼티":"└ Parallax","설명":"카메라 이동에 연동해 Piece가 다른 속도로 움직이며 깊이감을 표현합니다."},{"프로퍼티":"└ Transition","설명":"Piece가 스스로 일정한 속도로 움직입니다."},{"프로퍼티":"RepeatDirection","설명":"타일링 반복 방향입니다. None \/ X \/ Y \/ Both 중 선택합니다."},{"프로퍼티":"RepeatOffset","설명":"반복 간격 오프셋입니다. 0으로 두면 리소스 원본 크기를 기준으로 빈틈 없이(seamless) 타일링됩니다."}]

#### Parallax

ScriptedDynamics의 Mode를 parallax로 설정하면, Ratio, BoundOrigin, BoundWidth, BoundHeight 값을 설정할 수 있습니다.

[{"프로퍼티":"Ratio","설명":"카메라 이동에 연동되는 비율입니다. 값이 작을수록 느리게 이동해 깊이감을 줍니다."},{"프로퍼티":"BoundOrigin","설명":"Parallax가 적용되는 영역의 기준점 좌표(X, Y)입니다."},{"프로퍼티":"BoundWidth","설명":"Parallax가 적용되는 영역의 가로 크기입니다. 0이면 무한 영역으로 해석됩니다."},{"프로퍼티":"BoundHeight","설명":"Parallax가 적용되는 영역의 세로 크기입니다. 0이면 무한 영역으로 해석됩니다."}]

#### Transition

ScriptedDynamics의 Mode를 transition으로 설정하면, Flow 값을 설정할 수 있습니다.

[{"index":"프로퍼티","0":"Flow"},{"index":"설명","0":"Piece 자체의 이동 속도(X, Y)입니다."}]