BreynGINE

Tus propias piezas de BreynFlow (tutorial)

¿Lo vas a hacer en el móvil o la tablet? Esta es la versión para ordenador: ve a la versión para móvil, con la interfaz táctil y capturas del móvil.
Estás leyendo el tutorial en la web. En el editor del ordenador está en Ayuda > Tutoriales, al lado de tu proyecto. Los enlaces que en el editor copian dibujos y sonidos a tu proyecto, aquí los descargan en ZIP; en el móvil, BreynGINE te ofrece copiarlos al abrir el tutorial.

Capítulo 1Tu IA puede ayudarte

Antes de empezar, algo importante: no tienes que hacer esto solo. BreynGINE puede preparar un archivo que enseña a tu asistente de IA (ChatGPT, Claude, Gemini, Grok...) cómo funciona BreynFlow: todas las piezas con sus campos, los objetos listos para usar y cómo se hacen las piezas propias. Con él, la IA te puede escribir una pieza entera, explicarte cada línea o arreglar la que no te funciona.

1
Abre el menú Ayuda > Guía para tu IA...
2
Si quieres que la IA conozca tu juego, deja marcado Incluir mi proyecto (sus escenas, objetos y reglas). El archivo no se envía a ningún sitio: se queda contigo.
3
Pulsa Guardar archivo y adjúntalo en tu conversación con la IA, o pulsa Copiar y pégalo.
La Guía para tu IA: un archivo con todo lo que la IA necesita saber de BreynFlow.
La Guía para tu IA: un archivo con todo lo que la IA necesita saber de BreynFlow.
4
Pídele lo que quieras con tus palabras: «Hazme una pieza de BreynFlow que haga latir un objeto como un corazón».

La IA te dará el código de la pieza listo para pegar, y también puede darte reglas como texto. Esas reglas se pegan de una vez: en la pantalla BreynFlow, pulsa Pegar reglas..., pega el texto y pulsa Añadir las reglas. Antes de añadirlas verás cómo se leen, frase a frase, y cualquier problema que tengan.

Pegar reglas: el texto que escribe la IA, leído como frases antes de añadirlo.
Pegar reglas: el texto que escribe la IA, leído como frases antes de añadirlo.
Consejo: funciona también al revés. En el menú de una regla (los tres puntos ⋮), Copiar regla la copia también como texto, y en Pegar reglas... tienes Copiar las reglas de este objeto. Pégaselas a la IA y pregúntale por qué no hacen lo que esperas.

Si prefieres aprender a hacerlo tú (o entender lo que te ha escrito la IA), sigue: en este tutorial creas una pieza paso a paso.

Capítulo 2Lo que vas a hacer

BreynFlow trae muchísimas piezas: eventos (CUANDO), condiciones (SI) y acciones (HAZ). Pero a veces te falta justo una. Para eso están las piezas propias: un archivo corto de GDScript que BreynFlow enseña en el buscador y usa como cualquier otra pieza.

Vas a crear Latir, una acción que hace que un objeto crezca y vuelva a su tamaño unas cuantas veces, como un corazón. En la regla se leerá así: «hacer latir este objeto 3 veces en 1 s», y podrás tocar cada valor para cambiarlo, como en las piezas de BreynGINE.

Después verás cómo cambiar su código, qué son los espacios de nombres y cómo reunir tus piezas en un paquete para compartirlas o venderlas.

Consejo: no hace falta saber programar para seguir este tutorial: te damos el código hecho y te explicamos qué hace cada parte. Si nunca has usado BreynFlow, haz antes el tutorial de bienvenida.

Capítulo 3Prepara un objeto

Puedes usar cualquier proyecto de juego. Si quieres empezar de cero, crea uno nuevo con la plantilla 2D (cámara).

1
En la Jerarquía, pulsa el botón + y elige Sprite. Llámalo Corazón (doble clic sobre su nombre). Si tienes un dibujo de un corazón, arrástralo a su Texture (en el Inspector); si no, el dibujo provisional sirve.
2
Con Corazón seleccionado, ve al Inspector, baja del todo y pulsa Añadir componente > BreynFlow (reglas sin código).
3
Arriba, en la barra de pantallas, pulsa BreynFlow.
4
Pulsa Nueva regla y elige el evento Empieza la escena.

Ya tienes una regla que dice «Cuando empieza la escena». Falta lo que hace: ahí irá tu pieza.

Capítulo 4Crea la pieza

1
En la regla, pulsa + Acción. Se abre el buscador de piezas.
2
Abajo, pulsa Crear mi propia pieza...
El buscador de piezas. Bajo cada pieza, en pequeño, su espacio de nombres; abajo, «Crear mi propia pieza...».
El buscador de piezas. Bajo cada pieza, en pequeño, su espacio de nombres; abajo, «Crear mi propia pieza...».
3
En Nombre de la pieza escribe Latir. Es el nombre que verás en el buscador.
4
En Dónde se guarda deja Mis piezas (este proyecto).
5
Pulsa Crear.
Crear mi propia pieza: su nombre y dónde se guarda.
Crear mi propia pieza: su nombre y dónde se guarda.

Pasan tres cosas a la vez: se crea el archivo res://piezas/latir.gd con una plantilla, la pieza se añade a tu regla y su código se abre en la pantalla Script.

Capítulo 5Lo que trae la plantilla

La plantilla ya funciona: es una pieza de ejemplo con comentarios (las líneas que empiezan por #) que explican cada parte. Estas son las importantes:

La plantilla de una acción, en la pantalla Script.
La plantilla de una acción, en la pantalla Script.
  • @tool: permite que el editor use la pieza mientras trabajas (para enseñarla en el buscador y en las reglas). Siempre va la primera.
  • class_name Latir: el nombre de la pieza en el código.
  • extends FlowAction: dice que es una acción. Una condición sería FlowCondition y un evento, FlowEvent.
  • Las líneas @export var: los campos que se rellenan en la regla. Un campo FlowTarget es «qué objeto» (vacío quiere decir este objeto).
  • _get_piece_info(): cómo se ve la pieza. Su nombre, su frase (cada campo va entre llaves, como {objetivo}), su categoría, su descripción y un ejemplo.
  • _execute(context): lo que hace la pieza. Devuelve true cuando ha terminado.

Capítulo 6Escribe Latir

Ahora cambia la plantilla por la pieza de verdad. Selecciona todo el código (Ctrl+A) y cámbialo por este (con Copiar el código lo tienes en el portapapeles; pégalo con Ctrl+V):

@tool
class_name Latir
extends FlowAction

# Los campos de la pieza: qué objeto late (vacío: este objeto), cuántas veces,
# en cuántos segundos y cuánto crece (1,3 es un 30 % más grande).
@export var objetivo: FlowTarget
@export var veces := 3
@export var segundos := 1.0
@export var tamaño := 1.3

func _get_piece_info() -> Dictionary:
	return {
		"name": "Latir",
		"sentence": "hacer latir {objetivo} {veces} veces en {segundos} s",
		"category": "Mis piezas",
		"description": "Hace que un objeto crezca y vuelva a su tamaño unas cuantas veces, como un corazón.",
		"example": "Empieza la escena: hacer latir este objeto 3 veces en 1 s.",
	}

# Empieza: guarda el tamaño de cada objeto y pone el reloj a cero.
func _execute(context: FlowContext) -> bool:
	var inicio := {}
	for objeto in context.get_targets(objetivo):
		if "scale" in objeto:
			inicio[objeto] = objeto.scale
	context.set_state(self, &"inicio", inicio)
	context.set_state(self, &"tiempo", 0.0)
	return false # Todavía no ha terminado: la regla espera.

# Cada fotograma, hasta que devuelve true: crece y encoge.
func _process_action(context: FlowContext, delta: float) -> bool:
	var tiempo: float = context.get_state(self, &"tiempo", 0.0) + delta
	context.set_state(self, &"tiempo", tiempo)
	var terminado := tiempo >= segundos
	var crecer := 0.0 if terminado else absf(sin(tiempo / segundos * veces * PI))
	var inicio: Dictionary = context.get_state(self, &"inicio", {})
	for objeto in inicio:
		if is_instance_valid(objeto):
			objeto.scale = inicio[objeto] * (1.0 + (tamaño - 1.0) * crecer)
	return terminado

Guarda con Ctrl+S.

Latir, terminada.
Latir, terminada.

Cómo funciona

  • _execute() se llama una vez, cuando la regla llega a la pieza. Apunta el tamaño de cada objeto y devuelve false: «todavía no he terminado».
  • Mientras no termine, BreynFlow llama a _process_action() en cada fotograma. La pieza calcula cuánto crecer con una onda (la función sin) y devuelve true cuando han pasado los segundos. Entonces la regla sigue con la acción siguiente.
  • get_state() y set_state() guardan los valores de cada vez que se usa la pieza. Es importante: si diez enemigos tienen la misma regla, comparten la pieza, así que lo que cambia mientras el juego corre no se guarda en sus variables.
Consejo: el nombre de cada campo en la regla sale del nombre de su variable: tamaño se ve como «Tamaño». Por eso conviene ponerles nombre en tu idioma.

Capítulo 7Úsala en la regla

Vuelve a la pantalla BreynFlow. Tu regla ya dice:

La regla con tu pieza, igual que las de BreynGINE.
La regla con tu pieza, igual que las de BreynGINE.

«Cuando empieza la escena: hacer latir este objeto 3 veces en 1 s». Toca cualquier valor resaltado para cambiarlo: pon 5 veces, o 2 segundos.

Pulsa ▶ (arriba) para probar el juego: el corazón late al empezar.

Tu pieza ya está en el buscador para siempre, en la categoría Mis piezas. La puedes usar en cualquier regla de este proyecto, con cualquier evento: al tocar al jugador, al recibir un mensaje, cada 2 segundos...

Cambiar el código después

En la regla, el menú de la pieza (los tres puntos ⋮) tiene Editar el código de la pieza: abre su archivo en la pantalla Script. Cambia lo que quieras y guarda: todas las reglas que la usan cambian a la vez.

El menú de una pieza propia: «Editar el código de la pieza».
El menú de una pieza propia: «Editar el código de la pieza».

Capítulo 8Espacios de nombres

Fíjate en el buscador de piezas: bajo el nombre de cada pieza, en pequeño, sale de dónde viene. Es su espacio de nombres:

  • BreynGINE: las piezas que trae BreynGINE.
  • Mis piezas: las de tu proyecto, como Latir.
  • autor.paquete: las de un paquete de piezas (el siguiente capítulo).

Con el desplegable que hay junto a la búsqueda puedes ver solo las de uno de ellos.

El filtro de espacios de nombres: Todas, BreynGINE, Mis piezas y cada paquete.
El filtro de espacios de nombres: Todas, BreynGINE, Mis piezas y cada paquete.

Gracias a los espacios de nombres, dos piezas pueden llamarse igual sin liarse: el «Latir» de tu proyecto y el «Latir» de un paquete que te descargues son dos piezas distintas, y en el buscador sabes cuál es cuál.

Capítulo 9Haz un paquete

Un paquete reúne varias piezas para compartirlas con otras personas o venderlas en la tienda. Es una carpeta res://addons/autor/paquete/ con las piezas dentro y un archivo pack.cfg que dice su nombre, su autor, su versión y su descripción.

Para empezar uno:

1
En el buscador de piezas, pulsa Crear mi propia pieza...
2
Escribe el nombre de la pieza nueva y, en Dónde se guarda, elige Un paquete nuevo...
3
Escribe tu nombre (o el de tu estudio) y el nombre del paquete. Debajo verás dónde se guardará.
4
Pulsa Crear. Se crean la carpeta del paquete, su pack.cfg y la pieza.
Una pieza en un paquete nuevo: su espacio de nombres será autor.paquete.
Una pieza en un paquete nuevo: su espacio de nombres será autor.paquete.

Las siguientes piezas del paquete las creas igual, eligiendo el paquete en Dónde se guarda.

Consejo: las piezas de un paquete no llevan class_name: BreynFlow las encuentra por su carpeta. Así dos paquetes pueden tener piezas con el mismo nombre sin chocar entre ellos ni con las tuyas.

Compártelo

Para compartir un paquete, comparte su carpeta (por ejemplo, comprimida en un ZIP). Quien la copie en la carpeta addons de su proyecto tendrá tus piezas en su buscador, con tu espacio de nombres. Y pronto podrás publicarlo en la tienda de BreynGINE.

Abre pack.cfg (en el panel Proyecto) para escribir su descripción y subir su versión cuando lo mejores.

Capítulo 10Y ahora, tú

Ya sabes hacer piezas propias. Algunas ideas para seguir:

  • Una condición (FlowCondition): «la vida es par», «es de noche». Su función es _check(context) y devuelve true o false.
  • Un evento (FlowEvent): «cada 3 saltos», «se agita el ratón». Dispara la regla con flow.trigger_rule(rule_index).
  • Pídele ideas a tu IA con la Guía para tu IA: con tu proyecto incluido, sabe exactamente qué piezas tienes y cuáles te faltan.
Consejo: si una pieza no aparece en el buscador, mira que empiece por @tool, que no tenga errores (la pantalla Script los marca en rojo) y que la hayas guardado.

← Todos los tutoriales