El orden de ejecución
Cuando un causante dispara, la pila pasa siempre por las mismas cuatro fases, en este orden:
1. SELECTORES ¿sobre qué furnis y qué usuarios va esto?2. COMPLEMENTOS ¿cambian las reglas del resto de la pila?3. CONDICIONES ¿se cumple lo que pido?4. EFECTOS hacer las cosasCasi todo lo que parece un fallo del Wired se explica sabiendo este orden.
1. Selectores
Sección titulada «1. Selectores»Lo primero que ocurre es resolver el conjunto: qué furnis y qué usuarios entran en juego. Los selectores se evalúan antes que nada, así que trabajan sobre el estado de la sala tal como estaba en el momento del disparo, antes de que ningún efecto haya tocado nada.
Esto tiene una consecuencia práctica importante: si tu pila mueve furnis y a la vez los selecciona, el selector ve las posiciones de antes del movimiento.
2. Complementos
Sección titulada «2. Complementos»Con el conjunto ya resuelto, se aplican los complementos. Aquí es donde se decide si las condiciones van a evaluarse con Y o con O, si esta ejecución está dentro del límite permitido, en qué orden van a correr los efectos, y qué texto real va a sustituir a cada identificador.
3. Condiciones
Sección titulada «3. Condiciones»Ahora se evalúan las condiciones. Por defecto se exigen todas a la vez: basta con que una falle para que el bloque entero falle.
Si añades a la pila el complemento de evaluación O, cambia la regla y basta con que se cumpla una.
El resultado de esta fase solo tiene dos salidas:
- Pasan → se ejecutan los efectos normales.
- Fallan → se ejecutan los efectos negativos, si los hay. Si no los hay, la pila termina sin hacer nada.
4. Efectos
Sección titulada «4. Efectos»Los efectos no corren en el orden en que los apilaste. El servidor los reparte en siete escalones, siempre los mismos, y lo hace para que el resultado sea el que esperas sin que tengas que ordenar nada tú. De primero a último:
- La cadena de partida: Unirse al Equipo, Control de Contador (Iniciar), Dar puntos, Cambiar valor de variable (solo si escribe una puntuación de equipo), Dar Puntos a Equipo, Control de Contador (Parar o Reiniciar) y Abandonar Equipo, en ese orden.
- Las personas y los furnis temporales nuevos: Mover y Rotar Usuario, Mover Usuario a Furni y Colocar Furni Temporal.
- Los furnis, en cuatro tandas seguidas:
- Mutar, Mutar Aleatorio, Mutar Inverso, Mover, Movimiento Relativo de Furni, Cambiar dirección de Furni, Caza, Fuga, Caza Azul y Caza Amarillo, con Mover Furnis en Grupo el último de la tanda.
- Mover Furni a Furni, Mover Furni a Usuario, Congelar Usuario, Ajustar reloj, Retirar Furni Temporal y A cero.
- A cero, si tiene marcada la dirección.
- Cambiar Altitud de Furni y A cero, si solo restaura la altura.
- Las variables: Dar variable, Cambiar valor de variable y Eliminar variable, en ese orden.
- Todo lo demás: Mensaje, ¡Adiós!, Descongelar Usuario, Expulsar Usuario, Teletransportar a Sala, Transparência do Mobi, los efectos de bots y de cofres, Reset…
- Las señales y las llamadas: Enviar Señal y Ejecuta Pilas.
- El registro: Escribir en Registro, el último de todos.
Entre un escalón y otro el orden es fijo; dentro de la cadena de partida y de las variables también (ya va indicado). Dentro de cada tanda de los furnis, y dentro de «todo lo demás», no lo es.
A cero va en la segunda tanda de los furnis, salvo que tenga marcada la dirección (entonces va en la tercera) o que solo restaure la altura (entonces va en la cuarta).
No hace falta que te lo aprendas entero. Hay cuatro cosas de esta escalera que sí conviene conocer, porque cambian lo que hace tu pila: la cadena de partida, que las personas se mueven antes que los furnis, que las referencias son una foto del disparo y el orden de las operaciones matemáticas.
La cadena de partida
Sección titulada «La cadena de partida»Los efectos que gobiernan una partida tienen su propio orden dentro de la secuencia, y siempre corren así:
| Orden | Efecto |
|---|---|
| 1 | Unirse al Equipo |
| 2 | Control de Contador — Iniciar |
| 3 | Dar puntos |
| 4 | Cambiar Valor de Variable, solo si apunta a una puntuación de equipo |
| 5 | Dar Puntos a Equipo |
| 6 | Control de Contador — Parar o Reiniciar |
| 7 | Abandonar Equipo |
Están en ese orden por dos razones muy concretas:
- La partida tiene que estar abierta cuando se puntúa. Por eso Iniciar (2) va antes que los dos efectos de dar puntos (3 y 5). Unos puntos dados sin partida abierta no hacen nada, y no avisan.
- Todavía tiene que haber gente en los equipos cuando se cierra. Al cerrar (6), la tabla mira quién había en cada equipo para anotar. Por eso Abandonar Equipo va detrás (7) y no delante.
Gracias a este orden puedes montar una partida entera en una sola pila sin pelearte con nada. Lo tienes con un ejemplo completo en Tablas de Puntuación.
Las personas se mueven antes que los furnis
Sección titulada «Las personas se mueven antes que los furnis»Los efectos que mueven personas corren antes que cualquiera que mueva o cambie un furni, Mutar incluido. Es lo que hace que la persona vea la sala como estaba al disparar la pila, y que los furnis se encuentren ya con ella en su sitio nuevo:
- Si un Mover saca un mueble que no se puede pisar de la casilla a la que mandas a una persona, la persona no entra: el mueble todavía estaba.
- Si un Mover mete un mueble en esa casilla, la persona entra y es el mueble el que no cabe.
Las referencias son una foto del disparo
Sección titulada «Las referencias son una foto del disparo»Los efectos que apuntan a la posición de otro furni o de otra persona —Mover Furni a Furni, Mover Furni a Usuario, Mover Usuario a Furni, Mover Furnis en Grupo, Caza y Fuga— usan donde estaba ese furni o esa persona al disparar la pila, aunque otro efecto de la misma pila ya lo haya movido. Lo único que se mira en vivo es si hay sitio para aterrizar. Con retardo, el efecto corre más tarde y toma la foto de ese momento.
El orden de las operaciones matemáticas
Sección titulada «El orden de las operaciones matemáticas»Si pones varios Cambiar Valor de Variable en la misma pila, no se aplican en el orden en que los apilaste ni al azar: se aplican en precedencia matemática, igual que en el hotel oficial.
Asignar → Potencia → Multiplicación → División → Módulo → Suma → RestaEs lo que hace que x = 2, x × 3 y x + 1 en la misma pila den siempre 7, y no 9 unas veces y 7
otras.
Las operaciones que el oficial no lista —definir mínimo y máximo, aleatorio, valor absoluto y las de bits— van después de esas siete, y entre ellas no hay orden garantizado.
Si necesitas otro orden, el complemento Ejecutar en Orden manda sobre esto.
El resto de la secuencia
Sección titulada «El resto de la secuencia»Lo demás no hace falta memorizarlo, pero sí saber qué te garantiza:
- Los movimientos van antes que las variables. Un Cambiar valor de variable que lee la posición, el estado o la altura de un furni, o la posición de una persona, ve el resultado de los movimientos de su misma pila y no el de antes.
- Las variables se calculan antes que el grueso de los efectos. Por eso un Mensaje puesto en la misma pila enseña el número recién calculado y no el que había al empezar. Justo después, los complementos de texto capturan su valor, que es lo que permite que un identificador muestre en su propia pila ese mismo número.
- Las señales y las llamadas salen al final, así que la pila que las recibe ve el estado ya modificado y no a medias. Si mueves un furni y envías una señal en la misma pila, la pila remota verá el furni ya movido.
- El registro es lo último de todo, incluso por detrás de las señales, para que anote lo que de verdad acabó pasando.
- Retirar Furni Temporal corre con los furnis, pero quita los suyos al final de toda la ejecución, después incluso de las pilas que reciben la señal.
Dentro de una misma tanda no hay orden
Sección titulada «Dentro de una misma tanda no hay orden»Entre un escalón y otro el orden es fijo, pero dentro de una tanda no está garantizado: dos efectos que caen en la misma tanda —Mover y Mutar, o Mensaje y ¡Adiós!— pueden salir en cualquier orden, y no tiene por qué ser el que les diste al apilarlos. Si necesitas que dos de ellos ocurran en un orden concreto tienes dos salidas: el complemento Ejecutar en Orden, que los ordena por la altura a la que coloques los furnis, o partir la pila y encadenarla con una señal.
El caso de varias pilas a la vez
Sección titulada «El caso de varias pilas a la vez»Un mismo evento puede disparar varias pilas: tres baldosas distintas con causantes de pisar, o varias pilas escuchando la misma antena.
Cuando eso pasa, el sistema evalúa todas las condiciones antes de ejecutar ningún efecto. Es decir, todas las pilas miran el mismo estado de la sala, el de antes de que ninguna hubiera actuado.
Esto evita un problema clásico: si la pila A apaga una luz y la pila B tenía la condición “la luz está encendida”, B no se queda fuera solo por haberse evaluado un instante después. Las dos ven la luz encendida y las dos actúan.
Es un comportamiento deliberado. Si lo que quieres es justo lo contrario –que solo una de ellas actúe– tienes que encadenarlas con señales en lugar de dispararlas en paralelo.
Y en cuanto a los efectos, tampoco corren pila a pila: los de todas las pilas disparadas a la vez se ordenan juntos con la misma escalera de arriba (las variables de cualquiera de ellas antes que los mensajes de cualquiera, las señales de todas al final). Entre pilas del mismo escalón, el sistema sortea cuál va antes y mantiene ese orden en todos los escalones: si la pila X va detrás de la Y al escribir variables, también va detrás al mover a las personas.
Una pila con Ejecutar en Orden, Efecto aleatorio o Efecto no visto corre como un bloque: ocupa el sitio de su efecto más temprano y sus efectos no se mezclan con los de las otras pilas.
Lo que vive durante la ejecución
Sección titulada «Lo que vive durante la ejecución»Una ejecución no termina cuando termina la pila que la empezó: sigue por cada señal que envíe y por cada pila que llame con Ejecuta Pilas, hasta que la última pila de la cadena acaba. Todo ese recorrido es la misma ejecución, y tiene datos propios que nacen con ella y mueren con ella: las variables de contexto y las internas de contexto.
Cuando una pila envía dos señales (o dos pilas escuchan la misma antena), la ejecución se abre en dos ramas. Las dos ven lo que había antes de separarse, y a partir de ahí:
- Lo que una rama declara con Dar variable, la otra no lo ve: cada rama lleva lo suyo.
- Lo que había antes de separarse lo comparten. Si la rama A cambia
numerode 1 a 20 con Cambiar valor, la rama B lee 20. - Una rama deja de compartir una variable en el momento en que la vuelve a dar con Sobrescribir variable existente: eso crea una variable nueva, suya, que tapa a la de antes; las demás ramas siguen con la vieja. Cambiar valor no rompe el vínculo; sobrescribir sí.
Y una consecuencia que cuesta ver porque no rompe nada: si un montaje se llama dos veces dentro de la misma ejecución, la segunda llamada se encuentra las variables de la primera todavía vivas, y sin sobrescribir lee valores que estaban bien hace un momento pero no son los suyos.
La tabla con qué hace cada operación (leer, dar, dar con sobrescribir, cambiar, eliminar) está en Las reglas de ámbito.
Lo siguiente
Sección titulada «Lo siguiente»- Fuentes y objetivos – cómo se reparte el conjunto entre los efectos.
- Señales y pilas remotas – la forma correcta de encadenar en orden.