> 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/scene-files.md).

# 씬 파일

새 씬에서 생성되는 기본 파일입니다.

이후 [새 씬을 생성하면](/creator/content-creator-ko/sdk7/getting-started/sdk-101.md), 씬 폴더에는 기본 내용이 들어 있는 여러 파일이 생깁니다.

## 씬의 기본 파일

씬에는 다음 파일이 포함됩니다:

* **src/index.ts**: 씬의 진입점입니다.
* **scene.json**: 씬의 메타데이터를 포함하는 매니페스트입니다.
* **package.json** 및 **package-lock.json**: 씬의 모든 종속성 버전을 지정합니다.
* **tsconfig.json**: TypeScript 설정 파일입니다.
* **.dclignore**: 씬을 게시할 때 업로드되지 않을 프로젝트의 파일을 나열합니다.
* **assets/scene/main.composite**: Creator Hub의 Scene Editor에서 시각적으로 추가하고 설정한 모든 내용이 포함된 자동 생성 파일입니다. 사람이 읽도록 만든 파일은 아닙니다. 이는 다음의 한 예입니다. [컴포지트](/creator/content-creator-ko/sdk7/architecture/composites.md), 엔티티와 컴포넌트의 트리를 설명하는 파일입니다. CLI를 통해 생성된 씬에는 대신 다음이 포함됩니다. `main.crdt` 파일이 루트 수준에 있습니다.

### index.ts

이것은 씬의 사용자 지정 코드 진입점입니다. 전체 씬 로직을 이 파일 하나에 모두 넣을 수도 있지만, 명확성을 위해 대부분의 경우에는 코드를 다른 여러 *.ts* 파일로 나누는 것을 권장합니다.

Scene Editor와 [스마트 아이템](/creator/content-creator-ko/scene-editor/interactivity/smart-items.md)만 사용한다면, 이 파일을 수정할 필요가 없습니다.

사용자 지정 코드를 작성할 계획이라면, 씬을 만들기 위해 이 파일과 다른 .ts 파일만 편집하면 되는 경우가 대부분입니다. 이 파일에는 다음을 생성하는 코드가 들어 있습니다. [엔티티, 컴포넌트](/creator/content-creator-ko/sdk7/architecture/entities-components.md) 및 [시스템](/creator/content-creator-ko/sdk7/architecture/systems.md) 를 생성합니다.

씬을 실행하면, 다음의 내용이 `.ts` 파일은 하나의 `.js` 파일로 컴파일되며, `bin/index.js`프로덕션용으로 빌드할 때 이 파일은 축소됩니다.

{% hint style="warning" %}
**📔 참고**: TypeScript 대신 다른 도구나 언어를 사용할 수 있지만, 스크립트가 하나의 JavaScript 파일(bin/index.js) 안에 들어 있어야 합니다. 제공되는 모든 타입 선언은 TypeScript로 작성되며, 다른 언어와 트랜스파일러는 공식적으로 지원되지 않습니다.
{% endhint %}

### scene.json

그 *scene.json* 파일은 월드의 씬을 위한 JSON 형식의 매니페스트입니다. 씬은 하나 또는 여러 LAND 파셀에 걸칠 수 있습니다. 이 *scene.json* 매니페스트에는 씬에 존재하는 오브젝트, 이를 렌더링하는 데 필요한 자산 목록, 파셀 소유자의 연락처 정보, 보안 설정이 설명됩니다.

의 대부분의 필드는 *scene.json* 파일은 Scene Editor의 UI에서 직접 편집할 수 있습니다. 자세한 내용은 [씬 설정](/creator/content-creator-ko/scene-editor/get-started/scene-editor-essentials.md#scene-settings).

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-ce1891d01c48a1142117a2d2a4576dfa1d11796c%2Fthumbnail-image.png?alt=media)

자세한 내용은 [씬 메타데이터](/creator/content-creator-ko/sdk7/kinds-of-projects/scene-metadata.md#metadata).

이 모든 메타데이터는 로컬에서 씬을 미리 보는 데는 선택 사항이지만, 배포하려면 그중 일부가 필요합니다. 이 정보는 언제든 수동으로 변경할 수 있습니다.

### package.json

이 파일은 NPM에 프로젝트를 식별하고 프로젝트의 종속성을 처리할 수 있도록 정보를 제공합니다. Decentraland 씬에는 하나의 मुख्य 패키지가 필요합니다:

* **@dcl/sdk**: Decentraland SDK의 기본 종속성으로, 엔진, 컴포넌트, 시스템 등의 정의와 타입을 포함합니다.
* **@dcl/js-runtime**: @dcl/sdk 통합을 더 원활하게 해 주는 일련의 타입 선언입니다.

씬에는 다른 패키지를 원하는 만큼 포함할 수 있으며, 예를 들어 다음을 포함할 수 있습니다 [라이브러리](https://studios.decentraland.org/resources?sdk_version=SDK7\&resource_type=Library) 코드 작성을 더 쉽게 하거나 특수 기능을 활성화하는 데 도움이 될 수 있습니다.

### package-lock.json

이 파일에는 프로젝트의 다른 모든 종속성 버전이 나열됩니다. 이 버전들은 고정되어 있어, 컴파일러는 여기 나열된 것과 문자 그대로 동일한 마이너 릴리스를 사용합니다.

이 파일을 편집하여 패키지 버전을 수동으로 변경할 수 있습니다.

### tsconfig.json

다음이 포함된 디렉터리는 *tsconfig.json* 파일은 TypeScript 프로젝트의 루트 디렉터리입니다. 이 *tsconfig.json* 파일은 프로젝트를 TypeScript에서 JavaScript로 컴파일하는 데 필요한 루트 파일과 옵션을 지정합니다.

씬에 추가 라이브러리를 설치하면, 이 파일에 항목이 자동으로 추가되어야 합니다. Decentraland utils 라이브러리를 설치할 때는 이 파일을 수동으로 변경할 필요가 없습니다.

## 권장 파일 위치

씬을 Decentraland에 배포할 때, 씬을 사용하는 데 필요한 모든 자산이나 외부 라이브러리는 씬 폴더 안에 패키지로 포함되어 있거나 원격 서버를 통해 사용할 수 있어야 합니다.

플레이어 클라이언트에서 실행될 모든 것은 씬 폴더 안에 있어야 합니다. 로컬 머신의 다른 위치에 설치된 파일이나 라이브러리는 배포된 씬에서 사용할 수 없으므로 참조해서는 안 됩니다.

씬에 필요할 수 있는 다양한 유형의 자산을 저장할 때는 다음 폴더 이름을 일관되게 사용하는 것을 권장합니다:

* 3D 모델: `assets/scene/models`
* 비디오: `assets/scene/videos`
* 사운드 파일: `assets/scene/sounds`
* 텍스처용 이미지 파일(glTF 모델 제외): `assets/scene/materials`
* *.ts* 컴포넌트 정의 `/src/components`
* *.ts* 시스템 정의 `/src/systems`

{% hint style="warning" %}
**📔 참고**: 텍스처 이미지 파일이나 *.bin* 파일과 같은 glTF 모델의 보조 파일은 항상 모델의 같은 폴더에 배치해야 합니다. *.gltf* 또는 *.glb* 파일을 추가할 수 있습니다.
{% endhint %}

{% hint style="warning" %}
**📔 참고**: 가능한 문제를 피하기 위해 모든 폴더와 파일 이름은 항상 소문자로 사용하는 것을 권장합니다.
{% endhint %}

Scene Editor를 통해 어떤 자산을 가져오면, 그것은 자동으로 `assets/scene` 폴더 안에 추가됩니다. Scene Editor의 Asset Packs에 있는 기본 자산을 사용할 때는 해당 파일이 `assets/builder` 폴더에 추가됩니다.

## dclignore 파일

모든 씬에는 *.dclignore* 파일이 있으며, 이 파일은 씬을 Decentraland에 배포할 때 씬 폴더의 어떤 파일을 무시할지 지정합니다.

예를 들어, 씬의 3D 모델용 Blender 파일을 씬 폴더 안에 보관하고 싶지만, 해당 파일이 Decentraland에 배포되는 것은 막고 싶을 수 있습니다. 이 경우 `*.blend` 를 *.dclignore* 를 추가하여 해당 확장자를 가진 모든 파일을 무시할 수 있습니다.

| 무시할 대상 | 예시          | 설명                                                |
| ------ | ----------- | ------------------------------------------------- |
| 특정 파일  | `BACKUP.ts` | 특정 파일을 무시합니다                                      |
| 폴더     | `drafts/`   | 폴더와 하위 폴더의 전체 내용을 무시합니다                           |
| 확장자    | `*.blend`   | 지정된 확장자를 가진 모든 파일을 무시합니다                          |
| 이름 섹션  | `test*`     | 쿼리와 일치하는 이름의 모든 파일을 무시합니다. 이 경우, 다음으로 시작하는 *test* |


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
