4.2 KiB
Arquitectura — 1v9: Convertite en Leyenda
Visión general
Es un juego de decisiones (historia interactiva) en un único archivo index.html
(HTML + CSS + JS inline, sin dependencias externas para jugar). Todo el estado vive en memoria
durante la partida; no hay persistencia obligatoria (un localStorage opcional guarda el
"Salón de la fama" con las mejores carreras).
Landing → Creación → Oferta de academia → Loop de carrera (N splits) → Resumen final (compartible)
Flujo de pantallas
| Pantalla | Rol |
|---|---|
| Landing | Presentación + botón "Convertite en leyenda" + Salón de la fama |
| Creación | Nick, nº de invocador, mano, región, rol |
| Oferta de academia | 3 equipos aleatorios de tu liga para elegir |
| Carrera (Screen A) | Panel de jugador + decisión + timeline, 2 columnas |
| Resumen (Screen B) | 3 paneles + grid de orgs + botón "Jugar de nuevo" |
Datos del juego
REGIONES
LCK / LPL / LEC / LCS / LTA / VCS, cada una con:
code(KR/CN/EU/NA/AM/VN),flag,country,flavor.threshold: umbral de ELO para competir en su primera división (LCK=68…VCS=50).
TEAMS (68 equipos reales)
{ id, name, div } — div: 1 = primera división, div: 2 = segunda/academia.
Los logos se resuelven con LOGO_EXT[id] → logos/<id>.<ext>.
ROLES
{ em, fl, kill, ast, death, pentaW } — coeficientes de farmeo/perf de cada rol.
EVENTS (26 eventos de decisión)
Cada evento: { cat, title, ctx, opts[] }.
Cada opción: { t, d, risk, pos, neg, x? }
d: deltas a stats (mecanica, vision, farmeo, sinergia, marca).risk: probabilidad de fracaso (0-1).pos/neg: textos de resultado (éxito/fracaso).x: efectos extra (rolChange,transfer).
COMPETITIONS (5 internacionales)
{ split, ic, flavor } — First Stand (2), MSI (4), EWC (6), Asian Games (8), Worlds (último).
Estado de partida (G)
{
nick, num, hand, region, role,
teamId, div,
stats: { mecanica, vision, farmeo, sinergia, marca },
split, totalSplits,
kills, assists, deaths, games, penta,
value, maxValue, salary, ratingMax,
teamTitles, indTitles, intl,
teams, events, history,
regSelect: { games, kills, ast, apps },
retired, retiring, finalRating
}
Mecánicas clave
Rating / ELO
Media ponderada de las 5 stats (mecánica 1.15, farmeo 1.05, sinergia 1.0, visión 0.95, marca 0.85),
clamp [40, 99].
Market value
50000 * 10^((rating-40)*0.055) × bonus por títulos, redondeado a 10k.
Crecimiento pasivo
Cada split suma +0.48 + rand*0.2 (+ bonus por winRate) a cada stat; rendimiento malo reduce.
Decisiones
ok = Math.random() >= (risk + 0.03). Éxito: +delta*2.6. Fracaso: -delta*2.6*0.9.
Fichajes
Solo desde split 4, con ~22% de chance por split y rating >= threshold-4.
Ofertas de otros equipos (misma región o extranjeros de primera si el rating alcanza).
Competencias internacionales
Solo equipos de primera división (un equipo de 2ª no va a MSI/Worlds). Bracket de 4 rondas con probabilidad por rating: grupos → cuartos → semis → final.
Títulos
- Regional: cada split par, si
rating >= threshold-X(primera o segunda división). - Individuales: Guante de Oro (ELO≥62), Rey del Farmeo (farmeo≥60), Carry Definitivo (penta≥1), Community Darling (marca≥58), MVP del Split.
UI (estilo Copero)
Design tokens en :root:
--bg-base:#0a0a0c --bg-card:#18181b --bg-card-alt:#1f1f23 --bg-row-active:#0e3a3f
--accent-ovr:#d9730a --accent-role:#7c3aed
--success:#22c55e --danger:#ef4444 --border-subtle:#27272a
- Screen A: 2 columnas (3fr/2fr). Izquierda: badge ELO + panel jugador + stats + logros + decisión. Derecha: timeline de carrera (SPLIT/ORG/ELO/GAM/KIL/AST) con fila activa teal y filas futuras grises.
- Screen B: 3 paneles (identidad, selección regional, premios) + grid de orgs + botón "Jugar de nuevo".
- Responsive: <768px colapsa la timeline (default cerrada) y apila a 1 columna.
Export de imagen
Un <canvas> 1080×1920 dibuja el resumen completo (dark bg, badges ELO, stats, títulos, orgs)
y se descarga como PNG. Es el mecanismo de viralidad del juego.