Formato de los archivos
Un proyecto de Brasa es una carpeta común, con archivos de texto legibles. Las carpetas son libres: Brasa descubre el tipo de cada archivo por la extensión.
| Archivo | Qué es |
|---|---|
project.brasa |
La configuración del proyecto. Marca la carpeta como un proyecto. |
Nombre.room.json |
Una room. |
Nombre.obj.json + Nombre.hpp + Nombre.cpp |
Un objeto: los datos y el código. Un objeto sin código tiene solo el .obj.json. |
nombre.sprite.json + la imagen |
Un sprite. El "image" apunta al PNG. |
nombre.wav |
Un sonido. |
*.cpp, *.hpp sueltos |
Código compartido, como el game.hpp. |
.brasa/ |
Archivos generados por el Play (build). Se puede borrar; no va a Git. |
.vscode/ |
Configuración del autocompletado, generada por Brasa. |
project.brasa
Sección titulada «project.brasa»{ "formatVersion": 2, "name": "Primeiro Jogo", "width": 320, "height": 180, "windowScale": 3, "startRoom": "Main"}width y height son la resolución del juego, startRoom es la room inicial y windowScale es la escala inicial de la ventana (ausente = automática).
fullscreen (true abre en pantalla completa) y scale ("integer", "fit" para mantener la proporción, o "stretch") solo aparecen cuando son distintos del valor por defecto.
Dos campos opcionales guardan el resto de la configuración del proyecto:
{ "input": { "esquerda": ["Left", "A", "Pad:Left", "Pad:LeftX-"], "atirar": ["Space", "Pad:A"] }, "globalObjects": ["Controle"]}input son las acciones de entrada: cada nombre con sus teclas y botones. globalObjects es la lista de los objetos globales.
Objeto (.obj.json)
Sección titulada «Objeto (.obj.json)»{ "sprite": "nave", "visible": true, "solid": false, "vars": [ { "name": "velocidade", "type": "number", "default": 2.0 } ]}El código está en el .hpp y en el .cpp del mismo nombre, al lado.
Estos campos solo aparecen cuando son distintos del valor por defecto: mask, flipX, persistent, gravity, gravityDirection, friction y maxFallSpeed.
vars son las variables del objeto. El type es number, int, bool, string, color, room, object, sprite o sound. Un color es [rojo, verde, azul, alfa], de 0 a 255.
Room (.room.json)
Sección titulada «Room (.room.json)»{ "width": 320, "height": 180, "layers": [ { "type": "instances", "name": "Instancias", "depth": 0, "instances": [ { "object": "Player", "x": 160, "y": 150 } ] }, { "type": "tiles", "name": "Chao", "depth": 100, "tileset": "Terreno", "data": [ "0,0,0", "1,2,3" ] }, { "type": "background", "name": "Fundo", "depth": 200, "color": [16, 14, 32] } ]}layers son las capas, de adelante hacia atrás. El type es instances, tiles, sprites o background. En una capa de tiles, data tiene una fila por línea: 0 es vacío y n es el tile n - 1 del tileset.
Cada instancia puede tener también scaleX, scaleY, angle y vars (los valores propios de las variables, por nombre: "vars": { "velocidade": 3 }). Solo aparecen en el archivo cuando son distintos del valor por defecto. La cámara de la room también queda guardada aquí.
Tileset (.tileset.json)
Sección titulada «Tileset (.tileset.json)»{ "sprite": "tiles", "collision": "ssss..s", "terrains": [ { "name": "grama", "at": 0 } ]}sprite es el sprite con los tiles (cada cuadro es un tile). collision tiene un carácter por tile: s es sólido y . es libre. terrains son los bloques 3 × 3 del pincel de terreno: at es el tile de la esquina de arriba a la izquierda.
Sprite (.sprite.json)
Sección titulada «Sprite (.sprite.json)»{ "image": "nave.png", "frameW": 16, "frameH": 16, "frames": 2, "origin": [8.0, 8.0], "bbox": [3.0, 2.0, 10.0, 12.0]}origin es [x, y] dentro del cuadro, y bbox es la caja de colisión: [x, y, ancho, alto].
El campo opcional "fps" (mayor que 0 y como máximo 120) guarda la velocidad de la animación en cuadros por segundo, definida en el editor de sprite. Con él, el animSpeed del objeto pasa a ser un multiplicador; sin él, el animSpeed cuenta en cuadros por paso.
Proyectos antiguos
Sección titulada «Proyectos antiguos»Los proyectos del formato antiguo (con un assets/sprites.json central) se convierten al formato 2 cuando los abres en el editor. Desde la línea de comandos, usa brasa_cli migrate <carpeta>: mira brasa_cli.
