> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/all-out-docs/docs-es/primeros-pasos/testing-and-publishing.md).

# Construir un juego básico

Para ayudarte a empezar, esta guía te lleva paso a paso por la creación de un juego de recolección de manzanas.

### Colección de manzanas

{% hint style="info" %}
Este juego de ejemplo pasa por alto detalles que se cubren en profundidad en otras guías. Si necesitas ayuda, consulta la barra lateral izquierda o usa la función de búsqueda en la parte superior para obtener información extra.
{% endhint %}

#### Construyendo el mapa

¡Empezaremos creando un mundo básico con una isla para caminar y una manzana para recoger más tarde!

1. Busca una Manzana y una Isla en la [Catálogo de recursos](/all-out-docs/docs-es/usar-el-editor/asset-catalog.md) y arrástralas a la vista de escena de tu juego.

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-acecdae4bfa75a93ca72c27b79de79fa55dbdb1c%2Fimage.png?alt=media" alt="Apple and island assets placed in the scene"><figcaption></figcaption></figure>

2. ¡Esa isla es bastante pequeña! En la [Inspector](/all-out-docs/docs-es/usar-el-editor/inspector.md) establece la `Escala` a 10x10 para hacerla más grande

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-c4ca715b0b60f8691738c5198f00d957c236775e%2Fimage.png?alt=media" alt="Island scale set in the Inspector"><figcaption></figcaption></figure>

3. Ahora la isla tiene un buen tamaño, ¡pero la manzana está detrás de la isla! Establece la `Capa` de la isla en -10 para ponerla detrás de todo lo demás.

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-126a998b78f427e923e730b4971f600cb124eb91%2Fimage.png?alt=media" alt="Island rendering layer set in the Inspector"><figcaption></figcaption></figure>

#### Añadiendo scripts

En el `directorio de scripts` de tu proyecto de juego, crea un nuevo archivo llamado `pickup_apple.csl` y ábrelo en un editor de texto o usa un [IDE basado en IA](/all-out-docs/docs-es/programacion/cursor-claude-antigravity-setup.md).

Pega el siguiente script de ejemplo y guarda el archivo:

```go
// Esto crea el componente que hace que la manzana sea interactiva,
// lo añadiremos a la manzana en el siguiente paso del tutorial.
Pickup_Apple :: class : Interactable {
    is_picked_up: bool;

    ao_start :: method() {
        this.set_listener(this);
        this.set_text("Recoger");
    }

    can_use :: method(player: Player) -> bool {
        if is_picked_up return false;
        return true;
    }

    on_interact :: method(player: Player) {
        if is_picked_up return;
        is_picked_up = true;

        // Iniciar el efecto de explosión
        effect := new(Apple_Pop_Effect);
        entity.set_active_effect(effect);
    }
}

// Una animación genial para cuando te la comes :D
Apple_Pop_Effect :: class : Effect_Base {
    sprite: Sprite_Renderer;
    start_scale: v2;
    start_pos: v2;

    effect_start :: method() {
        sprite = entity.get_component(Sprite_Renderer);
        start_scale = entity.local_scale;
        start_pos = entity.local_position;
        set_duration(0.4);
    }

    effect_update :: method(dt: float) {
        t := get_elapsed_time() / 0.4;

        // Aumenta de tamaño y luego se encoge rápidamente hasta desaparecer
        scale_curve: float;
        if t < 0.3 {
            // Pequeño salto rápido (escala a 1.3x)
            scale_curve = lerp(1.0, 1.3, Ease.out_back(t / 0.3));
        } else {
            // Encogerse hasta desaparecer
            scale_curve = lerp(1.3, 0.0, Ease.in_back((t - 0.3) / 0.7));
        }

        entity.set_local_scale(start_scale * scale_curve);

        // Flotar ligeramente hacia arriba
        rise := Ease.out_quad(t) * 0.5;
        entity.set_local_position({start_pos.x, start_pos.y + rise});

        // Desvanecerse hacia el final
        if sprite != null {
            alpha := 1.0 - Ease.in_quad(max(0.0, (t - 0.5) / 0.5));
            sprite.color.w = alpha;
        }
    }

    effect_end :: method(interrupt: bool) {
        entity.destroy();
    }
}
```

> Guardar un archivo CSL se detecta y se compila automáticamente. En una prueba en ejecución, pulsa **Alt+F9** para cargar manualmente en caliente los scripts compilados. Una carga en caliente conserva los valores actuales de los globales y de los campos de los objetos existentes, así que reinicia para aplicar un inicializador cambiado. Detén y reinicia para los cambios de escena. **Ctrl+R** recarga todo el proyecto del editor y no es necesario para la compilación normal de scripts.

#### Añadiendo el componente de la manzana

Ahora que has creado el script de tu manzana, necesitaremos aplicarlo a la manzana en la escena. Para hacerlo, añadiremos el nuevo `Pickup_Apple` componente del script usando el Inspector.

1. Selecciona tu manzana en la escena.
2. Haz clic en el botón "Añadir componente" del Inspector.
3. Busca el componente "Pickup\_Apple" y haz clic en él para añadirlo a la manzana.

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-40e3c8234f5c0af781a1c92e85748280e0aa8d97%2Fimage.png?alt=media" alt="Adding the Pickup Apple component in the Inspector"><figcaption></figcaption></figure>

Ahora verás que el componente se ha añadido a la manzana. Puedes ajustar algunos campos de la Manzana cambiando los valores en el inspector:

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-04d42907e5796fe34eb094810c5666a4b4426d80%2Fimage.png?alt=media" alt="Pickup Apple component fields in the Inspector"><figcaption></figcaption></figure>

#### Jugando a tu juego

Cuando estés listo, pulsa el divertido triángulo verde y prueba tu juego.

<figure><img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-e26510caa7307e5538830ed5ffd985a6ee920879%2Fimage.png?alt=media" alt="Apple collection game running in a local test"><figcaption></figcaption></figure>

### Próximos pasos

En las siguientes secciones aprenderás a probar tu juego con varios jugadores, crear tus propios scripts y construir el mundo de tus sueños.

**Aquí tienes algunos retos para probar:**

* Haz muchas manzanas para que el jugador se las coma
* Reproduce efectos de sonido cuando se las coma
* **Avanzado:** intenta escribir un script para reaparecer más manzanas después de que se las coman

\--

{% hint style="info" %}
NOTA AL MARGEN: Si tu isla tiene baja resolución o está pixelada, haz clic en el recurso png de la isla en la sección "Assets" y establece el Multiplicador de remuestreo en 1 y haz clic en Aplicar

<img src="https://864968843-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzA8RGUKJ88fD0oXVALlz%2Fuploads%2Fgit-blob-d564ee004b2d5a196dd984b18137a8680b09c04c%2Fimage.png?alt=media" alt="Texture settings with Resample Multiplier set to 1" data-size="original">
{% endhint %}
