RPGJS Studio
Choose a playable world, customize maps and events visually, then press Play. Start free in your browser and export your RPGJS source.
Registro diario de misiones con progresión de jugador: experiencia, niveles, rangos, estadísticas, puertas y penalizaciones.
Translation pending
GamesJavaScript · CSSGitHub @AmElL-25OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
App Solo Leveling
Translation pending
Loading the full README.
Read the full README ↗App web para cumplir tus misiones cada día con la mecánica de las novelas de progresión (estilo Solo Leveling): experiencia, niveles, rangos, estadísticas, racha y penalización por fallar la misión diaria.
No necesita instalación ni cuenta para jugar. Es HTML, CSS y JavaScript puro: funciona sin conexión y tu progreso se guarda en tu propio dispositivo. Si usas varios, puedes crear una cuenta y tu partida te seguirá a todos.
RECLAMAR RECOMPENSA:
la experiencia de cada misión +50 % de bonificación, oro y +1 punto de
estadística.La pantalla principal es para el día: marcar progreso, ver el jefe y la puerta. Cuatro pestañas y nada más.
Todo lo que se toca de vez en cuando vive detrás del engranaje de la cabecera, en un apartado a pantalla completa: crear, editar y borrar objetivos, las plantillas, la cuota, el modo automático y su horario, el sonido y las copias de seguridad. Se cierra con VOLVER o con la tecla Escape.
El juego mide esfuerzo; esta capa mide resultados.
La misma app con dos caras, conmutables con el botón de la cabecera. Mismos datos, mismas reglas, mismas secciones: no desaparece nada, solo cambia cómo se llama y cómo se ve.
| SISTEMA | SALES | |
|---|---|---|
| Aspecto | Azul holográfico, resplandores, monoespaciada | Paleta de oficina, plano, tipografía del sistema |
| Avisos | Ventana modal con máquina de escribir y sonido | Barra discreta arriba que se va sola, sin sonido |
| Vocabulario | Jefe, puerta, castigo, oro, títulos, clase | Objetivo de la semana, oportunidad, plan de recuperación, créditos, reconocimientos, perfil |
Cómo cambia de modo:
MODO SALES / MODO SISTEMA) alterna al instante.El diccionario de términos vive en js/modo/catalogo.js: cambiar una palabra es cambiar
una línea, sin tocar ninguna vista.
En el ordenador, desde la carpeta del proyecto:
python3 -m http.server 8000
# abre http://localhost:8000
Hace falta un servidor local: el código está repartido en módulos de JavaScript y los
navegadores los bloquean por CORS si abres index.html con doble clic (file://).
Cualquier servidor estático vale (npx serve, php -S localhost:8000, la extensión
Live Server de VS Code…).
En el móvil (recomendado, para el uso diario): publícala en Vercel o en GitHub Pages y añádela a la pantalla de inicio. Con Vercel el repositorio puede seguir siendo privado.
git push a la rama de producción vuelve a desplegar la app automáticamente./ (root), y guarda.https://<usuario>.github.io/<repo>/).En GitHub Pages las cuentas funcionan igual: Supabase es un servicio aparte y no hace falta que tu hosting ejecute nada.
La app es una PWA: se instala desde el navegador, sin tiendas de aplicaciones.
iPhone y iPad (obligatorio Safari; Chrome en iOS no puede instalar apps).
Android (Chrome, Edge, Samsung Internet…).
En ambos casos queda en la pantalla de inicio con su icono, se abre a pantalla completa (sin barra de direcciones) y funciona sin conexión.
Instálala antes de empezar a jugar en serio, sobre todo en iPhone. La app instalada guarda su progreso en un almacén propio, separado del navegador: lo que hagas en la pestaña de Safari no aparece dentro del icono, y al revés. Si ya tienes partida en el navegador, abre ajustes → DESCARGAR COPIA allí y luego RESTAURAR COPIA dentro de la app instalada. Lo mismo vale al cambiar de teléfono: la copia es un archivo
.jsontuyo.
display: standalone) y Application → Service Workers (debe decir activated and
running). En la barra de direcciones aparece el icono de instalar.BASE=https://tu-app.vercel.app/ node pruebas/pwa.mjsLos avisos se sintetizan al vuelo con la Web Audio API: no hay archivos de audio, así que
la app no engorda y no usa material de nadie. El timbre imita las campanas de las ventanas
del Sistema —fundamental más armónicos, ataque instantáneo y caída larga— y cada acción
tiene el suyo: aviso, subida de nivel, logro, oro, puerta, jefe derrotado, castigo,
guardar una edición, repartir un punto, cumplir un objetivo y un toque corto al mover un
contador. Todo en js/sonido/sintetizador.js, y se apaga desde AJUSTES.
Los navegadores no dejan sonar nada hasta que tocas la pantalla: el primer aviso de cada sesión puede quedarse mudo.
El progreso vive en el localStorage del navegador: no sale de tu dispositivo, pero se
borra si limpias los datos del navegador o desinstalas la app. En AJUSTES tienes
DESCARGAR COPIA y RESTAURAR COPIA para llevarte el progreso a otro móvil o guardarlo
a salvo. Restaurar pide confirmación y rechaza cualquier archivo que no sea una copia del
Sistema. Si el guardado llegara a estar dañado, la app lo aparta en la clave
sistema:v1:corrupto antes de empezar de cero, para poder rescatarlo; y si el navegador
no deja guardar (almacenamiento lleno o bloqueado), avisa en lugar de fallar en silencio.
Sin cuenta, la app es la de siempre: se abre, se juega y el progreso vive en ese aparato. Con una cuenta, tu partida te sigue a cualquier aparato donde entres — y es la base sobre la que se podrá cobrar más adelante.
Las contraseñas las guarda y cifra Supabase; aquí no se almacena ninguna. La app no trae su librería: habla directo con su API REST, así que sigue sin dependencias, sin build y entera en tu dominio.
Con sesión iniciada, la app se pinta con lo local sin esperar a la red. Al abrirla y al volver a ella desde segundo plano baja la partida de la nube antes de guardar nada, y se queda con la más reciente. Los toques seguidos viajan en una sola subida, y lo pendiente se envía al esconder la app.
supabase/esquema.sql y
pulsa Run. Eso crea la tabla y, sobre todo, las políticas que impiden
que nadie lea o escriba la partida de otro.js/cuenta/configuracion.js y haz git push.Los dos valores del paso 4 van escritos en el repositorio a propósito: la clave anon no abre nada por sí sola, porque quien manda es la política de la base. La que nunca se copia a ningún sitio es la service_role, que sí se las salta.
Con configuracion.js vacío la app funciona igual, solo que el apartado de la
cuenta avisa de que todavía no está configurada.
El código se organiza por lo que hace el juego (arquitectura screaming), no por
capas técnicas: para tocar las misiones vas a js/misiones/, no a buscar entre un
"modelo" o un "controlador" genéricos. Cada feature tiene, cuando lo necesita,
reglas.js (funciones puras del juego, sin DOM) y vista.js (pintado y referencias
al DOM):
index.html Estructura de la interfaz
css/estilos.css Tema holográfico azul, móvil primero
js/app.js Raíz de composición: arranque, eventos, temporizadores
js/progreso.js Partida guardada: agrega el estado de cada feature y lo
persiste en localStorage
js/jugador/ Nivel, experiencia, rango, estadísticas, vida y fatiga
js/misiones/ Alta, edición, borrado y progreso de las misiones
js/ciclo-diario/ Recompensa, racha, cambio de día y penalización
js/puertas/ Desafíos extra de rango E a S y su recompensa
js/jefes/ Jefe semanal: aparición, daño, victoria y huida
js/castigo/ Misión de castigo: asignación, aceptación y deuda
js/plantillas/ Sets de misión diaria para distintas vidas
js/negocio/ Indicadores, cuadro de mando y cuota
js/modo/ Los dos modos: diccionario, horario e interruptor
js/configuracion/ El apartado del engranaje: objetivos y ajustes
js/sonido/ Sintetizador de los avisos del Sistema
js/titulos/ Títulos desbloqueables y el que llevas equipado
js/clases/ Cambio de clase y su especialidad
js/tienda/ Objetos, compra con oro e inventario
js/recompensas/ Multiplicador de experiencia (título, clase, castigo)
js/historial/ Mapa de calor de los últimos 30 días
js/ajustes/ Sonido, texto animado, copia de seguridad y reinicio
js/notificaciones/ Ventanas del Sistema, máquina de escribir y sonidos
js/cuenta/ Cuentas: sesión, entrar, registrarse y sincronizar
js/nucleo/ Utilidades técnicas sin reglas de juego:
fecha.js (fechas, id, reloj),
almacenamiento.js (localStorage con manejo de errores) y
supabase.js (las llamadas a la API de Supabase)
supabase/esquema.sql Tabla de partidas y las políticas que aíslan a cada
jugador. Se pega en el SQL Editor de Supabase
sw.js Service worker: caché para el modo sin conexión
manifest.webmanifest Metadatos para instalarla como app (nombre, iconos, colores)
vercel.json Cabeceras del despliegue (tipo del manifest, caché del worker)
iconos/ Icono en SVG y los PNG de la pantalla de inicio
pruebas/e2e.mjs Prueba automática del ciclo completo (opcional)
pruebas/pwa.mjs Prueba automática de los requisitos de PWA (opcional)
pruebas/sonido.mjs Comprobación del sintetizador de sonido (opcional)
Para pasar la prueba automática, con el servidor local en marcha:
npm install playwright && node pruebas/e2e.mjs
Si Playwright se queja de que no encuentra el navegador (Executable doesn't exist),
es que la versión instalada espera una compilación de Chromium que no está en la
máquina. Instala la que corresponda al Chromium que ya tienes, o descárgalo:
npx playwright install chromium
Los números del juego están arriba de cada reglas.js: js/ciclo-diario/ (BONO_DIA,
PENALIZACION_XP, PENALIZACION_HP), js/jugador/ (PUNTOS_POR_NIVEL, FATIGA_MISION
y la curva xpNecesaria) y js/recompensas/ (MERMA_CASTIGO, ORO_POR_XP). Los
catálogos de títulos, clases, objetos, puertas, jefes, castigos y plantillas viven en el
catalogo.js de su feature — ahí se ajusta la dureza del jefe (VIDA_POR_XP_DIARIA,
GOLPE_PUERTA), el contenido de los castigos y los sets de misiones, sin tocar la
interfaz.
Proyecto personal y sin ánimo de lucro, inspirado en la estética de las novelas de progresión. No está asociado a ninguna obra ni a sus autores.