Economía
Dónde encuentra el agente dinero en movimiento — ExyliaLib, Vault, VaultUnlocked, PlayerPoints, ExcellentEconomy y la API —, cómo cuenta cada cambio una sola vez, y qué hace con ello la página Economía.
El informe de economía responde a una pregunta: ¿se acumula el dinero más rápido de lo que la gente juega? Para responderla el agente necesita dos cosas de cada moneda de un servidor: qué se movió (dinero creado y destruido, y por qué) y qué existe (la masa monetaria). Esta página cuenta de dónde saca las dos, y la página del panel que las lee.
La economía es solo de Paper y Spigot; un proxy no mueve dinero. Todo lo de aquí se descarta en el agente cuando el módulo Economía está desactivado.
Las fuentes
Cada cambio de saldo se cuenta una vez, desde la primera fuente que lo ve:
| Fuente | Monedas | Motivo registrado |
|---|---|---|
| El evento de cambio de saldo de ExyliaLib | Cada moneda de ExyliaLib, por su id. | El propio motivo de la transacción, como shop:sell o pay:tax. |
| Un proxy transparente delante de Vault | vault | vault: y el plugin que llamó a Vault, como vault:shopguiplus. |
| Lo mismo delante de VaultUnlocked | vault para la moneda por defecto, si no la moneda indicada | vault: y el plugin que lo llamó. |
| El evento de cambio de PlayerPoints | playerpoints | playerpoints |
| El evento de cambio de ExcellentEconomy | Cada moneda por su id; la principal es vault mientras ExcellentEconomy sea la economía de Vault. | excellenteconomy |
ExyliaAnalytics.economy(...) | La que indique el plugin. | El que diga el plugin. |
Los ids de moneda se pasan a minúsculas y se cortan a 32 caracteres, los motivos a 64. Un cambio de cero se ignora.
El proxy de Vault
Vault no lanza ningún evento cuando se mueve dinero, así que el agente se pone delante: registra su propia economía con la prioridad más alta, reenvía cada llamada intacta a la real y, cuando un ingreso o una retirada ha salido bien, la registra con el plugin que hizo la llamada — el primer plugin de la pila de llamadas que no es Vault, VaultUnlocked, ExyliaLib ni el agente. Nada de lo que hace puede cambiar el resultado de un pago ni hacer que falle.
El proxy no se instala cuando:
vault-wrapper: falseenconfig.yml;- ExyliaSurvivalCore es la economía de Vault — ya informa de cada cambio a través de ExyliaLib;
- el plugin de economía se registró antes con la prioridad más alta, así que el proxy no se usaría.
/analytics status dice cuál de estos casos aplica en las líneas Vault y VaultUnlocked.
El proxy se instala en el primer tick del servidor, cuando ya se han activado todos los plugins. Un plugin que buscó la economía de Vault al activarse y se la guardó llama directamente a la economía real, y sus pagos no se ven. El agente vuelve a comprobarlo cada vez que una economía se registra o se da de baja.
Contar cada cambio una vez
Un servidor puede tener varias de estas a la vez, y se llaman entre sí: la moneda vault de ExyliaLib pasa
por Vault, VaultUnlocked responde a través de su propia interfaz, y una economía lanza su propio evento
mientras Vault mueve el dinero. Las reglas:
- Un cambio que ocurre dentro de una llamada a Vault a través del proxy es el mismo cambio: cada evento lanzado durante ella se ignora, y se registra la llamada exterior a Vault.
- La moneda
vaultde ExyliaLib se descarta cuando Vault ya está cubierto — por el proxy, por ExyliaSurvivalCore o por el propio evento de ExcellentEconomy. - La moneda
pointsde ExyliaLib se descarta cuando PlayerPoints está enganchado.
Qué existe: masa monetaria y saldos
Los cambios por sí solos no dicen cuánto dinero hay. Tres fuentes sí:
| Fuente | Qué informa | Cuándo |
|---|---|---|
ExyliaAnalytics.supply(...) | La masa monetaria exacta: todos los saldos sumados y cuántas cuentas tienen dinero, por ámbito de almacenamiento. | Cuando el plugin la envía. |
| Lectura de saldos | El saldo de un jugador: a través de Vault (salvo que lo sirva ExyliaSurvivalCore), PlayerPoints, y cada moneda de ExcellentEconomy distinta de la que se lee por Vault. Se lee fuera del hilo principal. | Al entrar y al salir, como mucho una vez por jugador cada 5 minutos. |
| Lo que se tiene en ExyliaLib | Lo que un jugador tiene en cada moneda de ExyliaLib de la que no informa ya ninguna fuente anterior. | Al entrar, al salir y cada 10 minutos para todos los conectados. |
Lo que se tiene importa para las monedas que cambian sin transacción: una barra de experiencia crece por un mob, un objeto-moneda se recoge del suelo. Para esas, contar lo que lleva la gente es la única masa monetaria que existe. ExyliaLib hace cada recuento en el hilo dueño del jugador, y un recuento que llega después de que el jugador se fue — que daría cero porque el inventario ya no está — se descarta en vez de registrarse como un bolsillo vacío. Hace falta un ExyliaLib lo bastante reciente para contar fuera del hilo del jugador; con uno más antiguo el estado dice ExyliaLib (flows only).
Cómo se envía
Los cambios se suman por jugador, moneda y motivo y se envían una vez por minuto como un
economy.flow cada uno: cuántos cambios, el total ganado, el total gastado y el saldo tras el último. Una
varita de venta que se dispara mil veces por minuto cuesta un evento. Como mucho se guardan 50.000 de esas
claves a la vez; por encima, las nuevas esperan al minuto siguiente. Al apagarse, el último minuto parcial
se envía con el resto.
La página Economía
Elige una moneda; la lista muestra cuántos jugadores tiene cada una. El filtro de servidor elige un servidor de juego o todos.
| Sección | Muestra |
|---|---|
| KPIs | Masa monetaria, masa por jugador activo, dinero creado y destruido, y el ratio de sumidero. |
| Veredicto | La masa por jugador activo de las últimas 8 semanas completas con una recta ajustada: Inflación por encima de +5% a la semana, Deflación por debajo de −5%, si no Estable. Necesita al menos 3 semanas de datos. |
| Masa monetaria | Todos los saldos sumados, por periodo. |
| Masa por jugador activo | Masa monetaria ÷ jugadores activos en los últimos 30 días. Si sube más rápido que el juego, hay inflación. |
| Dinero creado y destruido | Por periodo, lo que creó cada motivo (sobre la línea) y lo que destruyó (debajo). |
| Fuentes y sumideros | Cada motivo por el que se movió dinero, de mayor a menor neto: entrado, salido, neto, proporción, jugadores, y si es fuente, sumidero o transferencia. Los motivos de Vault muestran el plugin que llamó, marcados vía Vault. |
| Quién tiene el dinero | Saldo mediano, Gini, la parte del 1% y el 10% más ricos, y el dinero ocioso — en manos de jugadores ausentes 30 días o más. |
| Progreso de los nuevos | Saldo mediano de los jugadores nuevos 1, 7 y 30 días después de su primera sesión. |
Definiciones
| Métrica | Definición |
|---|---|
| Masa monetaria | Por periodo, el último informe supply de cada ámbito de almacenamiento, sumado entre ámbitos. Un periodo sin informe queda vacío, nunca se arrastra. |
| Masa monetaria estimada | Para una moneda de la que nadie informa la masa: la suma del último saldo conocido de cada jugador (por debajo de cero cuenta como cero), arrastrada entre cambios. Faltan los jugadores no vistos desde que empezó el seguimiento, así que se queda por debajo de la real; la página la marca como estimada con el número de jugadores que tiene detrás. |
| Neto de un motivo | Dinero entrado − dinero salido de un motivo, entre todos los jugadores. Un pago entre jugadores se anula dentro de su motivo. |
| Creado / destruido | Los netos de motivo positivos / negativos. |
| Ratio de sumidero | Destruido ÷ creado. Por debajo de 1 el dinero se acumula; por encima se drena. |
| Fuente, sumidero, transferencia | Una transferencia cuando el neto queda dentro del 5% del mayor de su bruto entrado y salido; si no, una fuente (positivo) o un sumidero (negativo). |
| Último saldo conocido | El saldo más reciente de un jugador, de un cambio o de una lectura de saldo. |
| Gini | 0 cuando todos tienen lo mismo, 1 cuando un jugador lo tiene todo. |
Cada servidor envía los mismos ids de moneda (vault, playerpoints), compartan una economía o tenga
cada uno la suya. Sobre todos los servidores, el saldo de un jugador es el último que se informó en
cualquiera — correcto para una economía compartida, y uno de dos saldos para economías separadas. Lee las
economías separadas servidor a servidor.
¿Falta algo en esta página? Dínoslo en Discord