패키지의 활용

# 학습 과정 소개

메이플스토리 월드에서는 Workspace의 모델, 스크립트 컴포넌트, 데이터 셋과 같은 엔트리를 하나의 파일로 묶어 외부로 공유할 수 있는 패키지 기능을 제공하고 있습니다. Workspace의 엔트리를 패키지 파일로 내보내거나, 패키지 파일을 월드에 불러오는 방법에 대해 알아봅니다.

# 패키지 소개

패키지는 특정 엔트리를 묶은 파일입니다. 패키지 파일을 이용해 제작한 월드의 일부를 외부와 공유하거나, 타인이 공유한 패키지를 내 월드에 사용할 수 있습니다. 패키지 내보내기, 불러오기 창에서는 폴더 구조와 계층 구조 형태로 내용을 확인할 수 있습니다.

  * 폴더 구조: Workspace의 구조 대로 엔트리를 보여줍니다.
  * 계층 구조: 엔트리를 타입별로 구별해 보여줍니다.



[{"index":"폴더 구조","0":"[png](171031359711989a5bc8dd99c4e40b4c0298413a26f33)"},{"index":"계층 구조","0":"[png](17103136145179dda4111bd25414698ef8fc0c99a3b7a)"}]

# 패키지 내보내기

  1. Workspace - MyDesk에서 패키지로 내보낼 엔트리들을 선택합니다.
  2. 콘텍스트 메뉴에서 Export To Package를 눌러 내보내기 창을 엽니다. [png](1710308131839b0ccc1f6757d4c8497b97b6558157c70)
  3. 엔트리 선택이 완료되면 하단 [Export] 버튼을 클릭합니다. 필요한 경우 이름을 변경하고 [저장] 버튼을 클릭합니다. [png](1710313472618c2be293f9d514ad5b85ac749245baf1a)



# 내보내기 관련 규칙

#### 리소스 내보내기

이미지, 사운드 같은 리소스 엔트리를 패키지에 포함하기 위해서는 월드를 저장해야 합니다. 리소스 엔트리에 포함된 리소스가 월드 저장 시 서버에 업로드되며, 서버에 업로드된 리소스 엔트리들만 패키지로 정상 동작합니다. 리소스 엔트리에는 RUID가 저장되며, 다른 월드에서 해당 패키지를 불러오면 RUID를 통해 서버에 저장된 리소스를 가져오기 때문입니다.

#### 엔트리 상속 관계

부모 - 자식 관계에 있는 엔트리를 패키지로 내보내면 부모 - 자식 관계를 유지합니다. 확장한 엔트리만 선택해 패키지로 내보내면 부모 엔트리를 자동으로 패키지에 포함됩니다. 예를 들어 부모인 Model_EmptyEntity를 확장한 Model_EmptyEntity_child 자식을 만들었다고 생각해 봅시다. Model_EmptyEntity_child만 선택해 패키지로 내보내면, 부모가 함께 포함된 것을 확인할 수 있습니다.

[png](1711441490696cf0346c49cc348d7abd73a5fff97de99)

#### 네이티브 엔트리 제한 사항

메이플스토리 월드에서 제공하는 네이티브 스크립트와 네이티브 모델은 패키지로 내보낼 수 없습니다. 네이티브 모델 자체에 새로운 컴포넌트를 추가한 경우, 그 네이티브 모델을 확장한 경우 또한 패키지로 내보낼 수 없습니다. 패키지를 불러올 때 모든 정보를 불러올 수 없기 때문입니다. 예를 들어 네이티브 모델에 ComponentA를 추가하고 이를 확장한 모델을 만들었다고 생각해 봅시다. 이 확장한 모델은 ComponentA를 상속받게 됩니다. 모델B를 다른 월드에서 불러올 때 새로운 월드에는 ComponentA가 포함된 네이티브 모델이 없기 때문에 모델B가 크리에이터의 의도와 다르게 추가될 수 있으므로 패키지로 내보내기가 불가능합니다.

[png](1711520919542cc7ecbdb36ed4388a710eccb0248ac79)

확장한 네이티브 엔트리의 경우 패키지로 내보낼 수 있습니다. 확장한 엔트리가 네이티브 엔트리의 정보를 갖고 있기 때문에 새로운 월드에서 상속받을 네이티브 모델을 자동으로 찾습니다.

[png](17115264454698f2775b2d21349e2adf74871b0d2cda5)

네이티브 모델을 상속받은 모델에 새로운 기능을 넣어서 패키지로 만들고 싶다면 확장한 모델에 컴포넌트를 추가하거나, 네이티브 모델 씬에 배치해 편집한 뒤 Create Model From Entity로 만들어 사용하는 것을 권장합니다.

[png](171152096321699e779d3b6e14078be21089b366ed7f3)

# 패키지 가져오기

  1. Import Package를 선택한 후 불러올 패키지를 선택합니다. 패키지를 불러오는 방법은 두 가지입니다.

     * Create - Import Package를 눌러 불러올 패키지를 선택합니다.
     * Workspace - Import From - Import Package를 눌러 불러올 패키지를 선택합니다.
  2. 불러올 엔트리를 선택한 후 [Import] 버튼을 누릅니다. [png](176164724148389e267f1087f479291a389c266bfb9a0)

> Tip. 패키지를 불러올 때 월드는 자동으로 직전 월드 상태를 저장합니다. File - Rivisions에서 자동으로 저장된 월드를 확인할 수 있습니다. [png](17049588104003484bdc4e4024c41a5a7b513f02ea217)




# 가져오기 관련 규칙

패키지를 월드로 가져올 때 엔트리의 변경점에 따라 상태 아이콘이 나타납니다. 기존 월드의 엔트리 내용이 달라질 수 있으니 패키지의 엔트리 상태를 확인하고 패키지를 가져와야 합니다.

[{"아이콘":"[png](17049520316499abe1ca8a9944aafa17e610f838fd71c)","설명":"변경된 내용이 없는 엔트리입니다."},{"아이콘":"[png](170495172860025bc9882ab1844618b4839224af7afb5)","설명":"내용이 다른 엔트리입니다. 가져올 때 내용을 덮어씌웁니다."},{"아이콘":"[png](1704952016010a8122bcebacc4831a18be2b30c2f6e21)","설명":"현재 월드와 경로가 다른 엔트리입니다. 현재 월드의 경로가 유지됩니다."},{"아이콘":"[png](1704951745392fd9a4eef1a2a44beb5a7e7f811782655)","설명":"이름이 변경된 엔트리입니다. 가져올 때 기존의 엔트리 이름을 변경합니다."},{"아이콘":"[png](17049517636351f8489cf0bdc424a8066cf85f6207987)","설명":"엔트리의 이름은 동일하지만, 유형이 다르거나 다른 크리에이터가 제작해 내용이 다른 엔트리일 수 있습니다. 엔트리를 가져올 수 없습니다."},{"아이콘":"[png](170495199953619842ee2757d465faee85fa3e285b1c3)","설명":"엔트리의 Id는 동일하지만, 타입이 다른 엔트리이거나 다른 크리에이터가 제작해 내용이 다른 엔트리일 수 있습니다. 가져올 수 없습니다."}]