msw-ai-tf/maplestory-worlds-creator-docs huggingface dataset:
다른 위치로 이동하는 포탈 만들기

# 학습 과정 소개

월드나 하나의 맵 안에서 이동하는 포탈을 만들어 간단하게 플레이어 아바타가 맵을 이동하게 만들 수 있습니다. [PortalComponent](/apiReference/Components/PortalComponent) 사용 방법을 알아보겠습니다.

# 포탈 만들기

[PortalComponent](/apiReference/Components/PortalComponent)는 동일한 포탈 컴포넌트를 가진 엔티티를 목적지로 설정하고, 플레이어 아바타가 포탈 영역에서 특정 동작을 수행하면(키 입력) 목적지로 이동할 수 있는 기능입니다. 이동 가능한 포탈로 만드는 엔티티는 눈에 잘 띄는 스프라이트를 사용하는 것이 좋습니다. 주로 빛나는 원이나, 특정 그림을 반복적으로 사용해 유저가 쉽게 타 엔티티와 구별할 수 있게 하는 것이 좋습니다.

#### 포탈 모델을 이용해 만들기

Preset List - Portal을 선택해 Scene에 배치합니다. 포탈 모델에는 PortalComponent가 포함되어 있습니다.  
[png](1663915370804d5440d19b5644734bd933e7778f83708)  
  


#### 직접 포탈 만들기

  1. 크리에이터가 제작한 스프라이트를 사용한 엔티티나 MSW 리소스를 활용한 엔티티를 배치합니다.
  2. 프로퍼티 에디터 창을 열어 PortalComponent를 추가합니다. [png](16877649298670292c6aaa1a24154979d84844e1418f3) [png](1634802949512ccfae4badddf4a9b94e54c465e52fe6a)



# 포탈 목적지 정하기

PortalComponent를 가진 엔티티를 목적지로 정할 수 있습니다. 목적지는 한 곳만, 단방향으로 설정할 수 있습니다.

  1. 2개 이상의 포탈을 설치합니다.  
[png](1634802987275d1041c5e61784d01aa9e0f46471e9154)
  2. PortalComponent - PortalEntityRef를 누르고 목적지인 포탈을 선택합니다.  
[png](1634803045300b9122896120d423ea925ee9a2a3f89c2)
  3. 시작[png](163453086660754178e0ff96a45c58d1a580a4dfab9d1)을 눌러 이동을 확인합니다  
[gif](16348033108010ff14400fad74976a47ac11befbe43e3)



> Tip. 포탈 경로는 [png](1634520188174b448bb50e5c64320bb3c882a5b438d6d)World에 배치한 다음, 저장(Ctrl + S) 또는 [png](1635317657654c59c47ffc44d414db579b8d2fc0715a8) 테스트 실행 후 갱신됩니다. 갱신하지 않으면, 설치한 포탈 경로가 나오지 않으므로 반드시 저장 또는 테스트를 실행해주세요.

# 양방향 이동 포탈 만들기

두 개의 포탈을 서로 연결해 양방향으로 이동할 수 있게 만들 수 있습니다. 맵 내 이동과 다른 맵으로 이동이 가능합니다.

#### 맵 내 양방향 포탈

  1. 각각의 위치에 포탈을 배치합니다.
  2. 각각의 PortalComponent - PortalEntityRef에서 목적지를 선택합니다.  
[png](163480347290834c9258780db465485f2abcf0bc3c64c)
  3. 시작[png](163453086660754178e0ff96a45c58d1a580a4dfab9d1)을 눌러 이동을 확인합니다.  
[gif](16348058145167aaa89d461ff4c1c8946f863262bd401)



#### 맵을 이동하는 양방향 포탈

  1. 다른 맵에 포탈을 각각 배치합니다.
  2. PortalComponent - PortalEntityRef를 누르고 목적지를 선택합니다.[png](1634804528834453c58fe14e24cc8adb4ab9e4a3e0a5b)
  3. 시작[png](163453086660754178e0ff96a45c58d1a580a4dfab9d1)을 눌러 이동을 확인합니다.  
[gif](16348062106844c69bcbaa6df4e4e9f3a6cd65394b137)



# 포탈 영역 정하기

스프라이트 크기와 관계없이 포탈로 인식하는 범위를 설정할 수 있으며, Box Size와 Box Offset은 연동되어 있습니다. [png](1634804632410373ff4eeb66a406facf39bb888857a1d)

  * BoxCollider: 포탈 범위 편집 기능을 활성화합니다.
  * BoxOffset: 포탈로 인식하는 범위입니다.
  * BoxSize: 포탈 박스 크기를 변경합니다.


  1. Box Collider - Edit를 눌러 포탈을 편집 가능한 상태로 활성화합니다.  
편집 가능한 상태가 되면 영역이 빨간색으로 변합니다.  
[png](16348046753553247448f7d1e4b83add5fac2e7b76e80)
  2. X, Y값을 직접 변경하거나, 박스 핸들러를 잡아당겨 원하는 크기로 변경합니다.  
[gif](1634804819824c51759c6a62848348bb5f7f339bbf701)
  3. 시작[png](163453086660754178e0ff96a45c58d1a580a4dfab9d1)을 눌러 바뀐 포탈 범위를 확인합니다.   
포탈 스프라이트보다 박스 범위를 크게 설정했기 때문에 포탈 옆에서도 이동이 가능합니다.



[{"index":"기본 박스 설정","0":"[gif](16348050501643cf72b5f23084b3794b9a405f1cbeceb)"},{"index":"박스 사이즈 변경 후","0":"[gif](1634805074080dd3861e6a9bc4ec89beff04deb974bf0)"}]
2강 메이플스토리 월드 크리에이터로 활동하기 위한 준수 사항

[png](17290921289657be8b65ddb4b4c6f8850017f5c42fe9d)

  
# 크리에이터 활동 조건 

#### 크리에이터 이용 계정 조건

메이플스토리 월드 크리에이터로 활동하기 위해서는 이용 계정이 제시하는 조건에 부합해야 합니다. 만 14세 이상이며 ‘메이플스토리 월드 크리에이터 이용약관’에 동의한 경우라면 크리에이터로 활동할 수 있습니다.

다만, 획득한 수익을 출금하고자 하는 경우 나이와 계정의 인증 여부에 대한 조건이 추가됩니다. 추후 출금 진행까지 염두에 두고 크리에이터로 활동을 희망하신다면 이 부분 함께 살펴봐 주시기 바랍니다.

[{"index":"메이플스토리 월드 크리에이터 활동 조건","0":"메이플스토리 월드 크리에이터 이용약관에 동의만 14세 이상단, 만 14세 미만인 미성년 크리에이터는 해당 약관에 대한 법정대리인의 동의가 필요"},{"index":"메이플스토리 월드 크리에이터 출금 조건","0":"만 18세 이상 본인 확인이 완료된 계정 최소 100 USD 이상 보유한 계정"}]

#### 사업자 정보 공개 방침

또한, 개인/법인사업자의 위치에서 서비스를 제공하고 계실 경우, 관련 법령에 따라 운영정책과 마찬가지로 사업자 정보를 모든 플레이어에게 공개해 주세요. 메이플스토리 월드에서 사업자로 콘텐츠를 제작 및 판매하는 크리에이터님께서는 필수적으로 상호명 및 사업자등록번호를 공개해야 합니다. 사업자 정보의 공개는 법률 준수 차원에서 필요하며, 이와 관련하여 메이플스토리 월드 추가 안내가 있을 수 있습니다.

  
#### 지켜야 하는 플랫폼 정책 

플랫폼에서 원활히 활동하실 수 있도록 "메이플스토리 월드 크리에이터 이용약관"과 “크리에이터 운영정책” 등을 통해 크리에이터로서 준수해야 하는 정책을 안내드리고 있습니다. 메이플스토리 월드는 플랫폼 운영에 영향을 미치는 사항에 대해 신고 및 모니터링 등으로 관리하고 있으며, 해당 영역에서 정책 위반이 확인되는 경우 크리에이터님께 경고 발송 혹은 콘텐츠 유지·보수를 요청할 수 있습니다.

[{"@cols=2:콘텐츠 유지·보수 요청 형태":"알림(종 모양의 아이콘)을 통한 요청","Unnamed: 1":"배너를 통한 요청"},{"@cols=2:콘텐츠 유지·보수 요청 형태":"[png](1729156341763e2b46ec5137d4833bc7b540c40e87516)","Unnamed: 1":"[png](172906998412072ab4c396e504e33b33caa6bd4ea43a0)"}]

이에 대한 안내를 받으셨다면 기한 내 요청된 유지·보수를 이행해 주셔야 합니다. 만약 적절한 수정 조치가 진행되지 않을 경우 게재가 중단될 수 있으며, 사안이 중대한 위반 행위의 경우 법적 대응이 수반될 수 있습니다.

위반 행위로 인해 발생한 피해에 대해서는 원칙적으로 도움을 드리고 있지 않으며, 크리에이터라면 특히 인지하고 있어야 하는 중요한 항목에 대해선 개별 가이드를 제공해드리고 있습니다. 크리에이터님께서는 콘텐츠 제작 및 운영 시 상세 가이드 내용을 반드시 확인해 주시기 바랍니다.

<콘텐츠 유지·보수가 요구되는 플랫폼 정책>

  1. 플레이어 문제 해결 의무 [[크리에이터 운영 가이드 5강 고객 문의 관리하기]](/resource?postId=1180)
  2. 크리에이터 제작 콘텐츠 청약철회 대응 의무 [[크리에이터 운영 가이드 8강 유료 상품 환불 정책]](/resource?postId=1183)
  3. 크리에이터 제작 콘텐츠 유해 여부 판단 및 콘텐츠 관리 [[크리에이터 운영 가이드 9강 건전한 콘텐츠 제작과 크리에이터의 관리 책임]](/resource?postId=1184)
  4. 넥슨 및 제3자 IP 사용 정책 [[크리에이터 운영 가이드 10강 IP 보호에 대한 책임 및 관리 방법]](/resource?postId=1185)
  5. 유료 확률형 아이템 제공 정책 [[크리에이터 운영 가이드 11강 유료 확률형 아이템 관리 정책]](/resource?postId=1186)
  6. 플레이어 정보 관리 [[크리에이터 운영 가이드 12강 플레이어 정보의 안전한 관리]](/resource?postId=1187)

  
발행일 : 2025.03.21 / 발행버전: v2.0
맵 생성과 관리

# 학습 과정 소개

다양한 맵은 월드를 탐험하는 유저들에게 다채로운 재미를 선사합니다. 이번 과정에서는 맵 생성과 관리 방법을 알아봅시다.

# 맵 관리 방법

맵 관리 방법에는 2가지가 있습니다.

  * Hierarchy - maps 하위 엔트리의 콘텍스트 메뉴를 통해 관리
  * Window - Map List 창에서 관리



# 새 맵 만들기

[{"index":"Hierarchy","0":"Hierarchy - maps의 콘텍스트 메뉴에서 Create New Map 클릭 [png](168619256953482671c21f29e4b3fa358e803384cd88a)"},{"index":"Map List","0":"Map List 창 하단에서 [새 맵 만들기] 버튼 클릭 맵의 콘텍스트 메뉴에서 [추가하기] 버튼 클릭 [png](17407188118992865ea930bfa4fe1b74a91f24ebf7b22)"}]

> Tip. 맵 이름의 번호는 오름차순으로 생성됩니다. 변경 사항이 있다면, 저장 안내 창이 뜹니다.

# 맵 복제하기

[{"index":"Hierarchy","0":"복제하려는 맵의 콘텍스트 메뉴에서 Duplicate 클릭[png](166547548197887e3c38de1bc42f9aa9c4444a464c110)"},{"index":"Map List","0":"복제하려는 맵의 콘텍스트 메뉴에서 Duplicate Map 클릭[png](1740718860985a71d3757d77e4e9ca91ff837e5a8fc73)"}]

# 맵 삭제하기

[{"index":"Hierarchy","0":"삭제하려는 맵의 콘텍스트 메뉴에서 Delete 클릭[png](16654754071719502fdc9e05a4db98079408b2c3dc57d)"},{"index":"Map List","0":"삭제하려는 맵의 콘텍스트 메뉴에서 Delete Map 클릭[png](1687510622017287506de587c442eae8f10a1f3fffa35)"}]

> Tip. 시작 맵과 현재 Scene에서 작업 중인 맵은 삭제할 수 없습니다.

# 다른 맵 불러오기

[{"index":"Hierarchy","0":"불러올 맵을 더블클릭 [png](1665475758380d0ae41686e544179a2f88336522d930c)"},{"index":"Map List","0":"원하는 맵을 선택한 후 [불러오기] 버튼 클릭 [png](1740718976840ed493cfcbddd4f90907cabafff1a3d8d)"}]

# 시작 맵 설정

시작 맵은 출시한 월드를 실행했을 때 플레이어 아바타가 처음 들어가는 맵입니다. 기본 시작 맵은 map01이지만, 필요에 따라 시작 맵을 변경할 수 있습니다.

[{"index":"Hierarchy","0":"시작 맵으로 변경하려는 맵의 콘텍스트 메뉴에서 Set Starting Map 클릭 [png](16654761105842d01f5d7edc04abcb2e4fa0d6fb3c16d)"},{"index":"Map List","0":"시작 맵으로 변경하려는 맵에서 시작 맵을 클릭 [png](1745302055551dc8af652634a4081bded884b0a7f9c17)"}]

> '시작 맵'과 '게임 시작 위치' 차이점 시작 맵 설정과 테스트를 위한 위치 설정은 서로 다른 개념입니다. 게임 제작 중에 테스트를 위해서 플레이할 경우 작업 중인 맵에서 바로 시작합니다. 자세한 내용은 [게임 시작 위치 설정](docs?postId=115)을 참고하세요.

# 맵 출시 여부 선택

생성한 맵은 기본적으로 출시 대상에 포함됩니다. 하지만 일부 맵을 출시 대상에서 제외할 수 있습니다.

[{"index":"Hierarchy","0":"출시 제외할 맵의 콘텍스트 메뉴에서 Exclude from Released Map 클릭 [png](1684214359320ddda193ee6d5445a89731c10103fe946)  출시 대상에서 제외하면 출시 아이콘이 보이지 않습니다. [png](166554042257954731952e0df4c27bdbe47c466b052f7)"},{"index":"Map List","0":"출시 제외할 맵의 콘텍스트 메뉴에서 Exclude from Released Map 클릭 [png](168445486910307dd7acb82f944ff8fe7ceea8b39e53c)  출시 대상에서 제외하면 출시 아이콘이 보이지 않습니다. [png](16844549675036d34a9a31b9548acaa2567c5858198e0)"}]

> 더 알아보기
> 
>   * 시작 맵은 출시 대상에서 제외할 수 없습니다. 또한 출시 대상에서 제외한 맵을 시작 맵으로 변경하면 해당 맵은 자동으로 출시 대상에 포함됩니다.
>   * 공동 제작 월드에서는 그룹장만 맵의 출시 여부를 설정할 수 있습니다.
>   * 출시 제외했던 맵을 다시 출시 대상에 포함하려면 해당 맵의 콘텍스트 메뉴에서 Add Map to Publish를 클릭합니다.
> 


# 포탈을 이용한 맵 이동

  1. 연결하려는 맵에 포탈을 설치합니다. [png](16377379799957f5bcea9eb1d44a899fedb83cd07f630)   

  2. 포탈의 프로퍼티 에디터에서 TargetPortal의 [◉] 버튼을 클릭합니다. 이후 Reference 팝업 창에서 이동할 포탈을 선택합니다. [png](1665477149603091fc46daa8d480cb009d0d4fa2ea34e)   

  3.  [시작] 버튼을 클릭한 뒤, 출발 포탈에서 도착 포탈로 잘 이동하는지 확인합니다.



# 마무리

좋은 맵의 크기와 개수는 정해진 답이 없습니다. 크리에이터의 기획에 맞게 여러 개의 맵을 만들거나, 하나의 커다란 맵을 만들어도 좋습니다. 그러나 맵이 너무 거대하거나 배치된 오브젝트가 많으면 로딩 및 플레이 지연이 발생할 수 있습니다. 그러므로 맵의 크기와 오브젝트 수를 적절히 조절해야 합니다.
UIBasicParticleType

UIBasicParticleComponent에서 사용하는 파티클들을 나타냅니다.

# Members

[{"이름":"nan","값":"0","설명":"기본값입니다. 사용하는 파티클이 없습니다."},{"이름":"Firework","값":"1","설명":"폭죽 파티클입니다."},{"이름":"FireworkCluster","값":"2","설명":"여러 개의 폭죽이 터지는 파티클입니다."},{"이름":"FireField","값":"3","설명":"카툰 느낌의 불꽃 파티클입니다."},{"이름":"FireFieldIntense","값":"4","설명":"카툰 느낌의 강렬한 불꽃 파티클입니다."},{"이름":"ToonTallFire","값":"5","설명":"카툰 느낌의 긴 불꽃 파티클입니다."},{"이름":"ToonFireTorch","값":"6","설명":"카툰 느낌의 원형 불꽃 파티클입니다."},{"이름":"ToonFireTorchIntense","값":"7","설명":"카툰 느낌의 낮은 불꽃 파티클입니다."},{"이름":"RoundFire","값":"8","설명":"원형 불꽃 파티클입니다."},{"이름":"SoftFireBig","값":"9","설명":"얇고 긴 불꽃 파티클입니다."},{"이름":"SoftTallFire","값":"10","설명":"얇고 긴 불꽃 파티클입니다."},{"이름":"SoftFireAdditive","값":"11","설명":"빠르게 흔들리는 불꽃 파티클입니다."},{"이름":"SoftFireAB","값":"12","설명":"빠르게 흔들리는, 작은 불꽃 파티클입니다."},{"이름":"SpikyFireBigAdditive","값":"13","설명":"크고 날카로운 불꽃 파티클입니다."},{"이름":"SpikyFireAdditive","값":"14","설명":"작고 날카로운 불꽃 파티클입니다."},{"이름":"FireFlies","값":"15","설명":"반딧풀이 파티클입니다."},{"이름":"LightningOrbSharp","값":"16","설명":"구슬 모양 전기 파티클입니다."},{"이름":"LightningStrikeSharp","값":"17","설명":"벼락 파티클입니다."},{"이름":"LightningStrikeSharpTall","값":"18","설명":"긴 벼락이 치는 파티클입니다."},{"이름":"LightningOrbSoft","값":"19","설명":"전기 파장을 방출하는 파티클입니다."},{"이름":"LightningBlast","값":"20","설명":"일정한 간격으로 전기 파장을 방출하는 파티클입니다."},{"이름":"LightningStrike","값":"21","설명":"일정한 간격으로 벼락이 내리칩니다."},{"이름":"LightningStrikeTall","값":"22","설명":"일정한 간격으로 긴 벼락이 내리칩니다."},{"이름":"SparkExplosion","값":"23","설명":"스파크가 발생합니다."},{"이름":"SparkLoop","값":"24","설명":"끊이지 않는 스파크가 발생합니다."},{"이름":"SparkRadialExplosion","값":"25","설명":"스파크가 넓은 원형 모양으로 튑니다."},{"이름":"StarVortex","값":"26","설명":"별빛이 중앙으로 모입니다."},{"이름":"UpperCylinder","값":"27","설명":"바닥에서 기둥 모양으로 올라오는 파티클입니다."},{"이름":"Nova","값":"28","설명":"원형 파장이 넓게 퍼지는 파티클입니다."},{"이름":"GoopSpray","값":"29","설명":"액체가 옆에서 새는 파티클입니다."},{"이름":"GoopSprayEffect","값":"30","설명":"액체가 바닥으로 새는 파티클입니다."},{"이름":"DustStorm","값":"31","설명":"넓은 모래 폭풍이 부는 파티클입니다."},{"이름":"BigSplash","값":"32","설명":"거대하고 세찬 파도가 치는 파티클입니다."},{"이름":"Shower","값":"33","설명":"한 곳에서 물이 뿌려지는 파티클입니다."},{"이름":"Aura","값":"34","설명":"바닥에서 오로라가 피어오르는 파티클입니다."},{"이름":"Buff","값":"35","설명":"강한 빛 효과가 바닥에서 위로 피어오르는 파티클입니다."},{"이름":"Charge","값":"36","설명":"한 점으로 큰 입자와 광원이 모여드는 파티클입니다."},{"이름":"ChargeOrb","값":"37","설명":"한 점으로 입자들이 모여드는 파티클입니다."},{"이름":"CircleBurst","값":"38","설명":"광원이 원형으로 폭발하는 파티클입니다."},{"이름":"Enchant","값":"39","설명":"큰 광원을 중심으로 빛과 입자가 모이는 파티클입니다."},{"이름":"PillarBurst","값":"40","설명":"원형으로 빛이 터진 뒤 특정 방향으로 입자를 발사하는 파티클입니다."},{"이름":"SpinField","값":"41","설명":"회전하는 원을 중심으로 입자를 생성하는 파티클입니다."},{"이름":"FlamethrowerSharp","값":"42","설명":"빠르게 원형의 화염이 방사되는 파티클입니다."},{"이름":"FlamethrowerSoft","값":"43","설명":"원형 화염이 방사되는 파티클입니다."},{"이름":"FlamethrowerSpiky","값":"44","설명":"느린 화염이 방사되는 파티클입니다."},{"이름":"FlamethrowerToony","값":"45","설명":"카툰 느낌의 원형 화염이 방사되는 파티클입니다."}]

# Methods

[{"index":"UIBasicParticleType CastFrom(number value) (Static)","0":"숫자를 해당 타입으로 변환합니다."}]

[{"index":"UIBasicParticleType CastFrom(string value) (Static)","0":"문자열을 해당 타입으로 변환합니다."}]
Entity, Component, Property

# 학습 과정 소개

Entity와 Component 그리고 Property에 대해서 개념을 이해합니다.

# Entity

엔티티는 메이플스토리 월드 내에서 존재하는 객체입니다. 아래의 그림에서 Entity는 어떤 것들일까요? [png](1634523787794b80552669cd948a59e89f799d0a016fe)   
빨간색을 칠한 부분이 Entity입니다. 그뿐만 아니라 보이지는 않지만 돌아가고 있는 모든 것들이 Entity입니다. [png](16345239132331e370f40d8cb452aa323567c080660a0)   
메이플스토리 월드에서는 실제로 수많은 Entity가 배치되어 있고 실시간으로 생성, 변경, 삭제됩니다. Entity들이 실제 게임상에서 활동함으로써 시각적으로 보이며, 내부적으로 로직이 돌아가게 됩니다.   
그럼 Entity는 뭐로 구성이 되어 있을까요?

# Component

Entity는 Component들로 구성되어 있으며 Component들의 집합체로 볼 수 있습니다. Component는 각각의 요소를 담당하고 있으며 각각의 기능을 담당합니다.   
피자를 예로 들어볼까요? [png](163547555559905a1c30c66a24b689e06baf34fc3a750)   
내 앞에 완성된 피자가 있다고 생각해봅시다. 이 피자는 향기도 나며 먹을 수 있습니다. 이 피자는 Entity에 해당합니다.   
위 피자를 구성하고 있는 것은 토마토, 도우, 소스 등이 있습니다. 그리고 보이지는 않지만 조리 방법 같은 것도 있습니다. 이것들이 모두 Component입니다.   


  * 토마토 Component
  * 도우 Component
  * 소스 Component
  * 조리법 Component   
Component는 각각의 기능을 담당하며 때로는 다른 Component와 결합하여 다른 효과가 날 수도 있습니다. 이렇게 각각을 Component로 분리하는 이유는 재사용성이 높기 때문입니다. 예를 들어서 다른 피자를 만들고 싶다고 할 때   

  * 치즈 피자 = 도우 + 소스 + 치즈 + 오븐 조리
  * 파인애플 피자 = 도우 + 소스 + 치즈 + 파인애플 + 오븐 조리
  * 냉동 불고기 피자 = 도우 + 소스 + 치즈 + 불고기 + 전자레인지 조리   
이렇게 이미 만들어진 Component를 가지고 잘 조합을 한다면 다른 형태가 나오기 때문이죠   
메이플스토리 월드에서는 프로퍼티 에디터에서 Component를 관리합니다. [png](1635475521115072c13f11f5e4c49abea1035b8234c82)   
앞서 말한 대로 Entity는 Component들로 구성이 되어 있고, Entity Editor를 열면 위 그림과 같이 Component들로 구성이 되었습니다. 따라서 기능이 잘 분리된 Component들을 잘 조합 한다면 내가 원하는 형태로 원하는 동작을 할 수 있는 Entity를 제작할 수 있습니다.   
그렇다면 정해진 Component만을 조합하면 내가 원하는 Entity를 생성할 수 있는 걸까요?



# Property

Property는 각 Component의 세부사항을 설정합니다. Component에서 예시를 든 피자로 다시 돌아와 볼까요?   
세 명의 아이가 페퍼로니 피자를 먹고 싶어 합니다. 철수는 페퍼로니가 2배들어 있는 피자를 원하고, 영희는 들어 있는 치즈가 체다가 아닌 모짜렐라 치즈를 원합니다. 윤후는 사이즈를 조금 더 크게 먹고 싶습니다.   
기존에 도우 Component, 페퍼로니 Component, 치즈 Component 가 있습니다. 자, 어떻게 하면 될까요?

철수는 페퍼로니 2배 Component를 추가하고 영희는 모짜렐라 치즈 Component를 추가하고 윤후는 도우 2배 Component, 페퍼로니 2배 Component, 치즈 2배 Component를 추가합니다.   
이렇게 하면 원하는 형태의 피자(Entity)를 만들 수 있습니다. 하지만 Component의 재사용성이 떨어지는군요. 앞서서는 Component가 재사용성이 높다고 하였는데 결국 다 따로 만들어 줘야 하는군요.   
그럼 어떻게 하면 될까요?   
바로 Property를 이용하는 겁니다. Property는 Component에서 주요 설정이 필요한 항목들을 의미합니다. 그렇기에 같은 Entity가 같은 Component를 사용하더라도 Property 값이 다르면 다르게 동작하게 할 수 있는 거죠.   
예를 들어서 도우 Component에는 "Size"라는 Property가 있습니다. 치즈 Component에는 "Size"와 "치즈 Type" 이라는 Property가 있고 페퍼로니 Component에는 "Size"라는 Property가 있다고 한다면, 세 친구 모두 같은 Component를 사용한 피자(Entity)를 만들 수 있습니다. 물론 각각의 Property는 다르지만요.   
다시 메이플스토리 월드로 돌아와서 이처럼 각각의 Component는 Property들로 세부 속성을 정할 수 있습니다. 말풍선을 뿌릴 수 있는 ChatBalloonComponent에 대해서 살펴볼까요?

[{"index":"BalloonScale","0":"[png](16345465139383799f3fe0d2a45f694d9126878968370)말풍선의 크기를 설정합니다. 값이 커질수록 말풍선의 크기도 커집니다."},{"index":"FontSize","0":"[png](1634546537630dd90d539b29b4f15bf01cdb6eec31a1a)말풍선 텍스트의 크기를 설정합니다. 값이 커질수록 텍스트 크기도 커집니다."}]

이 ChatBalloonComponent는 Scale과 FontSize라는 Property를 가지고 있습니다. 각각의 속성에 따라 Entity별로 다르게 설정할 수 있으며, 각각 다르게 동작합니다.
배지 등록하기

# 학습 과정 소개

배지는 크리에이터가 설정한 특정 미션을 달성할 때 이용자가 획득할 수 있는 업적을 의미합니다. 배지는 유저의 달성 목표를 보여주기 위해 사용하거나, 수집 욕구를 촉발해 월드를 끊임없이 즐길 수 있게 만드는 용도로 사용합니다.

# 배지 등록하기

배지를 등록하는 방법은 두 가지입니다. 메이플스토리 월드  혹은 메이커 내에서 등록이 가능합니다. 등록 화면과 절차는 동일하므로 크리에이터가 선호하는 곳에서 배지를 등록할 수 있습니다. 배지를 등록할 때는 배지 등급, 획득 시간, 배지 섬네일을 필수 입력해야 하며, 필요에 따라 배지 설명을 추가할 수 있습니다.

[png](16680711660191aafa3cb845b49caa729a42385bf1ef1)

[{"번호":"\u0001","이름":"배지 등급","설명":"배지의 등급은 노멀, 레어, 에픽 3가지입니다. 각 등급은 크리에이터가 정의할 수 있습니다. 배지 구분이 어려운 경우 아래와 같은 구분 방식을 참고할 수 있습니다. 배지 등록 시 반드시 이름을 입력해야 합니다. 노멀: 획득하기 쉬운 난도의 업적일 경우레어: 도달하기 어려운 난도의 업적일 경우에픽: 도달하기 매우 어려운 난도의 업적일 경우"},{"번호":"\u0001","이름":"배지 이름","설명":"유저에게 보일 배지 이름을 입력합니다. 최대 50자까지 작성할 수 있습니다."},{"번호":"\u0001","이름":"획득 기한","설명":"월드에서 유저가 배지를 획득할 수 있는 기한을 정합니다. 무기한: 월드에서 배지를 언제든지 획득할 수 있습니다.유기한: 정해진 기간 내에만 배지를 획득할 수 있게 설정할 수 있습니다. 획득 시작일과 종료일, 시간까지 설정할 수 있습니다. 설정한 획득 시작일이 되면 배지의 상태가 획득 가능 상태로 변경되며 배지 획득이 가능해집니다."},{"번호":"\u0001","이름":"출시 여부","설명":"배지의 출시 여부를 설정합니다. 그룹 월드의 경우 그룹장만 출시 여부를 설정할 수 있습니다. 미출시: 배지를 출시하지 않습니다. 출시한 배지를 미출시 상태로 변경하면 웹 상점 및 월드 상품 리스트에서 제외되고, 판매할 수 없습니다. 이미 배지를 가진 유저의 배지 목록에서도 보이지 않습니다.출시: 배지를 출시합니다."},{"번호":"\u0001","이름":"배지 섬네일","설명":"유저가 획득하는 배지의 이미지 파일을 업로드할 수 있습니다. 2MB 이하의 jpg, png 파일을 1개만 등록 가능하며 120x120 px 크기의 이미지 사용을 권장합니다. 배지 등록 시 이미지를 반드시 등록해야 합니다."},{"번호":"\u0001","이름":"배지 설명","설명":"유저에게 보일 배지 설명을 입력할 수 있습니다. 설명 입력은 선택 사항입니다."}]

#### 웹에서 등록

  1. 로그인 후 월드 만들기 선택, 배지를 생성할 월드를 선택합니다.
  2. 배지 관리 - 배지 등록을 선택합니다.
  3. 배치 등록 창에서 배지 등급, 이름, 이미지, 획득 기한을 정한 뒤 등록을 누릅니다.
  4. 배지 관리 창에서 등록한 배지가 추가되고, 상태가 미출시인지 확인합니다.



#### 메이커에서 등록

  1. Panels - Badge Viewer를 엽니다.
  2. 마우스 오른쪽을 눌러 콘텍스트 메뉴를 열고, Create New Badge를 선택합니다.
  3. 열린 새 창에서 웹에서의 등록과 마찬가지로 배지 등급, 이름, 이미지, 획득 기한을 정한 뒤 등록을 누릅니다.
  4. 등록한 배지가 추가되고, 상태가 미출시인지 확인합니다.



# 배지 상태

배지의 상태는 총 5개로 구분됩니다. 메이커에서 테스트할 때는 모든 상태에서 획득할 수 있습니다. 월드에서 실제로 획득하기 위해서는 배지의 상태가 획득 가능이어야 합니다.

[{"이름":"미출시","설명":"출시 여부를 '미출시'로 설정한 상태입니다. 판매 기간이 되어도 월드 웹 배지 페이지나 클라이언트 내에서도 노출되지 않고 획득도 불가합니다. 플레이어가 보유한 배지도 리스트에서 확인이 불가합니다."},{"이름":"획득 대기","설명":"획득 기간의 시작일 이전에 등록이 완료된 상태로 시작일에 맞춰 자동으로 획득 가능 상태로 변경됩니다. 출시 상태로 획득 기간을 지정하면, 획득 시작일에 맞춰 '획득 가능' 상태로 자동 변경됩니다."},{"이름":"획득 가능","설명":"배지를 획득할 수 있습니다. 획득 기간을 설정한 경우, 해당 기간에만 배지를 획득할 수 있습니다."},{"이름":"획득 불가","설명":"획득 가능 기간이 지난 상태로 배지를 획득할 수 없습니다."},{"이름":"제제 중","설명":"제재 처리된 배지로 출시 여부, 획득 기간 관계없이 획득이 불가능합니다. 크리에이터는 제재 배지를 수정할 수는 있으나, 제재 상태 관련 문의는 고객센터에 문의해야 합니다."}]

# 그룹 월드에서 상품 등록

배지 등록, 수정 모두 그룹장만 가능합니다.

##### 참고 가이드

  * [배지 관리하기](/docs/?postId=663)
  * [배지 서비스 활용하기](/docs/?postId=664)
스프라이트 색상 조정

# 학습 과정 소개

스프라이트를 간단하게 여러 색상으로 변경할 수 있습니다. 스프라이트와 웹스프라이트의 차이점과 스프라이트 색상 변경 방법을 알아보겠습니다.

# 스프라이트

2D 이미지를 스프라이트(Sprite)라 칭합니다. 스프라이트는 위치, 크기, 회전 등을 변경할 수 있습니다. 스프라이트마다 고유한 RUID 값을 갖고 있습니다. RUID 값을 이용해 간편하게 빈 모델에 스프라이트를 넣거나, 변경할 수 있습니다. 크리에이터가 직접 제작한 이미지 파일을 메이커에 업로드하면 RUID 또한 자동으로 발급됩니다.

> Tip. RUID란 스프라이트, 애니메이션, 사운드 등 다양한 리소스가 가진 고유한 아이디 값입니다.

# 활용 예시

#### MSW의 리소스 이용하기

  1. 리소스 검색창에서 원하는 리소스를 검색합니다.   
예시 RUID : 214069132ceb4962b374c8080fe265ef
  2. RUID를 복사한 후, Workspace - NativeModel - MapObject를 선택해 배치합니다.  
[gif](16353870233517f049b81ee534a72bd40584976a70c91)
  3. SpriteRendererComponent의 SpriteRUID 프로퍼티에 복사한 RUID를 입력합니다.   
[png](168775319866329eb7f3e76cb4d72a8729ab30e0cc030)



#### 크리에이터가 만든 리소스 이용하기

  1. Workspace - MyDesk - Import From - Import Image를 선택, 외부에서 사용할 이미지를 불러옵니다.
  2. Workspace - BaseEnvironment - NativeModel - MapObject를 선택해 [png](163452458863504f49c7a23aa4a41af56b5b4611a6daf)Scene에 배치합니다.
  3. SpriteRendererComponent의 SpriteRUID 프로퍼티에 복사한 RUID를 입력합니다.



# 웹 스프라이트

웹에 있는 이미지의 Url을 이용해 웹 스프라이트(Web Sprite)로 사용할 수 있습니다. 직접 제작한 이미지나 메이플스토리 월드에서 제공하는 리소스가 아닌 경우 사용이 가능한지와 활용 범위를 반드시 확인하길 바랍니다.

#### 활용 예시

메이플스토리 라라 아트웍을 스프라이트로 이용할 수 있습니다.

  1. 사용할 이미지 주소를 복사합니다.   
예시 주소: https://lwi.nexon.com/maplestory/common/media/artwork/artwork_108.jpg
  2. Workspace - BaseEnvironment - NativeModel - WebSprite 모델을 선택해 배치합니다.
  3. 모델을 선택해 프로퍼티 에디터 창에서 WebSpriteComponent의 Url에 값을 입력합니다.  
[png](1687753413264ea7d4470867c43b6862bb02387c52d00)
  4. 웹 스프라이트가 적용된 것을 확인합니다.  
[png](16349585335040cdf2dc709064f778ce427cbc7742cde)



# 스프라이트 색상 조정

SpriteRendererComponent와 WebSpriteComponent의 Color 프로퍼티에서 이미지의 색, 명도, 채도, 투명도를 조정할 수 있습니다. [png](1634958560351159c6025128b4a19a8f1ab8637f28572)

[{"번호":"[jpg](1634541272181b5c1a55fcf3d49b19734d25913c38583)","설명":"색상 창에서 마우스를 드래그 해 원하는 값을 찾을 수 있습니다."},{"번호":"[jpg](1634541300837cb541c2f44e046a79bb1901a885aa8ac)","설명":"색상을 조정하는 바입니다."},{"번호":"[jpg](163454131465069e090278448490f965207e9a4a10348)","설명":"투명도를 조정하는 바입니다. 아래로 갈수록 스프라이트가 투명해집니다."},{"번호":"[jpg](1634541326353d8628c1473944497bf376acb7a65ca45)","설명":"new칸에는 새롭게 고른 색상, 아래 current에는 이미 적용된 색상이 보입니다."},{"번호":"[jpg](1634541338689678f574f21e54a6ca533737924124d7e)","설명":"HSV, RGB, Lab 색 공간에 맞는 값을 입력해 원하는 색을 찾을 수 있습니다."},{"번호":"[jpg](163454135201207284554a25b498380fff224cd767f6b)","설명":"투명도를 0-100 사이에서 조정할 수 있습니다. 0에 가까울수록 스프라이트가 투명해집니다."},{"번호":"[jpg](1634541365429e8d9fdf4049149eb96f0ec7fdae4b3d1)","설명":"헥스코드(HexCode)값입니다. 해당 코드를 복사해 다른 스프라이트에 동일한 컬러를 씌울 수 있습니다."},{"번호":"[jpg](1634541383202032ed6f9f38046119acf89fd019b41cf)","설명":"[png](163452458863504f49c7a23aa4a41af56b5b4611a6daf)Scene에서 원하는 곳을 클릭해 색을 추출할 수 있습니다."},{"번호":"[jpg](1634541395594e0bdbc1a69204d11aef5d9fbdf7f7ecd)","설명":"팔레트에서 고른 색을 저장할 수 있습니다. 마지막 칸을 누를 때마다 새로운 칸이 만들어집니다."}]

##### 활용 예시

배치한 스프라이트의 헥스코드 값을 ff53a1으로 변경하면 오른쪽 스프라이트처럼 해당 색이 씌워집니다. [png](16349599595174f2002b15ef9488ba312034ed37a93ed)

# 마무리

기존 스프라이트 색상을 바꾸는 것만으로 새로운 느낌을 줄 수 있습니다. 어둠에 묻힌 세계가 배경인 게임을 제작한다면 모든 엔티티의 명도를 조정해 어두컴컴한 느낌을 줘야 할 것입니다 내 게임에 어울리는 색으로 변경해 게임 분위기와 전체 완성도까지 한층 높일 수 있습니다.

##### 참고가이드

[원하는 이미지 갖고 오기](docs?postId=99) [리소스 찾기](docs?postId=211)
패키지 스토리지

# 학습 과정 소개

메이플스토리 월드에서 제공하는 패키지와 크리에이터가 생성한 패키지를 저장하고, 관리할 수 있는 패키지 스토리지에 대해 알아봅시다.

##### 참고 가이드

  * [패키지의 활용](/docs?postId=647)



# 패키지 카테고리

패키지 스토리지란 개인, 그룹, 메이플스토리 월드가 만든 패키지를 저장하는 보관소입니다. 패키지는 총 두 종류로 나뉩니다.

  * 내 패키지: 개인 제작 월드인 경우 개인이 만든 패키지만 보입니다. 그룹 제작 월드인 경우 그룹에서 만든 패키지만 보입니다.
  * MSW 패키지: 메이플스토리 월드에서 제공하는 공식 패키지입니다. 패키지를 다운로드받아, 내용을 월드에 맞게 자유롭게 수정할 수 있습니다. 공식 패키지는 지속적으로 추가될 예정입니다.



!

[{"번호":"!","이름":"카테고리","설명":"패키지 종류를 구분합니다. 내 패키지와 MSW 패키지로 분류됩니다."},{"번호":"!","이름":"업로드 버튼","설명":"패키지를 패키지 스토리지에 새롭게 올릴 수 있습니다."},{"번호":"!","이름":"검색창","설명":"패키지 이름을 검색할 수 있는 창입니다."},{"번호":"!","이름":"패키지 정보","설명":"상태 아이콘: 패키지의 상태를 나타내는 아이콘입니다.상세 정보: 패키지의 상세 정보를 확인하고, 수정할 수 있습니다.적용 버튼: 패키지를 월드에 내려받거나, 패키지 내용을 업데이트할 수 있습니다."}]

# 패키지 관리하기

패키지의 내용은 편집 화면에서 관리할 수 있습니다.

!

[{"번호":"!","이름":"이미지 추가","설명":"섬네일로 사용할 이미지를 추가할 수 있습니다."},{"번호":"!","이름":"패키지 정보","설명":"패키지 이름과 설명을 입력합니다. 이름은 최대 50자, 설명은 최대 1000자까지 입력할 수 있습니다."},{"번호":"!","이름":"코어 버전","설명":"패키지를 업로드하거나 마지막으로 업그레이드할 때의 메이플스토리 월드의 코어 버전입니다."},{"번호":"!","이름":"등록일","설명":"마지막으로 패키지를 업그레이드한 일자입니다."},{"번호":"!","이름":"업그레이드 로그","설명":"패키지의 업그레이드 기록입니다."},{"번호":"!","이름":"설치 제거","설명":"패키지를 설치하거나 제거할 수 있습니다."}]

# 코어 버전

코어 버전이란 메이플스토리 월드 메이커의 버전을 의미합니다. 패키지를 저장할 때 코어 버전이 함께 저장됩니다. 코어 버전은 Edit - Preferences - 만들기 - Version에서 확인할 수 있습니다. 패키지의 코어 버전과 제작 중인 월드의 코어 버전이 동일하지 않은 경우 메이커가 정상적으로 동작하지 않을 수 있습니다.

# 패키지 등록

  1. Panels - Package Storage를 선택합니다.
  2. [+] 버튼을 눌러 Package Uploader을 엽니다.
  3. 패키지에 포함시킬 엔트리를 선택하고, 이름과 설명을 작성합니다. !
  4. 패키지 버전을 입력합니다. 패키지 내용을 수정할 때마다 버전도 함께 변경해 패키지가 수정되었음을 인식할 수 있게 합니다.



# 패키지 설치

  1. 패키지를 선택하고, [업데이트] 버튼을 누릅니다.
  2. Import Package 창에서 제작 중인 월드에 적용할 패키지의 엔트리를 선택합니다.
  3. Workspace - MyDesk에 패키지가 정상적으로 적용되었는지 확인합니다.



# 패키지 업데이트

업데이트는 수정된 패키지를 월드로 가져오는 기능입니다. 다운받았던 패키지의 내용이 변경된 경우 업데이트를 통해 수정된 내용을 가져올 수 있습니다. 패키지 내용과 월드의 엔트리 내용이 다른 엔트리들만 선택해 업데이트할 수 있습니다. [png](1761566355082f5d996c6d87e4334895c2b3880ac1993)

# 패키지 업그레이드

패키지 스토리지에 추가한 패키지를 수정하고 싶을 때 업그레이드를 사용할 수 있습니다. 패키지를 업그레이드할 때는 패키지 버전을 함께 수정하기를 권장합니다. 만약 1.0 버전으로 시작한 경우 1.1 버전, 2.0 버전 등으로 표기해 다른 사용자가 패키지 내용이 변경되었음을 인식할 수 있게 합니다.

  1. Package Storage에서 업그레이드할 패키지를 선택하고, 콘텍스트 메뉴 - Upgrade Package를 선택합니다. [png](17615660365688a967a6de44f48edaa10038960ef6ff4)
  2. Import Package 창에서 업그레이드할 엔트리를 선택합니다.
  3. 업그레이드 로그와 패키지 버전을 입력합니다.
  4. [Upgrade] 버튼을 누릅니다.



# 패키지 설치 제거

더 이상 필요하지 않은 경우 패키지 스토리지에서 패키지를 활용해 패키지에 포함된 엔트리를 한 번에 삭제할 수 있습니다. 한 번 삭제된 패키지는 복원할 수 없습니다. 이때 패키지의 엔트리를 기반으로 하는 항목이 남아있는 경우 월드가 정상적으로 동작하지 않을 수 있으므로 삭제 후 월드에 문제가 발생하지 않는지 확인해보아야 합니다.

  1. 삭제할 패키지의 섬네일에서 편집 화면 ! 창 버튼을 누릅니다.
  2. 설치 제거 버튼을 누릅니다.
  3. Workspace - MyDesk에서 패키지의 엔트리들이 제거된 것을 확인합니다.