RPGJS Studio
Choose a playable world, customize maps and events visually, then press Play. Start free in your browser and export your RPGJS source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证App Solo Leveling
翻译准备中
正在加载完整 README。
查看完整 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.