Bricksets/es

From Open Surge Engine Wiki
Jump to: navigation, search
Languages: Bahasa IndonesiaČeštinaDeutschEnglishEspañolFrançaisItalianoNederlandsPolskiPortuguêsРусский

Los Brick o Bloques

En el motor Open Surge, cada nivel está construido con un montón de piezas pequeñas llamadas 'bloques'. Puedes colocar estos bloques donde quieras y hacerlos del tamaño que desees.

S056.png

Bricksets

La imagen de un brickset

Un brickset se compone de dos elementos:

1) La imagen

No existe brickset sin una imagen que los contenga. Esta imagen puuede estar organizada de la forma que quieras. Los bloques pueden estar espaciados, o muy juntos para ahorrar espacio.

Ambas técnicas tienen sus ventajas y desventajas. Si eres de la "vieja escuela" y creas los bricksets en un editor de textos, espaciar los bloques hace el proceso más comprensible para los humanos. Por otra parte, pegando todos los bloques entre ellos y haciendo una cuadrícula de 16*16 pixeles los hace listos para ser definidos en el Rapid Brickset Editor (RBE como abreviado), una herramienta para crear estos bricksetes que será cubierto luego.

Además, es altamente recomendado que el tamaño de tus bloques sea un múltiplo de 8. (como 64*32 pixeles) Una vez en el editor de niveles, puedes usar una cuadrícula de 8*8 pixeles que te permitirá colocar tus bloques juntos de una forma ordenada, y hacer que tus bloques se adapten a esta rejilla te ahorrará mucho tiempo en el diseño del nivel.

2) El script de definición

La imagen es donde puedes ver todo el trabajo artístico de tus bloques, pero el script de definición es lo que permitirá utilizarlos en el juego.

El motor busca un archivo .brk en la carpeta de los bloques (themes/), obtiene sus parámetros, y la física se hace cargo del resto una vez que pongas los bloques dentro de tu nivel.

Este script contiene referencias al archivo de la imagen, mientras más grandes sean los bloques, qué parte de la imagen se usará como "cara", el ángulo (para el procesamiento de la física), la animación (si hay), y las propiedades; si el bloque reacciona como una piedra frágil, colapsará una vez que la toques, actúa como una "nube" (lo veremos más adelante), o se mueve en el aire para realizar desafíos de salto.

Ahora que tienes una imagen para empezar, hay dos cosas que puedes hacer:

1) Editar un archivo .brk ya existente e intentar definir los bloques manualmente. Podrías querer hacer ésto si sólo son unos pocos bloques, si necesitas añadir o eliminar bloques de un brickset ya existente, o si quieres definir bloques que RBE no pueda hacer fácilmente.

2) Carga tun imagen en RBE, y empieza a clickear a tu modo, marcando los bloques, definiendo los ángulos y las propiedades, y una vez que hayas terminado de hacer clic con furia cada pequeño cuadrado con los gráficos subyacentes, exporta tanto los grupos de bloques como el brickset. Los grupos de bloques, como el nombre lo indica, son grupos de bloques que forman secciones grandes. Puedes agrupar cualquer bloque con otro y crear tus propias creaciones, desde habitaciones, hasta pasillos, muros, celdas...

CONSEJO: Si construyes algo con tus bloques en un nivel vacío y lo guardas, puedes abrir el nivel en un editor de textos, y copiar tu construcción en un script. Funciona mejor si construyes empezando desde x = 0, y = 0.

Ahora cubriremos ambos métodos.

Parámetros de un Brick

Descripción general

La definición de un bloque es algo parecido a esto:

brick 0
{
   type                OBSTACLE
   behavior            DEFAULT
   angle               0
   zindex              0.5        // opcional

   sprite
   {
       source_file     images/desert1.png
       source_rect     70 10 128 128
       frame_size      128 128

       animation
       {
           repeat      TRUE
           fps         8
           data        0
       }
   }
}

Cada bloque empieza con brick seguido de su número. Following a sequence is highly advisable, but you can number solids from 1 to 1000 y el paisaje desde 9000 hasta 9999, por ejemplo.

Bloque de sprite

El bloque de sprite está explicado en Sprites/es.

zindex

Usualmente un valor entre 0.0 y 1.0, zindex especifica el orden en el que los bloques se renderizan en la pantalla. Los bloques con un mayor zindex serán mostrados al frente de otros. Los bloques con menor zindex serán renderizados dtrás de los demás. Finalmente, un bloque será cargado detrás del jugador si, y solo si, su zindex es menor o igual a 0.5.

Éste es un parámetro opcional. Si no se especifica, el valor por defecto será 0.5.

Tipo

El tipo le indica al motor como manejar los choques con respecto a este bloque.

- OBSTACLE quiere decir: un bloque sólido

Bloque sólido

No puedes atravesarlo

- PASSABLE quiere decir: puedes atravesarlo (esto no es un bloque sólido, las colisiones no lo afectarán)

Los arbustos son bloques atravesables

- CLOUD quiere decir: puedes llegar a su cima desde abajo (pero no desde el lado opuesto)

La roca es un bloque tipo nube

Lo ves? Puedes pararte sobre ella

Comportamiento

El comportamiento especifica el tipo de movimiento que el bloque realizará, si otro aparte de default es especificado.

- DEFAULT quiere decir: un bloque que se queda quieto, sin movimiento ni ningún comportamiento especial. Ejemplo:

// un bloque normal
type OBSTACLE
behavior DEFAULT

Nota: Los bloques que no son obstaculos deben ser definidos como DEFAULT.

- FALL quiere decir: el bloque colapsará y será destruido una vez que el jugador pase arriba de él. Ejemplo:

// sintaxis: behavior FALL piezas-horizontales piezas-verticales
// una vez que el jugador pise el bloque, éste se destruirá en cinco partes, horizontalmente (y 1 quiere decir que no será destruido verticalmente)
type OBSTACLE
behavior FALL 5 1
Cuando el jugador pisa el bloque...

éste cae

- BREAKABLE quiere decir: el jugador puede destruit el bloque golpeándolo. Example:

// sintaxis: behavior BREAKABLE piezas-horizontales piezas-verticales
// el bloque se romperá en 25 partes (5x5) de igual tamaño
type OBSTACLE
behavior BREAKABLE 5 5
Bloques rompibles

Broken in 25 parts

- CIRCULAR especifica una plataforma con movimiento. Ejemplo:

// sintaxis: behavior CIRCULAR distancia-x distancia-y velocidad-x velocidad-y fase-inicial
// distancia-x, distancia-y quiere decir cuan ancho/alto es el movimiento de los bloques, en pixeles
// velocidad-x, velocidad-y indica a cuantos ciclos por segundo se hace el movimiento. Intenta definir ambos valores como 1. Mientras más alto el valor, más rápido se moverá el bloque.
// fase-inicial es un valor entre 0 y 359, incluidos. Debes ajustarlo a 0.

// el bloque se moverá horizontalmente: la trayectoria tiene una amplitud de 100 pixeles(de izquierda a derecha, indicando que tiene 200 pixeles de amplitud), y la velocidad es de un ciclo por segundo.
type OBSTACLE
behavior CIRCULAR 100 0 1 1 0
S777.png

¿Lo ves? El bloque se mueve.

Ángulo

El ángulo le indica al motor si es un suelo, muro , techo o un cuesta. usualmente es un piso plano, 90º un muro plano y 180º un techo. Cualquer valor entre éstos significa que el bloque es una cuesta.

Ahora, como calcular el ángulo exactamente?

¿Cómo calcular el ángulo?

Puedes elegir entre calcular el ángulo manualmente o usar un programa para realizar la tarea. Veamos ambos métodos.

Manualmente: usando las matemáticas

Supón que tienes una cuesta como ésya:

Brickangle1.png

Para calcuar el ángulo, puedes usar matemáticas básicas:

Brickangle2.png

Como puedes ver, el ángulo es medido por su eje-x positivo. Un piso plano debería medir 0 grados. Paredes simples (por las cuales el jugador no puede atravesarlas) también deben medir 0 grados.

Luego escribes el siguiente código en un archivo .brk:

// Rampa
brick 51
{
    type                OBSTACLE
    behavior            DEFAULT
    angle               45
    
    sprite
    {
        source_file     images/desert1.png
        source_rect     555 60 24 24
        frame_size      24 24
        
        animation
        {
            repeat      TRUE
            fps         8
            data        0
        }
    }
}

El brickset correspondiente es este (creditos a Celdecea):

Brickset


Un método más sencillo

En vez de tener que codificar manualmente los bricksets, puedes usar herramientas automatizadas para realizar la mayoría del trabajo. Puedes dibujar tu brickset al borde de la planilla 16x16 mostrada abajo, y luego usar Rapid Brickset Editor para generar el script .brk por ti.

Grid16x16.png