Ir al contenido
Descargar

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.
{
"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.

{
"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.

{
"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í.

{
"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.

{
"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.

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.