> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-ko/sdk7/kinds-of-projects/smart-wearables.md).

# 스마트 웨어러블

상호작용 기능이 있는 웨어러블 만들기

스마트 웨어러블은 글로벌 씬의 한 유형입니다. 마치 [휴대형 경험](/creator/content-creator-ko/sdk7/kinds-of-projects/portable-experiences.md), 플레이어가 메타버스를 이동하면서 함께 가져가는 게임플레이입니다. 예를 들어, 글로벌 씬을 실행하는 동안 플레이어는 Genesis Plaza의 바닥에서 눈덩이를 집어 다른 씬으로 이동한 뒤, 같은 게임을 플레이하고 있는 다른 플레이어에게 눈덩이를 던질 수 있습니다.

스마트 웨어러블은 플레이어가 특정 옷을 착용하면 활성화되는 휴대형 경험입니다. 스마트 웨어러블은 제트팩처럼 플레이어가 날 수 있게 하는 새로운 능력을 부여하거나, Genesis City 전체에 걸쳐 무작위로 코인을 배치해 수집하도록 하는 것처럼 세계의 나머지 위에 새로운 콘텐츠 층을 추가할 수 있습니다.

{% hint style="warning" %}
**📔 참고**: 스마트 웨어러블은 SDK 7로만 만들 수 있습니다.

해당 **Creator Hub** 현재 Smart Wearables 프로젝트 생성을 지원하지 않습니다.
{% endhint %}

## 시작하기

### CLI 사용하기

1. 새 폴더에서 명령줄을 열고 다음을 실행하세요

`npx @dcl/sdk-commands init --project smart-wearable`

이 명령은 새 스마트 웨어러블을 위한 기본 파일과 구조를 만듭니다.

## 템플릿의 파일들

완전히 새로운 Smart Wearable 프로젝트의 폴더는 다음과 매우 비슷합니다 [Decentraland 씬](/creator/content-creator-ko/sdk7/kinds-of-projects/scene-files.md), 하지만 다음과 같은 차이점이 있습니다:

* `wearable.json` 휴대형 경험의 모든 메타데이터를 포함합니다
* 검은 안경 한 쌍을 위한 자리 표시자 3D 모델(glasses.glb)과 썸네일(glasses.png)이 있습니다. 이를 여러분이 만들고 있는 실제 웨어러블로 교체해야 합니다
* `scene.json` 훨씬 더 짧으며, parcel이나 spawn point처럼 웨어러블과 관련 없는 속성은 포함하지 않습니다

## wearable.json에 대하여

기본 `wearable.json` 파일은 다음과 같습니다:

```json
{
	"data": {
		"replaces": [],
		"hides": [],
		"tags": ["special", "new", "eyebrows"],
		"representations": [
			{
				"bodyShapes": [
					"urn:decentraland:off-chain:base-avatars:BaseMale",
					"urn:decentraland:off-chain:base-avatars:BaseFemale"
				],
				"mainFile": "glasses.glb",
				"contents": ["glasses.glb"],
				"overrideHides": [],
				"overrideReplaces": []
			}
		],
		"category": "eyewear"
	},
	"name": "Smart Wearable Example",
	"description": "Put the glasses to see a new world",
	"rarity": "mythic"
}
```

다음 필드는 필수입니다 `wearable.json`:

* `id`: 스마트 웨어러블의 고유 ID입니다.
* `name`: 사용자가 마켓플레이스에서 보게 될 웨어러블의 이름입니다
* `description`: 사용자가 마켓플레이스에서 보게 될 웨어러블의 설명입니다. 사용자는 구매 전에 기능을 미리 볼 수 없으므로, 스마트 웨어러블이 무엇을 할 수 있는지 반드시 명시하세요.
* `rarity`: 토큰의 희귀도 공급량입니다. 가능한 값은 다음과 같습니다:
  * unique (1 copy)
  * mythic (10 copies)
  * exotic (50 copies)
  * legendary (100 copies)
  * epic (1000 copies)
  * uncommon (10.000 copies)
  * common (100.000 copies)

{% hint style="warning" %}
**📔 참고**: 프로젝트를 기존 프로젝트에서 포크했고 그 안에 `id`, 웨어러블을 게시하기 전에 해당 값이 고유한지 확인하세요. 다음을 사용하세요 [uuidgenerator.net](https://www.uuidgenerator.net/) 새 무작위 UUID를 생성하려면
{% endhint %}

다음 필드도 선택적으로 포함할 수 있습니다. 이 설정은 스마트 웨어러블을 업로드한 후 Builder UI에서도 구성할 수 있습니다.

* `data`: 다음을 포함합니다
  * `대체합니다`: 이 웨어러블을 착용할 때 이 카테고리의 기본값에 더해 함께 해제해야 하는 다른 웨어러블 카테고리 목록입니다. 예: 상체 케이프를 착용하면 발도 숨깁니다.
  * `hides`: 이 웨어러블을 착용할 때 이 카테고리의 기본값에 더해 숨겨져야 하되(해제되지는 않는) 다른 웨어러블 카테고리 목록입니다.
  * `tags`: 마켓플레이스에서 웨어러블을 검색할 수 있게 하는 태그입니다.
  * `representations`:
    * `bodyShapes`: 이 웨어러블을 사용할 수 있는 아바타 표현 목록입니다. 모든 스마트 웨어러블은 남성 및 여성 바디 형태 모두에서 사용할 수 있어야 합니다.
    * `mainFile`: 웨어러블의 3D 모델이 들어 있는 주 파일입니다.
    * `contents`: 웨어러블의 3D 모델을 렌더링하는 데 사용되는 파일의 전체 목록입니다. 예를 들어, 3D 모델에 텍스처가 별도 파일로 포함될 수 있습니다.
    * `overrideHides`: 기본 hide 동작의 예외 사항 *hide* 이 웨어러블 카테고리의 동작.
    * `overrideReplaces`: 기본 hide 동작의 예외 사항 *replace* 이 웨어러블 카테고리의 동작.
  * `category`: 사용할 웨어러블 카테고리는 무엇입니까? 가능한 값은 다음과 같습니다:
    * 'eyebrows'
    * 'eyes'
    * 'facial\_hair'
    * 'hair'
    * 'mouth'
    * 'upper\_body'
    * 'lower\_body'
    * 'feet'
    * 'earring'
    * 'eyewear'
    * 'hat'
    * 'helmet'
    * 'mask'
    * 'tiara'
    * 'top\_head'
    * 'skin'
    * 'hands\_wear'
* `menuBarIcon`: 이 휴대형 경험을 나타내기 위해 “experiences” 메뉴에서 사용할 이미지입니다. 이 이미지는 폴더의 루트 수준에 있어야 합니다. 권장 이미지 크기는 256x256입니다.
* `model`: 웨어러블에 사용할 3D 모델입니다. 이 파일은 폴더의 루트 수준에 있어야 합니다.
* `bodyShape`: 이 웨어러블과 호환되는 아바타 바디 타입입니다. 가능한 값:
  * male
  * female
  * both
* `collectionAddress`: 게시된 웨어러블 컬렉션의 이더리움 주소입니다. 이 주소는 게시 시 할당되며, 비워 둘 수 있습니다.

## 썸네일

다음 이름의 이미지를 포함해야 합니다 `thumbnail.png` 이 이미지는 폴더의 루트 수준에 있어야 합니다. 이 이미지는 백팩과 마켓플레이스 모두에서 2D로 웨어러블을 나타내는 용도로 표시됩니다. 권장 필수 이미지 크기는 256x256입니다.

플레이어의 기대를 적절히 설정하고 여러분의 창작물을 올바르게 나타내는 이미지를 고르세요.

## 미리보기

휴대형 경험의 미리보기를 실행하는 것은 씬의 미리보기를 실행하는 것과 같습니다. 다음을 클릭하세요 **Play** Creator Hub에서, 또는 다음을 실행하세요 `npm run start` 명령줄에서. 만약 `wearable.json` 파일이 올바르게 구성되고 프로젝트가 스마트 웨어러블로 인식되면, 주변에서 보이는 모든 것은 기본 빈 parcel이라는 것을 알 수 있습니다. 이 미리보기 모드에서는 특정 parcel 집합에 제한되지 않으며, 세계 어디에나 3D 모델이나 사운드를 추가할 수 있습니다.

스마트 웨어러블이 씬의 맥락에서 어떻게 동작하는지 테스트하려면, 다음을 사용해 하나 또는 여러 씬의 미리보기를 실행하는 것과 동시에 웨어러블의 미리보기도 실행할 수 있습니다 [Workspace](/creator/content-creator-ko/sdk7/kinds-of-projects/workspaces.md). 예를 들어, 다음과 함께 스마트 웨어러블을 실행할 수 있습니다 [Genesis Plaza](https://github.com/decentraland-scenes/Genesis-Plaza) 씬에서, 붐비는 씬이나 엘리베이터 안 등에서 어떻게 동작하는지 테스트할 수 있습니다.

## 팁

* 엔티티를 배치할 때, 위치는 Genesis Plaza의 0,0 좌표를 기준으로 한 전역 좌표라는 점에 유의하세요.
* 주변 플레이어에 반응하려면:
  * 참조 [모든 플레이어 가져오기](/creator/content-creator-ko/sdk7/interactivity/user-data.md#fetch-all-players) 주변의 다른 플레이어로부터 데이터를 가져오는 방법을 확인하세요.
  * 스마트 웨어러블, 주변 씬, 다른 플레이어의 로딩 순서는 상황에 따라 달라질 수 있다는 점에 유의하세요. 플레이어가 스마트 웨어러블을 이미 착용한 상태로 Decentraland에 들어오면, 웨어러블의 글로벌 씬이 다른 플레이어보다 먼저 로드될 가능성이 높습니다. 반면 플레이어가 먼저 씬에 들어온 뒤 웨어러블을 착용하면, 웨어러블의 씬이 실행되기 시작할 때쯤에는 다른 플레이어가 이미 로드되어 있을 가능성이 높습니다.
  * 멀티플레이어 경험의 경우, 플레이어가 자신의 realm 안의 섬에 연결될 때까지 기다리세요. realm 데이터를 가져와 ‘room’ 필드를 확인하세요. ‘room’ 필드가 null이면 플레이어는 아직 섬에 연결되지 않은 상태이며 다른 플레이어도 아직 로드되지 않습니다. 이 값을 ‘room’ 필드가 나타날 때까지 1초마다 주기적으로 확인한 다음, 그때만 로직을 초기화할 수 있습니다.
* 주변 씬과 상호작용하려면:
  * 주변 씬이나 다른 휴대형 경험에 직접 지시를 보낼 수는 없습니다.  `messageBus` 는 현재 각 휴대형 경험/씬마다 샌드박스 처리되어 있습니다.
  * 중간 서버를 사용해 휴대형 경험과 씬 사이에 정보를 주고받을 수 있습니다.
  * 레이캐스트를 수행하면 주변 씬의 엔티티 콜라이더에 대한 충돌을 감지할 수 있습니다. 이를 통해 정확한 충돌 위치, 법선 방향, 심지어 3D 모델의 엔티티 이름과 메쉬 이름까지 알 수 있습니다. 이는 SDK7로 작성된 씬의 엔티티에 명중했을 때만 작동합니다.
* 휴대형 경험 종료하기: 다음을 실행 `kill()` 메서드로 휴대형 경험을 자체 종료하세요.

## 게시

스마트 웨어러블을 게시하려면:

1. 다음에 있는 정보가 `wearable.json` 정확해야 합니다. 다른 프로젝트를 시작점으로 사용했다면, 다음이 `id` 고유 식별자이며 다른 웨어러블에서 사용되지 않았는지 확인하세요.
2. 다음을 실행하세요 `npm run pack` 프로젝트 폴더에서. 그러면 다음이 생성됩니다 `smart-wearable.zip` 프로젝트 폴더에 있는 파일

{% hint style="warning" %}
**📔 참고**: 다음의 출력은 `npm run pack` 압축 해제된 내보내기 프로젝트의 크기를 표시하며, 3MB 이하여야 합니다. 그보다 크면 Builder에서 허용되지 않습니다.
{% endhint %}

3. Builder를 열고 Collections 탭을 연 다음, +를 클릭하여 새 웨어러블을 업로드하세요.
4. 압축된 `smart-wearable.zip` 파일을 Builder에, 모든 정보가 정확한지 확인하세요.

> 참고: 웨어러블에 서로 다른 모델 표현이 포함되어 있다면, 다음과 같은 우회 방법을 사용해야 합니다:
>
> 1. 프로젝트에서 각 표현마다 새 폴더를 만드세요(`male` 와 `female`), 그리고 각 표현의 3D 모델을 해당 폴더에 넣으세요.
> 2. 다음을 `wearable.json` 파일을 새 표현을 포함하도록 업데이트하세요.
> 3. ```lang-json
>    "representations": [{
>      "bodyShapes": ["urn:decentraland:off-chain:base-avatars:BaseMale"],
>      "mainFile": "male/glasses.glb",
>      "contents": ["male/glasses.glb"],
>      "overrideHides": [],
>      "overrideReplaces": []
>    },
>    {
>      "bodyShapes": ["urn:decentraland:off-chain:base-avatars:BaseFemale"],
>      "mainFile": "female/glasses.glb",
>      "contents": ["female/glasses.glb"],
>      "overrideHides": [],
>      "overrideReplaces": []
>    }],
>    ```
> 4. 다음을 실행하세요 `npm run pack` 새 smart-wearable.zip 파일을 생성하려면.
> 5. 새 smart-wearable.zip 파일을 Builder에 끌어다 놓으세요.

5. 웨어러블 편집기를 열고 이 웨어러블이 착용되어 있을 때 다른 웨어러블 카테고리가 비활성화되도록 “hide” 및 “remove” 카테고리가 올바르게 설정되어 있는지 확인하세요.
6. 이것과 다른 웨어러블을 포함한 새 컬렉션을 만드세요.
7. “Mint Items” 옆의 세 점 아이콘을 클릭하고 “See in world”를 선택하세요. 그러면 Sepolia에서 Explorer가 열리고, Decentraland에서 컬렉션의 모든 웨어러블을 시험해 볼 수 있으며, Genesis Plaza를 돌아다니는 것처럼 더 현실적인 상황에서 어떻게 동작하는지도 볼 수 있습니다.
8. 이제 웨어러블을 게시할 준비가 되었습니다.

## 제한된 작업

남용을 방지하기 위해 특정 기능은 휴대형 경험에서 기본적으로 허용되지 않으며, 권한 플래그를 추가해야 합니다.

참조 [필수 권한](/creator/content-creator-ko/sdk7/kinds-of-projects/scene-metadata.md#required-permissions) 에 대한 자세한 내용.

## 제한 사항

> 중요: 스마트 웨어러블 전체는 3MB 이내여야 합니다. 여기에는 3D 모델, 썸네일, 코드, 라이브러리, 사운드 파일, 추가 3D 모델, UI 이미지 등이 모두 포함됩니다. 이 제한은 압축되지 않은 폴더 기준입니다. Builder는 이보다 큰 웨어러블의 업로드를 허용하지 않습니다. 휴대형 경험의 크기를 확인하려면 다음을 실행하세요 `npm run pack`, 프로젝트 크기는 명령의 출력 텍스트에 표시됩니다. 또한 생성된 `smart-wearable.zip` 파일을 압축 해제한 뒤 폴더 크기를 확인하세요.

스마트 웨어러블은 웨어러블을 착용한 플레이어에게만 휴대형 경험을 실행합니다. 다른 플레이어는 그 효과를 보지 못합니다. 예를 들어, 휴대형 경험이 플레이어를 따라다니는 반려동물을 렌더링하더라도 주변의 다른 플레이어는 이 반려동물을 볼 수 없습니다. 그러나 다른 플레이어는 웨어러블의 씬의 일부로 실행되는 아바타 애니메이션은 볼 수 있으며, 심지어 [사용자 지정 아바타 애니메이션](/creator/content-creator-ko/sdk7/interactivity/avatars/avatar-animations.md#custom-animations) 도 스마트 웨어러블 파일의 일부로 업로드될 수 있습니다.

스마트 웨어러블은 플레이어가 착용하고 있을 때만 작동합니다. 이 때문에 플레이어는 활성화된 스마트 웨어러블을 제한된 개수만 가질 수 있으며, 몸의 어느 부위를 차지하느냐에 따라 일부는 다른 것과 호환되지 않습니다. 예를 들어, 모자 두 개를 동시에 착용할 수는 없고, 헬멧과 머리카락을 동시에 착용할 수도 없습니다.

다른 웨어러블에 의해 웨어러블이 “hidden”되지만 “removed”되지는 않는다면, 해당 웨어러블이 보이지 않더라도 스마트 웨어러블은 계속 켜져 있을 수 있습니다.

## 예시

[스마트 웨어러블 샘플](https://github.com/decentraland/smart-wearable-sample))


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-ko/sdk7/kinds-of-projects/smart-wearables.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
