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.