# Archivos de la scene

Después de [crear una nueva escena](https://github.com/decentraland/docs/blob/main/creator/sdk7/sdk7/getting-started/sdk-101.md), la carpeta de la escena tendrá una serie de archivos con contenido predeterminado.

## Archivos predeterminados en una escena

Las escenas incluyen los siguientes archivos:

* **src/index.ts**: El punto de entrada de la escena.
* **scene.json**: El manifiesto que contiene metadatos de la escena.
* **package.json** y **package-lock.json**: Especifica las versiones de todas las dependencias de la escena.
* **tsconfig.json**: Archivo de configuración de Typescript.
* **archivo .dclignore**: Enumera los archivos de tu proyecto que no se subirán cuando publiques tu escena.
* **main-composite**: Archivo autogenerado que incluye todo lo que agregaste y configuraste visualmente en el Scene Editor en Creator Hub. No está pensado para ser legible por humanos.

### index.ts

Este es el punto de entrada al código personalizado de tu escena. Podrías encajar toda la lógica de tu escena en este archivo, aunque para mayor claridad en la mayoría de los casos recomendamos repartir tu código en varios otros *.ts* archivos.

Si dependes únicamente del Scene Editor y [Smart Items](https://github.com/decentraland/docs/blob/main/creator/sdk7/scene-editor/interactivity/smart-items.md), no necesitarás modificar este archivo.

Si piensas escribir código personalizado, lo más probable es que solo necesites editar este y otros archivos .ts para crear tu escena. Contiene el código que genera los [entities, components](https://github.com/decentraland/docs/blob/main/creator/sdk7/sdk7/architecture/entities-components.md) y [systems](https://github.com/decentraland/docs/blob/main/creator/sdk7/sdk7/architecture/systems.md) de tu escena.

Al ejecutar la escena, el contenido de tus `.ts` archivos se compila en un único minificado `.js` archivo, `bin/scene.js`.

{% hint style="warning" %}
**📔 Nota**: Puedes usar otra herramienta o lenguaje en lugar de TypeScript, siempre que tus scripts estén contenidos en un único archivo Javascript (bin/scene.js). Todas las declaraciones de tipos provistas están hechas en TypeScript, y otros lenguajes y transpilers no son oficialmente soportados.
{% endhint %}

### scene.json

El *scene.json* file is a JSON formatted manifest for a scene in the world. A scene can span a single or multiple LAND parcels. The *scene.json* manifest describes what objects exist in the scene, a list of any assets needed to render it, contact information for the parcel owner, and security settings.

Most of the fields on the *scene.json* file can be edited directly in the UI of the Scene Editor. See [Scene Settings](https://github.com/decentraland/docs/blob/main/creator/sdk7/scene-editor/get-started/scene-editor-essentials.md#scene-settings).

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

For more information see [metadatos de la escena](https://github.com/decentraland/docs/blob/main/creator/sdk7/sdk7/projects/scene-metadata.md#metadata).

All of this metadata is optional for previewing the scene locally, but part of it is needed for deploying. You can change this information manually at any time.

### package.json

This file provides information to NPM that allows it to identify the project, as well as handle the project's dependencies. Decentraland scenes require one main package:

* **@dcl/sdk**: The fundamental dependency of the Decentraland SDK, including definitions and types for the engine, components, systems, etc.
* **@dcl/js-runtime**: A series of type declarations that makes the integration of @dcl/sdk smoother.

Your scene may include any number of other packages, for example to include [libraries](https://studios.decentraland.org/resources?sdk_version=SDK7\&resource_type=Library) that can help make the writing of code easier, or enable special functionalities.

### package-lock.json

This file lists the versions of all the other dependencies of the project. These versions are locked, meaning that the compiler will use literally the same minor release listed here.

You can change any package version manually by editing this file.

### tsconfig.json

Directories containing a *tsconfig.json* file are root directories for TypeScript Projects. The *tsconfig.json* file specifies the root files and options required to compile your project from TypeScript into JavaScript.

When installing any additional libraries to your scene, an entry should be added automatically to this file. For installing Decentraland utils libraries, it shouldn't be necessary to manually do any changes to this file.

## Ubicaciones de archivos recomendadas

Ten en cuenta que cuando despliegues tu escena en Decentraland, cualquier asset o librería externa que se necesite para usar tu escena debe estar dentro de la carpeta de la escena o disponible a través de un servidor remoto.

Cualquier cosa que esté pensada para ejecutarse en el cliente del jugador debe ubicarse dentro de la carpeta de la escena. No deberías referenciar archivos o librerías que estén instalados en otra parte de tu máquina local, porque no estarán disponibles para la escena desplegada.

Sugerimos usar estos nombres de carpetas de forma consistente para almacenar los diferentes tipos de assets que tu escena pueda necesitar:

* Modelos 3D: `assets/scene/models`
* Videos: `assets/scene/videos`
* Archivos de sonido: `assets/scene/sounds`
* Archivos de imagen para texturas (excepto para modelos glTF): `assets/scene/materials`
* *.ts* definiciones para components `/src/components`
* *.ts* definiciones para systems `/src/systems`

{% hint style="warning" %}
**📔 Nota**: Archivos de soporte para modelos glTF, como sus archivos de imagen de texturas o *.bin* files, should always be placed in the same folder as the model's *.gltf* o *.glb* archivo.
{% endhint %}

{% hint style="warning" %}
**📔 Nota**: Recomendamos usar siempre nombres en minúsculas para todas las carpetas y nombres de archivos, para evitar posibles problemas.
{% endhint %}

Al importar cualquier asset a través del Scene Editor, se agregan automáticamente dentro de la carpeta `assets/scene` . Cuando se usan assets predeterminados en los Asset Packs del Scene Editor, sus archivos se agregan a `assets/builder` carpeta.

## El archivo dclignore

Todas las escenas incluyen un *archivo .dclignore* file, este archivo especifica qué archivos en la carpeta de la escena ignorar al desplegar una escena en Decentraland.

Por ejemplo, puedes querer mantener los archivos de Blender de los modelos 3D de tu escena dentro de la carpeta de la escena, pero quieres evitar que esos archivos se desplieguen en Decentraland. En ese caso, podrías agregar `*.blend` a *archivo .dclignore* para ignorar todos los archivos con esa extensión.

| Qué ignorar          | Ejemplo     | Descripción                                                                                                |
| -------------------- | ----------- | ---------------------------------------------------------------------------------------------------------- |
| Archivos específicos | `BACKUP.ts` | Ignora un archivo específico                                                                               |
| Carpetas             | `drafts/`   | Ignora el contenido completo de una carpeta y sus subcarpetas                                              |
| Extensiones          | `*.blend`   | Ignora todos los archivos con una extensión dada                                                           |
| Secciones de nombre  | `test*`     | Ignora todos los archivos con nombres que coincidan con la consulta. En este caso, que empiezan con *test* |
