Límites y rendimiento
La sala lleva la cuenta de lo que cuesta ejecutar tus wireds. Cada pila, cada selector y cada efecto suman un coste, y lo que se acumula —el uso wired— tiene un tope. Si te pasas, el servidor corta lo que iba a ejecutar; si insistes, apaga los wireds de la sala diez minutos.
Esta página explica cuánto cuesta cada pieza, qué pasa cuando te pasas, qué otros topes tiene una sala y cómo aligerarla. Las cifras de tu sala, en directo, están en la pestaña Monitor de las herramientas de creador.
El uso wired
Sección titulada «El uso wired»Lo que gastan tus wireds se apunta por pulso, y un pulso es medio segundo. Cada vez que se cierra uno, el uso de la sala se pone al día: conserva el 76 % del uso anterior y le suma el 24 % de lo gastado en ese pulso. Es una media que sube y baja con retraso, no un contador que se borra cada medio segundo. En la práctica:
- Si tus wireds gastan lo mismo en cada pulso, el uso acaba valiendo justo eso: una pila que gasta 5 en cada pulso deja el uso en 5.
- Si dejan de gastar, el uso baja solo y sin saltos: tarda poco más de un segundo en caer a la mitad.
- Una ráfaga suelta apenas se nota; una carga sostenida, sí.
El tope es de 20.000, el mismo para todas las salas. Antes de ejecutar una pila, un efecto o el reparto de una señal, la sala mira con qué uso cerraría el pulso con lo que ya ha gastado, y si ya llegaría a 20.000, no lo ejecuta. El efecto que cruza el tope sí se ejecuta entero —un Mover sobre muchos furnis no se corta a la mitad—; lo siguiente ya no. Mantenido pulso tras pulso, eso son 20.000 de gasto por pulso: por ejemplo, mover unos 5000 furnis cada medio segundo sin parar. Una sala en reposo aguanta una ráfaga mayor, que no se corta hasta pasar de unos 84.000 en un solo pulso, pero no puede mantenerla.
Cuánto cuesta cada pieza
Sección titulada «Cuánto cuesta cada pieza»Estos son los costes que aplica el hotel. Los de los efectos se pagan por objetivo: por cada furni o persona sobre el que actúa el efecto, vengan de donde vengan —marcados a mano, de un selector, de una señal o el desencadenante—.
La pila
Sección titulada «La pila»| Qué pasa | Coste |
|---|---|
| Se dispara una pila, por el causante que sea o al recibir una señal | 0,13 |
| Se llama a una pila con Ejecuta Pilas | 0,10, más sus selectores y sus efectos |
| Se evalúa una condición | 0,03, tenga los furnis que tenga |
| Un complemento, un filtro o un retardo | 0 |
Eso incluye a los complementos de Variable FX, la Tabla de Clasificación y la Web API de variables: no suman al uso.
Los selectores
Sección titulada «Los selectores»Un selector paga 0,16 una sola vez por pila —aunque la pila lleve varios— y, además, cada selector suma:
- 0,002 por cada furni de suelo de la sala que tiene que recorrer —o por cada persona, bot o mascota, si es un selector de usuarios—, elija o no.
- 0,002 por cada uno de los que deja elegidos.
Los filtros —Filtrar a X Furnis, Filtrar a X Usuarios y los de variable más alta o baja— no cuestan nada. Una Selección Remota paga como un selector más 0,10 por cada pila a la que apunta y los selectores de esa pila.
Por eso un selector de furnis cuesta más cuantos más furnis tiene la sala: en una con 5000 furnis de suelo, solo recorrerla son 10 cada vez que corre.
Los efectos
Sección titulada «Los efectos»| Qué hace el efecto | Coste | Efectos |
|---|---|---|
| Cambia el estado de furnis | 1 por furni | Mutar, Mutar Aleatorio, Mutar Inverso y Transparência do Mobi |
| Mueve, gira o cambia la altura de furnis | 4 por furni, se mueva o no | Mover, Movimiento Relativo de Furni, Cambiar dirección de Furni, Cambiar Altitud de Furni, Caza, Fuga, Caza Azul, Caza Amarillo, Mover Furni a Furni, Mover Furni a Usuario, Mover Furnis en Grupo |
| Devuelve los furnis a lo guardado | 1 por furni si restaura el estado, y otros 4 si restaura la posición, el giro o la altura | A cero |
| Actúa sobre personas | 1 por persona | Mensaje, ¡Adiós!, Mover Usuario a Furni, Mover y Rotar Usuario (0 si no mueve ni gira), Unirse al Equipo, Abandonar Equipo, Congelar Usuario, Descongelar Usuario, Dar puntos, Dar Puntos a Equipo, Expulsar Usuario, Mutear usuario, Teletransportar a Sala, Colisión de Equipo, Wired Eventos |
| Actúa sobre un bot | 1 por ejecución, o 1 por persona si el efecto reparte entre varias | Mensaje de Bot, Bot habla o susurra a usuario, Bot mover a furni, Teletransportar Bot a Furni, Bot cambia ropa, Dar Item de mano, Bot Sigue a Usuario |
| Toca variables | 1 por objetivo; 4 por furni si Cambiar valor de variable escribe algo que lo mueve, gira o sube (@position, @position.x, @position.y, @occupation, @rotation, @altitude) |
Dar variable, Eliminar variable, Cambiar valor de variable |
| Maneja contadores | Ajustar reloj: 1 por contador, y nada si suma o resta 0. Control de Contador: 400 por cada temporizador de partida, sea cual sea el botón, y 0,5 por cada cronómetro suelto | Ajustar reloj, Control de Contador |
| Cuesta una vez por ejecución | 1 | Reset, Sumar puntuación, Escribir en Registro y su negativo (estos dos, solo si llevan mensaje) |
| Manda una señal | 1 por señal que sale. Cada pila que la recibe paga además lo suyo | Enviar Señal, Emisor de señales Negativo |
| Coloca o retira furnis temporales | 10 por temporal colocado y 4 por temporal retirado; los que no se llegan a colocar o a retirar no cuentan | Colocar Furni Temporal, Retirar Furni Temporal |
| Paga desde un cofre | 50 por persona e intento en Dar Moneda y 70 en Dar Furni, aunque falle | Dar Moneda desde Cofre, Dar Furni desde Cofre |
| No cuesta nada por sí mismo | 0 | Ejecuta Pilas y su negativo (la pila llamada paga lo suyo), Iniciar Transacción, Cancelar Transacción |
Tres cosas más:
- El retardo no suma. Un efecto con retardo cuesta lo mismo que sin él.
- Un efecto de furnis o de personas al que no le llega ningún objetivo no cuesta nada (salvo Dar Moneda y Dar Furni desde Cofre, que cobran 50 y 70 una vez aunque no llegue nadie).
- Los efectos del lado negativo —los que corren cuando una condición falla— se pagan igual.
Un ejemplo con números. Una pila con Periodos de 0,5 s, un selector Furnis en área que reúne 25 furnis en una sala de 800 furnis de suelo, y un Mover:
Disparo de la pila ............................ 0,13Selector: 0,16 + 0,002 × 800 + 0,002 × 25 ..... 1,81Mover sobre 25 furnis: 25 × 4 ................. 100Total por pulso ............................... 101,94Con ese ritmo el uso se queda en unos 102. Si el causante fuera Periodos Cortos a 50 ms, que dispara diez veces por pulso, serían unos 1019. Para llegar a 20.000 harían falta casi 200 pilas como la primera, todas disparándose en cada pulso.
Qué sale barato y qué caro
Sección titulada «Qué sale barato y qué caro»Las condiciones, los complementos y los retardos casi no cuestan. No tengas miedo de poner varias condiciones: tres condiciones cuestan menos que un selector, así que si puedes resolver algo con ellas en lugar de con un selector, sale más barato.
Lo caro son los efectos, sobre todo los que mueven furnis. Cada furni de un Mover cuesta cuatro veces lo que uno de un Mutar. Y como el precio es por objetivo, un selector que devuelve medio salón y un efecto detrás es la receta clásica para una sala lenta: el selector cuesta poco, pero decide cuántas veces se paga el efecto.
Lo caro de una señal es cada envío, no cada oyente. El efecto no cuesta nada por sí mismo, y cada señal que sale cuesta 1, la escuche alguien o no; con «Enviar señal para cada usuario» ese coste se paga tantas veces como usuarios, y con varias antenas, una vez por antena. Cada pila que la recibe paga lo que pagaría disparada de cualquier otra forma, así que diez oyentes son diez pilas más por envío.
Qué pasa cuando te pasas
Sección titulada «Qué pasa cuando te pasas»Primero se recorta, y si insistes se apaga.
Se corta lo que viene después del tope. Cuando el uso ya llegaría a 20.000, la pila, el efecto o la señal que iba a ejecutarse a continuación no se ejecuta (el que cruza el tope sí termina, así que el uso puede acabar algo por encima de 20.000), y lo que quedaba por hacer en esa ejecución se pierde (las pilas que no llegaron a correr no se recuperan). Es un techo de gasto por pulso, no un apagado: al pulso siguiente la sala sigue funcionando, con el mismo techo. Síntoma: cosas que “a veces no pasan”, sin patrón claro. En el Monitor sube EXECUTION_CAP cuando lo que se cancela es una pila entera; si el tope te pilla a mitad de una pila o de un reparto de señales, esa parte se pierde igual, pero el contador no sube.
La sala va a tirones. Aparte del uso, la sala mide el tiempo: si lo que hace en un pulso —mover personas y furnis, ejecutar wireds, todo— tarda más de medio segundo, queda marcada como pesada (Is heavy en el Monitor). Todavía no se apaga nada, pero ya está en la cuerda floja. Son dos medidas distintas: una sala puede estar pesada con poco uso —mucha gente caminando, muchos furnis moviéndose— y puede tener mucho uso sin estar pesada.
El wired se apaga diez minutos. Aquí hay seis formas distintas de llegar, y conviene saber que no todas necesitan un pico. Al apagarse, el Monitor suma KILLED y el registro anota el motivo:
| Se apaga cuando… | Cuánto tarda | Línea del registro |
|---|---|---|
| Una ejecución de wireds tarda más de 10 segundos en terminar | al instante | KILLED_TIME_BUDGET |
| El uso wired llega a 50.000 | al instante | KILLED_HARD_CAP |
| Un solo pulso de la sala dura más de 5 segundos | al instante | KILLED_INSTANT_LAG |
| Tres pulsos duran más del triple de lo debido (1,5 segundos), sin ninguno sano de por medio | 3 pulsos | KILLED_OVERLOAD |
| Va pesada y tocando techo —el tope del uso o el de 100 ejecuciones por pila—, tres pulsos seguidos | 3 pulsos | KILLED |
| Va pesada de forma sostenida, aunque nunca dé un pico | minutos u horas | KILLED_SUSTAINED_HEAVY |
La última es la que más gente pilla por sorpresa. No hace falta un pico: una sala que va un poco pasada de vueltas todo el rato va acumulando ese exceso —lo que se pasa de medio segundo en cada pulso—, y los pulsos sanos solo perdonan 0,1 segundos cada uno. Al llegar a 60 segundos de exceso acumulado, se apaga. Solo cuenta mientras tus wireds estén trabajando: una sala pesada solo por la gente que camina, sin wireds activos, no acumula.
Límites duros que conviene saber
Sección titulada «Límites duros que conviene saber»Estos topes no dependen del uso: son fijos, y se cumplen aunque la sala esté en reposo.
| Qué | Tope de fábrica |
|---|---|
| Furnis de suelo y de pared en la sala | 7000 y 2000 (7500 y 2500 con furnis temporales) |
| Furnis marcados a mano en cada lista de un wired | 30 (50 con permiso de Super Wired) |
| Ejecuciones de una misma pila | 100 cada medio segundo |
| Periodos, Periodos Largos y Periodos Cortos en una misma baldosa | 11, 11 y 1 |
| Efectos con retardo esperando | 300 |
| Variables permanentes de cada tipo (furni, usuario y globales) | 100 |
| Variable FX en una misma pila | 5 |
| Tablas de Clasificación publicadas en una sala | 4, con hasta 10 variables cada una |
| Mensajes privados de wired a una persona en un pulso | 10 |
Las peticiones a la API pública de variables tienen sus propios límites, por minuto y cada diez segundos.
Los furnis de la sala. Una sala admite como mucho 7000 furnis de suelo y 2000 de pared. Al llegar al tope, nadie puede colocar más: sale el aviso de sala llena. El Monitor enseña cuántos hay (Floor furni y Wall furni).
La selección a mano. Hay un tope de 30 furnis marcados a mano —50 con permiso de Super Wired—, y va por conjunto, no por wired. Está detallado en Qué acepta cada wired. Lo que te da un selector, una señal o el desencadenante no tiene tope de cantidad; pero se paga por objetivo, y además tarda: un efecto sobre 50 furnis o 50 personas tarda 50 veces más que sobre uno, y ese tiempo es lo que marca a la sala como pesada y, si insiste, la apaga.
Un solo Periodos Cortos por baldosa. De Periodos y de Periodos Largos caben hasta once de cada en la misma pila; el que sobre (el segundo corto, el duodécimo normal) se queda colocado pero no dispara nunca, sin aviso. Es una protección deliberada: son los que más rápido disparan.
Los bucles se cortan. Una misma pila no corre más de 100 veces en medio segundo (Periodos, Periodos Largos y Periodos Cortos no cuentan, salvo que la pila lleve un Límite de Ejecución). Al agotarse el cupo, las ejecuciones que sobran se descartan sin aviso en la sala y la cadena se para donde esté; en el Monitor sube RECURSION_TIMEOUT. Lo mismo pasa con una cadena de disparos que se provocan unos a otros y llega a más de 100 niveles. Un bucle de señales no tumba el hotel, pero tu montaje se detiene a mitad. Si un montaje legítimo necesita más vueltas (un relleno en cascada, por ejemplo), apila complementos Límite de Ejecución en esa pila: cada uno suma su cupo al tope.
Los retardos se acumulan, no se sustituyen. Ya lo cuenta Retardos, pero es la causa más habitual de sobrecarga: un causante rápido con efectos retardados va acumulando efectos pendientes más deprisa de lo que vencen.
Hay un tope de efectos pendientes. Una sala no puede tener más de 300 efectos esperando su retardo a la vez. Pasado ese punto, los nuevos se descartan sin aviso: no se aplazan, se pierden. En el Monitor, Delayed events enseña cuántos hay y DELAYED_EVENTS_CAP cuenta las veces que se ha llegado al tope. Si tienes efectos con retardo que “a veces no llegan”, mira si tu causante los está sumando más deprisa de lo que vencen.
Las variables permanentes tienen cupo. Una sala admite como mucho 100 variables permanentes de cada tipo (furni, usuario y globales), y el Monitor las cuenta en Permanent … vars. Al guardar la que haría 101 con esa duración, la caja no cambia y el único aviso es un susurro; volver a guardar una que ya era permanente sí pasa.
Cinco Variable FX por pila. El sexto que pongas en una misma baldosa se queda inerte y el Monitor suma VARIABLE_FX_LIMIT. Está contado en Variable FX.
Diez mensajes privados de wired por persona y por pulso. Los de más no llegan y no avisan de nada. Está contado en Mensaje.
Una ejecución se puede cortar por la mitad
Sección titulada «Una ejecución se puede cortar por la mitad»Lo de arriba tiene una consecuencia que casi nadie ve venir: una ejecución wired no es atómica. Puede quedarse a medias, y si estaba tocando una variable permanente, el jugador se queda con el valor intermedio.
Cinco formas de que pase, todas reales:
- Alguien recarga la sala —con
:reloado con el botón Reload de la pestaña Settings— o guarda cambios en el editor de planos. - La sala se descarga por quedarse vacía. Bastan unos diez segundos sin nadie dentro, y puede caer en mitad de una cadena de señales con retardos.
- Mantenimiento del hotel.
- El jugador sale de la sala. El cálculo sigue, pero lo que quede por escribir ya no llega a la base de datos.
- El servidor cancela ejecuciones pendientes por lo que cuenta esta página.
Cada una es improbable. Todas juntas, sobre una sala con gente y meses de uso, no lo son.
Qué hacer
Sección titulada «Qué hacer»Calcula en una variable de contexto y copia el resultado. Un cálculo de seis pasos sobre el oro de un jugador son seis oportunidades de quedarse a medias; el mismo cálculo en contexto y una sola escritura al final es una.
Efecto: Dar variable ............ oro_tmp ← el oro actual (contexto, sobrescribir)Efecto: Cambiar valor ........... oro_tmp × 2Efecto: Cambiar valor ........... oro_tmp − comisiónEfecto: Cambiar valor ........... oro_tmp máximo 99999Efecto: Cambiar valor ........... oro ← oro_tmp ← la única escritura permanenteY hay un segundo motivo, que no tiene nada que ver con caerse: si la variable tiene un Cambio de variable vigilándola, el cálculo de seis pasos lo dispara seis veces. Calculando aparte y copiando al final, dispara una.
Cómo aligerar una sala
Sección titulada «Cómo aligerar una sala»En orden de cuánto suele ganar cada cosa:
Sube el periodo. Pasar de Periodos Cortos a 50 ms a Periodos a medio segundo divide el coste por diez. Pregúntate si de verdad necesitas la fluidez o solo querías que fuese “rápido”.
Recorta el conjunto. Un selector de área 3×3 en lugar de 11×11 no es un ajuste menor: es la diferencia entre 9 objetivos y 121, y cada objetivo de más en un Mover son 4 de uso. Ajusta el área a lo que realmente necesitas tocar.
No pongas en un Mover lo que no se va a mover. Un efecto de movimiento cuesta 4 por furni aunque el furni se quede donde estaba.
Filtra antes de actuar, no después. Si vas a actuar sobre “los usuarios del equipo rojo”, usa el selector de equipo en vez de seleccionar a todos y descartar con condiciones. La condición se evalúa una vez por pila, pero el efecto se paga por objetivo. Y los filtros de «Filtrar a X» no cuestan nada.
Ojo con lo que cuesta de golpe. Un Control de Contador sobre un temporizador de partida son 400; un Dar Moneda o un Dar Furni desde Cofre, 50 o 70 por persona, salga bien o mal; un Colocar Furni Temporal, 10 por copia. No los pongas detrás de un causante que se dispara a todas horas.
Reduce las señales. Si tres pilas hacen lo mismo con la misma antena, plantéate si pueden ser una sola pila con varios efectos. Cada señal que sale cuesta 1, y cada pila que la recibe, 0,13 más lo que haga.
Apaga lo que no se usa. Un causante periódico corre mientras la sala esté cargada, haya o no gente mirando. Si tienes decoración animada por wired, considera pararla con una condición de “hay usuarios” o con una variable.
Para pedirle una optimización a una IA
Sección titulada «Para pedirle una optimización a una IA»Si vas a pedir ayuda, lo que necesita saber quien te ayude es esto:
- Cuántas pilas tienes y con qué causantes.
- Si usas selectores, sobre qué tamaño de área o cuántos furnis.
- Si algún efecto actúa sobre muchos objetivos a la vez.
- Qué marca el Monitor: el uso wired, si la sala está pesada y qué avisos tienen contador.
- Cuál de los tres síntomas de arriba estás viendo.
Con eso se puede razonar. Con “mi sala va lenta” no.