Capas
Una sala se dibuja en capas, unas encima de otras. Hay tres tipos:
- De tiles: un mapa de tiles del proyecto, hecho en el editor de mapas.
- De imagen: una imagen del proyecto, sola o repetida. Sirve para los fondos: el cielo, unas montañas lejanas.
- De objetos: lo que colocas a mano, como sprites, formas o zonas. Lo cuenta Objetos.
Las capas de la sala están en el árbol de la izquierda, SCENE. Lo que se ajusta de cada una está en la sección LAYER de la pestaña Object, a la derecha.
El árbol de capas
Arriba del árbol está lo que se pinta delante, y abajo, el fondo: lo dicen los rótulos Front y Back. Debajo de cada capa van sus objetos. Si la sala tiene plantillas, al final sale el grupo TEMPLATES (ver Plantillas).
Haz clic en una capa para que sea la capa activa, la que editas. La barra de herramientas la sigue:
- Con una capa de objetos salen las herramientas de objetos: Select, Place, Shape, Zone y Path.
- Con una de tiles o de imagen sale solo Move, que la coloca. Mientras tanto, las demás capas de tiles y de imagen se ven a media opacidad en el lienzo, y no se pueden elegir objetos.
Pan está siempre. Las herramientas las cuenta Editor de escenas.
La casilla Filter objects, encima del árbol, deja a la vista solo los objetos cuyo nombre o etiqueta llevan lo que escribas.
Añadir, ordenar y borrar capas
- + Tiles, + Image y + Objects, en la cabecera del árbol, añaden una capa de cada tipo. Las de tiles y de objetos van delante de todas. La de imagen va justo encima de la capa activa: para añadir un fondo, activa antes la capa de más atrás. Si tienes una imagen elegida en la paleta ASSETS, la capa de imagen nace con ella.
- La capa activa, y la que tiene el ratón encima, enseñan cuatro botones a la derecha del nombre: subirla un puesto, bajarla, duplicarla con todo lo que tiene y borrarla.
- Para llevar una capa a otro sitio de la pila, arrástrala por su nombre.
- Para pasar objetos a otra capa de objetos, arrástralos por su nombre hasta ella.
- El clic derecho en una capa trae Rename (
F2), Duplicate, Delete, Move the layer forward y Move the layer back. Rename te lleva a la casilla Name de la sección LAYER.
Borrar una capa te pregunta antes, y se lleva sus objetos. Una sala necesita al menos una capa: la última no se puede borrar. Al duplicar Ground, la copia se llama Ground copy y va justo encima; sus objetos llevan nombres nuevos.
El ojo y el candado
Cada capa y cada objeto llevan un ojo y un candado al principio de su fila. No hacen lo mismo en una capa que en un objeto:
| En una capa | En un objeto | |
|---|---|---|
| Ojo | La esconde solo en el lienzo: el juego la pinta igual. | Lo saca del juego: un objeto oculto no se genera. |
| Candado | Un clic en el lienzo no elige sus objetos. Si es de tiles o de imagen, ni Move ni las flechas la mueven. | No se elige en el lienzo: ni con un clic, ni con la marquesina, ni con Ctrl+A. |
Los dos se guardan con la sala, pero no entran en el deshacer.
Lo que dice cada fila
Cada capa lleva su nombre y, debajo, lo que la distingue:
- De tiles: su mapa, el parallax si no es del 100 % y su posición. Por ejemplo,
Mountains.map · parallax 50% · 0, 0. Sin mapa diceno tilemap. El mapa de escena no enseña el parallax, porque no lo usa. - De imagen: lo mismo, con su imagen. Sin imagen dice
no image. - De objetos: cuántos objetos tiene, como
3 objects. Una capa de decorado lleva delantedecor ·, y detrás su parallax si no es del 100 %.
Cada objeto lleva una miniatura, su nombre ((unnamed) si no tiene) y, a la derecha, su primer comportamiento, con +1, +2… si tiene más. Dentro de cada capa, los objetos van en el orden en que se pintan: el de arriba, detrás.
La sección LAYER
Con una capa activa y ningún objeto elegido, la pestaña Object enseña la sección LAYER. Si eliges un objeto se pliega, para dejar sitio a INSTANCE: haz clic en su título para abrirla.
Cada tipo de capa tiene sus campos. Los que no le sirven salen apagados:
| Campo | De tiles | Mapa de escena | De imagen | De objetos | De decorado |
|---|---|---|---|---|---|
| Name | sí | sí | sí | sí | sí |
| Tilemap / Image | Tilemap | Tilemap | Image | — | — |
| Parallax % | sí | — | sí | — | sí |
| Offset (px) | sí | sí | sí | — | sí |
| Scroll px/s | sí | — | sí | — | sí |
| Wrap X / Wrap Y | sí | sí | sí | — | — |
| Opacity (0-255) | sí | sí | sí | sí | sí |
- Name solo sirve para distinguir las capas: en el código generado sale en un comentario.
- Opacity (0-255) es solo para el lienzo: deja ver a través de una capa mientras trabajas. El juego no la usa.
- Debajo de los campos, un texto explica la capa. Si la capa va a dejar huecos en la pantalla, lo dice ahí, en ámbar (ver «Parallax, Scroll y Wrap»).
Capas de tiles
Una capa de tiles pinta un mapa (.map) del proyecto.
El mapa
- Tilemap es el mapa que pinta. (no tilemap) la deja vacía.
- Debajo, Tileset dice su tileset y su tamaño:
Tiles.bmp 40x15 tiles of 16x16 px. - Edit tilemap... abre el mapa en el editor de mapas. Cuando lo guardas allí, el lienzo se pone al día solo.
La primera vez que eliges un mapa en Tilemap en una sala sin ninguno, la sala toma el tamaño del mapa. Si el mapa de una capa desaparece del proyecto, la capa no se genera, y el panel de problemas lo avisa. Lo mismo vale para la imagen de una capa de imagen.
También puedes poner un mapa desde la paleta ASSETS:
- Con doble clic, el mapa pasa a la capa de tiles activa, en lugar del que tuviera, y queda centrado en lo que estás viendo. Si la capa activa no es de tiles, se crea una nueva con el nombre del mapa.
- Si lo arrastras al lienzo, su esquina de arriba a la izquierda queda donde lo sueltas.
En los dos casos la posición se ajusta a los tiles del propio mapa.
Offset y la herramienta Move
Offset (px) es dónde empieza la capa, en píxeles de la sala: la esquina de arriba a la izquierda del mapa. Una capa puede empezar fuera de la sala.
Con la capa activa, la herramienta Move la coloca con el ratón:
- Arrastra el mapa por el lienzo. Se mueve la capa que hay bajo el ratón, empezando por la de delante, y pasa a ser la activa. Fuera de todas, se mueve la activa.
- Con View › Snap to the grid encendido, va de tile en tile de su propio mapa: así dos mapas seguidos casan sin huecos.
- Las flechas la mueven igual, un tile cada vez, y con
Shift, un píxel. - Una capa con el candado no se mueve.
Parallax, Scroll y Wrap
- Parallax % dice cuánto se mueve la capa con la cámara, en X y en Y. Con 100 va con la sala; con 50, a media velocidad, y parece más lejana; con 0 se queda quieta en la pantalla. Por encima de 100 va más deprisa que la sala, como algo que está muy cerca. Va de 0 a 400.
- Scroll px/s la mueve sola, en píxeles por segundo, aunque la cámara esté quieta: unas nubes, un cielo de estrellas. Los valores van hacia la derecha y hacia abajo.
- Wrap X y Wrap Y (la fila Repeat) repiten el mapa sin fin, en horizontal o en vertical. En el lienzo se ve una copia atenuada a cada lado.
En el juego, la capa sale en la pantalla en Offset - cámara × parallax + segundos × Scroll. El parallax va ahí en tanto por uno (50 % es 0,5), y los segundos cuentan desde que se cargó la sala.
Una capa con parallax distinto del 100 %, o con Scroll, puede quedarse corta: al avanzar la cámara aparece un hueco. El texto de la sección lo avisa con las cuentas, y te propone encender Wrap o hacer el mapa más grande. Con Scroll y sin Wrap, la capa acaba saliendo de la pantalla.
Arrastra la etiqueta del marco de la pantalla, la que dice algo como 320x240 · camera 0, 0 (el marco sale con View › Device screen). El marco hace de cámara, y las capas con parallax se mueven en el lienzo como en el juego.
Scene map
Scene map marca la capa de tiles que es el mapa de escena: el mapa que pinta Draw.scene, justo debajo de los sprites. Las capas que van encima de él tapan los sprites; las de debajo quedan detrás. En el juego, la sala lo pasa a la escena con setGridMap (módulo Scene).
- Solo una capa lo es. Al marcar otra, la anterior deja de serlo.
- No se puede desmarcar. Al abrir la sala, o al poner un mapa en una capa, si ninguna capa de tiles lo es, pasa a serlo la de más atrás.
- Si borras la capa que es el mapa de escena, la sala se queda sin él hasta que la vuelves a abrir, y Generate y Play pintan los sprites delante de todas las capas. Marca otra capa de tiles con Scene map, o cierra la sala y vuelve a abrirla.
Draw.scenelo pinta pegado a la cámara: Parallax % y Scroll px/s no cuentan y salen apagados. Offset y Wrap sí cuentan.- No da colisión ni límites a la cámara. La colisión sale de Room › Collision map, y los límites, de Room › CAMERA (ver La sala y el juego).
- Si su mapa es más grande que la sala, el panel de problemas avisa de que una parte queda fuera.
Si el mapa de colisión es el mismo .map que pinta una capa, la colisión se mueve con el Offset de esa capa: la del mapa de escena, o si no, la primera que lo pinte. Con el parallax, el Scroll o el Wrap no se mueve: si esa capa lleva alguno, el panel de problemas lo avisa.
Capas de imagen
Una capa de imagen pinta una imagen del proyecto. Sirve para fondos que no son de tiles: un cielo, unas montañas.
- Image es la imagen. (no image) la deja vacía. Debajo, Size dice lo que mide.
- Desde la paleta ASSETS, con una capa de imagen activa, el doble clic en una imagen, o arrastrarla al lienzo, le cambia la imagen.
- El negro es transparente, como en el juego.
- Parallax %, Offset (px), Scroll px/s, Wrap X / Wrap Y y Opacity (0-255) funcionan como en las capas de tiles. Move la coloca igual, pero ajustada a la rejilla de la sala (Room › Snap (px)).
En el juego se pinta con Draw.bitmap. Con Wrap, la imagen se repite hasta llenar la pantalla. Cada imagen distinta se carga una sola vez, aunque la usen varias capas.
Capas de objetos
Una capa de objetos lleva lo que colocas a mano: sprites, imágenes, formas, zonas y rutas. Cómo se colocan y qué es cada campo lo cuenta Objetos.
Los objetos se mueven con la cámara tal cual: una capa de objetos no tiene parallax, posición ni repetición. Sus sprites se pintan con el mapa de escena (ver «El orden de dibujo»).
Capas de decorado
Decor convierte una capa de objetos en capa de decorado: sprites que adornan, pero que no son parte del juego.
- Sus sprites no entran en la escena: no tienen cuerpo, collider, etiqueta, comportamientos, estados ni código.
<Sala>Drawlos pinta en el sitio de su capa en la pila, con Parallax %, Offset (px) y Scroll px/s, como una capa de imagen. No se repiten.- Los que tienen nombre están en
room.named, para ocultarlos o cambiarles el fotograma desde el juego. Su posición sale de una tabla en cada fotograma: moverlos desde el juego no sirve. - Lo que colocas en una capa de decorado no hereda nada del último objeto del mismo recurso.
El orden de dibujo
En el juego, la sala se pinta con <Sala>Draw(room), la función que el IDE genera para cada sala (El código que genera). Recorre la pila de atrás adelante, en el orden del árbol, y pinta cada capa así:
| Capa | Cómo la pinta |
|---|---|
| De imagen | Con Draw.bitmap, con su parallax, su Offset y su Scroll. Con Wrap, la repite hasta llenar la pantalla. |
| De tiles | Con Draw.tilemap, con su parallax, su Offset y su Scroll. |
| Mapa de escena | Con Draw.scene: el mapa y, justo encima, todos los sprites de la sala. |
| De objetos | Solo sus formas y sus zonas con Show in game. Sus sprites van con el mapa de escena. |
| De decorado | Sus sprites y sus formas, con el parallax de la capa. |
Encima de todo van los textos de Show a variable (Comportamientos). Si la sala no tiene mapa de escena, los sprites se pintan al final, delante de todas las capas.
Los sprites salen en el orden de la sala: de la capa de objetos de más atrás a la de más delante y, dentro de cada capa, de arriba abajo en el árbol. Para cambiar el sitio de un objeto dentro de su capa, usa el menú del clic derecho en el lienzo: Bring forward (Re Pág) y Send backward (Av Pág) lo mueven un puesto; Bring to front (Inicio) y Send to back (Fin), del todo. Los sprites que el juego crea después, con un spawner o con la acción Create from a template, salen delante de los que había.
Por eso, hay cosas que no se pueden hacer:
- Poner sprites detrás del mapa de escena.
- Poner una capa de tiles o de imagen entre unos sprites y otros: todos van juntos, encima del mapa de escena.
- Dar a cada capa de objetos su altura en la pila: solo se quedan en su sitio sus formas y sus zonas.
El lienzo pinta cada capa de objetos en su sitio de la pila, y el juego pinta todos los sprites junto al mapa de escena. Si una capa de objetos está debajo del mapa de escena, en el lienzo sus sprites quedan detrás del mapa, y en el juego, delante. Si está encima de una capa de tiles o de imagen que a su vez está encima del mapa de escena, en el lienzo sus sprites la tapan, y en el juego quedan detrás. Para que el lienzo enseñe lo que verás, pon las capas de objetos justo encima del mapa de escena.
Cuando el juego destruye un sprite, la VM lo quita de la escena y pone en su hueco el último sprite de la lista. Desde ese momento, ese sprite se pinta antes que otros que antes tapaba. Lo que tenga que ir siempre delante de los sprites, ponlo en una capa de tiles o de decorado por encima del mapa de escena.
Si quieres sprites detrás del mapa, como unos árboles al fondo, ponlos en una capa de decorado por debajo de él. Esos sprites no chocan ni llevan comportamientos.
Problemas conocidos
- El candado y el ojo no protegen del todo. Con una capa de objetos bloqueada u oculta, la marquesina,
Ctrl+Ay el árbol eligen sus objetos, y así se pueden mover o borrar. Y Place, Shape, Zone, Path y Paste añaden objetos a la capa activa aunque esté bloqueada u oculta. Antes de colocar algo, mira cuál es la capa activa. - El ojo de un objeto no se deshace. Ocultar un objeto lo deja fuera del juego, y
Ctrl+Zno lo devuelve. Vuelve a hacer clic en el ojo. - La sección LAYER se queda con la capa de antes. Si eliges en el árbol un objeto de otra capa, o haces doble clic en un problema de un objeto, la capa activa cambia, pero LAYER sigue enseñando la anterior. Tocar entonces un campo, aunque sea entrar y salir de Name, escribe en la capa nueva los valores de la vieja. Antes de tocar LAYER, haz clic en el nombre de la capa en el árbol. Si ha pasado,
Ctrl+Zlo deshace. Algo parecido pasa al elegir un mapa en Tilemap: la sección sigue enseñando lo de antes (en una capa nueva, Edit tilemap... sigue apagado) hasta que eliges otra capa y vuelves a esta. - Offset y Scroll no admiten negativos. Una capa movida a la izquierda o arriba de la sala con Move o con las flechas enseña 0 en Offset, y si cambias el otro eje en la casilla, la capa salta al 0. Mueve esas capas con Move o con las flechas. En Scroll px/s no se puede poner un valor negativo: la capa solo se mueve sola hacia la derecha o hacia abajo.
- Move puede agarrar otra capa en el margen. Con Move, un clic fuera de la sala, donde ya no se pinta nada, puede activar y arrastrar una capa con Wrap en vez de la activa. Si se mueve la que no era,
Ctrl+Z.
Todos los problemas conocidos de JARU, juntos, están en Problemas conocidos.