Patches
Un patch es comportamiento que dibujas. Se coloca justo entre los eventos, que son simples pero no pueden guardar un valor ni hacer aritmética, y los scripts, que pueden hacer cualquier cosa pero te piden escribir código.
Recurre a un patch la primera vez que te pilles queriendo «…pero solo si la puntuación pasa de diez» o «…muévelo un poco más lejos cada vez».
Los patches se compilan, no se interpretan, así que corren exactamente igual de rápido que el código escrito a mano. Puedes leer el script generado en cualquier momento en el panel de código, que además es la forma más rápida de comprobar que un grafo hace lo que querías.
Cada nodo con sus puertos: referencia de nodos de patch — 203 nodos repartidos en 24 categorías.
Cuatro clases de nodo
| Clase | Cómo lo reconoces | Qué es |
|---|---|---|
| Event | solo salidas, una de ellas un pulso | donde empieza el grafo: al lanzar, al tocar, en cada fotograma |
| Effect | un pulso de entrada y otro de salida | hace algo, en orden |
| Control | divide o repite el pulso | rama, compuerta, repetición, for-each, once, retardo |
| Data | ningún pulso | un valor: un número, una suma, el campo de un componente |
El cable de pulso es el orden en que pasan las cosas. Síguelo desde un nodo de evento y estarás leyendo la secuencia. Los cables de datos solo llevan valores; no tienen orden.
Puertos y cables
Los puertos tienen tipo (número, booleano, cadena, vector, color, objeto) y los tipos incompatibles no se conectan, lo que pilla bastantes errores antes de ejecutar nada.
Un puerto de vector se despliega en x, y y z, así que puedes cablear uno y escribir los
otros dos.
Una entrada que dejas sin conectar usa el valor que hayas escrito en el nodo. Normalmente es lo que quieres: cablea solo las partes que cambian.
Decirle a un nodo con qué objeto trabajar
Los nodos de componente («get transform», «set material») necesitan saber qué objeto.
Deja el enlace vacío y significará este objeto, aquel al que está adjunto el patch. Rellénalo y el nodo trabajará sobre ese otro objeto.
Dos comodidades que conviene conocer:
- Los nodos get son indulgentes. Leer un componente que el objeto no tiene no devuelve nada, en vez de romper el grafo.
- Los nodos set solo escriben lo que hayas rellenado. Todo lo que dejaste en paz se queda como estaba.
Igual que todo lo demás que puedes ver. Recuérdalo solo si pasas valores entre un patch y un script, donde la rotación va en radianes.
Qué hay en el catálogo
| Categoría | Qué encontrarás |
|---|---|
| events | 30 puntos de partida: lanzamiento, fotograma, toque, teclas, colisiones, seguimiento |
| components | leer y escribir cualquier componente |
| math · vector · logic · string | aritmética, comparaciones, vectores, texto |
| flow | rama, compuerta, repetición, for-each, once, retardo, secuencia |
| state | contador, interruptor, temporizador, suavizado |
| entities · lifecycle | encontrar objetos, crear, generar, destruir |
| physics | impulsos, fuerzas, velocidad, raycast |
| net | multijugador: enviar, recibir, estado compartido, generar |
| globals · variables · messaging | valores compartidos con otros patches y scripts |
| ui | leer y escribir las variables de una tarjeta de interfaz |
| functions | llamar a otro patch, o a un script |
Reutilizar un patch
Guarda un grafo como recurso y podrás soltarlo en otros lienzos. Cómo se comporta depende de cómo lo hayas construido:
| Has construido | Obtienes |
|---|---|
| ningún nodo de entrada ni de salida | un comportamiento: lo sueltas y corre, sin cables |
| entradas, salidas y una entrada de pulso | un paso: corre cuando llega el pulso, y después las salidas están listas |
| entradas y salidas, sin pulso | una función: sus salidas se calculan allí donde se leen |
Sus conectores salen de los nodos de entrada y salida que pusiste dentro: añade uno y aparecerá en todos los que lo llaman. Edita el patch y todo lo que lo llame se actualiza en vivo.
Dentro de una función pura no existe «este objeto», así que los nodos de objeto y de componente no pintan nada ahí. Reserva las funciones para datos, matemáticas y lógica, y haz el trabajo de escena en quien la llama.
Los patches también pueden llamar a scripts, que es la forma habitual de llegar a algo que el catálogo no cubre.
Valores que sobreviven al grafo
Tres formas de conservar algo, que se diferencian por su alcance:
| Almacén | Compartido con |
|---|---|
| variables | los nodos de este único patch |
| globals | todos los patches, scripts y eventos del proyecto |
| messages | quien esté escuchando, como aviso puntual por nombre |
Los globals vienen en dos ámbitos: de proyecto (sobreviven al paso entre spaces) y solo de space (empiezan de cero). Los nombres se escriben en vez de cablearse, lo que mantiene el enrutado predecible.
La salida de emergencia
Dos nodos aceptan JavaScript directamente: expression devuelve un valor y action ejecuta instrucciones. Dentro tienes disponible todo lo que alcanza un script.
Están ahí para esa cosita que le falta al catálogo, no como forma de vida. Si te ves escribiendo mucho dentro de ellos, escribe un script y llámalo desde el grafo.
Cuando algo no va bien
Abre el panel de código. Un grafo que no compila —un bucle en los cables de datos, JavaScript roto en un nodo action— te lo dice ahí.
Y un patch roto nunca se lleva la escena por delante: los demás siguen corriendo.
Siguiente: Controles de juego — deja que la gente camine.