Saltar al contenido

La promesa de diseño

Equilibrio

Nunca te vas a encontrar algo imposible de repente. Esto es exactamente cómo se garantiza, con los números que hay en run/balance.ts.

La regla que manda sobre todas: NUNCA puede aparecer un rival muy por encima del equipo del jugador. El nivel teórico del círculo se recorta siempre contra la media del equipo, así que descender rápido no te mata de golpe, solo te deja sin margen. — El comentario de cabecera de run/balance.ts

Un roguelike con muerte permanente tiene una tentación obvia: escalar la dificultad con la profundidad y dejar que el jugador se estrelle. RÉQUIEM no hace eso. La profundidad decide cuánto puede llegar a subir un encuentro, pero el que decide de verdad es tu equipo. Si vas corto de nivel, el círculo deja de escalar.

Esto no lo convierte en un juego fácil: lo que te mata es el reloj. La energía no se regenera y quedarse sin ella te cuesta PS, así que no puedes farmear indefinidamente para ponerte al día. El techo de nivel te protege de la injusticia, no del desgaste.

Paso 1: el nivel de amenaza de tu equipo

Antes de decidir nada, el juego calcula un solo número que resume lo fuerte que estás. No es la media a secas: threatLevel() toma la media de los Pokémon en pie, pero con un suelo del 60% del nivel más alto de todo el equipo, cuenten o no los debilitados.

media   = media de niveles de los que siguen en pie (si no queda ninguno, de todo el equipo)
techo   = nivel más alto del equipo, esté como esté
amenaza = max( media ; techo × 0,6 )

El suelo del 60% existe por una razón muy concreta: sin él bastaría con dejar debilitado a todo el equipo menos a un alevín de nivel 5 para que los encuentros se volvieran triviales. El juego quiere ser compasivo cuando vas mal, no explotable.

Equipo Media de los vivos Suelo (60%) Amenaza
Equipo sano y equilibrado
Lo normal: la media manda.
29,8 19,2 29,8
Equipo tocado, quedan dos en pie
Los debilitados no cuentan para la media: el juego se ablanda.
30,5 19,2 30,5
Intento de abuso: todos debilitados menos un alevín
Aquí entra el suelo del 60% del más alto. La media sería 5, pero el nivel de amenaza no baja de 19.
5,0 19,2 16,0
Un solo Pokémon, sano
Media 40, suelo 24: manda la media.
40,0 24,0 40,0

Paso 2: el nivel del rival

Con la amenaza en la mano, encounterLevel() decide qué nivel sale. Primero calcula el nivel «teórico» del círculo interpolando entre su mínimo y su máximo según lo avanzado que estés dentro de él, y después lo mete a la fuerza entre un suelo y un techo que dependen de tu equipo.

progreso  = nodo / (nodos_del_círculo − 1)
teórico   = nivel_mín + (nivel_máx − nivel_mín) × progreso

techo     = amenaza + bonus[tipo]
suelo     = amenaza − holgura[tipo]

nivel     = min( max(teórico ; suelo) ; techo )     ← el techo se aplica el ÚLTIMO
resultado = redondeo, acotado entre 2 y 100

Que el techo se aplique el último es lo que hace que la promesa se cumpla: pase lo que pase con el teórico, el resultado nunca supera tu amenaza más el bonus del tipo de encuentro. Y esos bonus son pequeños:

Tipo de encuentro Puede subir hasta Puede bajar hasta Con equipo de 30 Con equipo de 52
Salvaje amenaza +0 amenaza −3 30 52
Élite amenaza +2 amenaza −2 31 54
Alma en Pena amenaza +1 amenaza −2 31 53
Legendaria amenaza +3 amenaza −1 32 55
Heraldo amenaza +4 no baja 32 56
Coliseo amenaza +0 amenaza −2 30 52

Las dos últimas columnas son el último nodo del círculo 5 (El Coro de Estática, teórico 58), calculadas llamando a encounterLevel(). Un jugador que llegue ahí con el equipo a nivel 30 se encuentra un Heraldo de nivel 32, no de 58. Está 2 niveles por encima de él, que es exactamente el bonus del Heraldo, ni uno más.

El recorte, visto de golpe

Primer nodo del círculo 5, cuyo nivel teórico es 46. Esto es lo que sale de verdad según cómo vaya tu equipo:

Amenaza de tu equipo Nivel teórico Nivel del salvaje Qué ha pasado
10 46 10 Recortado por el techo: el círculo deja de escalar.
20 46 20 Recortado por el techo: el círculo deja de escalar.
30 46 30 Recortado por el techo: el círculo deja de escalar.
40 46 40 Recortado por el techo: el círculo deja de escalar.
50 46 47 El teórico manda, pero el suelo lo sostiene.
60 46 57 El teórico manda, pero el suelo lo sostiene.
70 46 67 El teórico manda, pero el suelo lo sostiene.

Fíjate en que un salvaje nunca sube por encima de tu amenaza (bonus 0) y puede bajar 3 niveles por debajo. El Heraldo es el único que se permite +4, y a cambio no tiene holgura por abajo: siempre está al menos a tu altura.

Paso 3: qué especies pueden salir

El nivel no es lo único que se controla. La piscina de cada círculo se filtra por potencia (total de estadísticas base) y por fase evolutiva, para que el escalado tenga sentido y no te salga un Blissey en el primer nodo ni un Caterpie en el séptimo.

total máximo = 300 + círculo × 48
total mínimo = 0 en los círculos 1 y 2; a partir del 3, min(470 ; 170 + círculo × 26)
fase máxima  = básicos en los círculos 1-2, hasta 2.ª fase en 3-4, todas a partir del 5

peso = 3 si comparte alguno de los tipos temáticos del círculo, si no 1
       (las legendarias, cuando entran, siempre pesan 1)

Las legendarias no aparecen en la piscina normal hasta el círculo 10.
Si el filtro deja menos de 16 especies, se rellena con las no legendarias más potentes.

El suelo de potencia está saturado en 470 a propósito: si creciera sin límite, los círculos profundos se quedarían sin candidatos, porque por encima de ~500 ya casi solo hay legendarias.

# Círculo Total base Fase máx. Especies Temáticas (×3) Legendarias del evento
1 El Umbral 0-348 0 121 48
2 Los Pantanos de Ceniza 0-396 0 139 64
3 La Galería de los Ahogados 248-444 1 198 61 6
4 La Forja 274-492 1 236 56 11
5 El Coro de Estática 300-540 2 293 79 15
6 El Osario 326-588 2 246 44 21
7 El Juicio 352-636 2 227 71 21

Las columnas «Especies» y «Temáticas» salen de llamar a encounterPool() con el dataset cargado; «Legendarias del evento» de legendaryPool(). En total el juego considera legendarias 21 números de la Pokédex.

Y aun así puedes morir

Lo que el techo de nivel no te protege:

Los modificadores, en un sitio

Marcas y Reliquias no tocan las fórmulas: entran por funciones aparte, todas en el mismo fichero, para que se pueda ver de un vistazo lo que altera cada cosa.

FunciónQué decideQuién la mueve
maxEnergyOfEnergía máxima (base 100)Superviviente +25 · Pulmón de Hierro +30
descentEnergyCostCoste de cada descenso: 9 (suelo 2)Reloj de Hueso −3
echoMultiplierEcos ganadosCarroñero +50% · Lengua Codiciosa +40%
shopPriceMultiplierPrecios de la tiendaLengua Codiciosa ×1,2
expMultiplierExperienciaLección Amarga ×1,25
catchRateMultiplierProbabilidad de capturaDomador ×1,3
damageMultiplierDaño que hacesSangre Divina ×1,15 (a cambio de −10% PS)
teamSizeLimitTamaño del equipo (6)Alma Gemela → 7
descentRevealedSi ves lo que hay abajo antes de bajarVidente y Ojo del Oráculo

Los detalles de cada una están en Marcas y Reliquias.