Un motor de novelas visuales de código abierto, diseñado desde cero para la web moderna. Construido con C++ puro, WebAssembly y WebGPU, con el objetivo de ofrecer 60 FPS estables en navegadores móviles y de escritorio, eliminando los megabytes de sobrecarga de los intérpretes tradicionales.
Actualmente, exportar una novela visual a la web (como con el port actual de Ren'Py) implica obligar al jugador a descargar una pesada máquina virtual de Python compilada antes de ver un solo gráfico. Esto satura la memoria, causa tiempos de carga inaceptables en móviles y genera código espagueti al mezclar lógica dura con narrativa.
NovelScript Engine cambia el paradigma:
- Compilación AoT (Ahead-of-Time): Un plugin personalizado de Vite lee tu historia y la traduce a código JavaScript ultraligero antes de empaquetar el juego. Cero intérpretes en tiempo de ejecución.
- Separación Estricta: La historia se escribe en un DSL hermoso y simple. La lógica (inventarios, minijuegos) vive en archivos TypeScript paralelos.
- Rendimiento Nativo: Todo el trabajo pesado matemático y gráfico corre en C++ crudo y WebAssembly, hablando directamente con la tarjeta gráfica a través de WebGPU.
El motor está diseñado sin dependencias innecesarias y se divide en 4 capas fundamentales:
- 1. Core (C++ / WebAssembly): Desarrollado from scratch. Gestiona el bucle del juego, la matemática vectorial y la memoria lineal.
- 2. Renderizado (WebGPU): Consumo directo de buffers de memoria desde Wasm hacia JavaScript para alimentar la API de WebGPU, garantizando el máximo rendimiento gráfico disponible en el navegador.
- 3. UI Overlay (HTML/DOM): Para garantizar accesibilidad (A11y), soporte multilingüe y renderizado tipográfico perfecto, las interfaces y cajas de texto flotan por encima del Canvas 3D usando HTML. Configurable 100% mediante objetos JSON (fricción cero para artistas y escritores).
- 4. Compilador (Vite Custom Plugin): Intercepta los archivos narrativos (
.dsl) y genera el paquete de producción optimizado.
# Instalar dependencias
npm install
# Desarrollo
npm run dev
# Build para producción
npm run build
# Verificar tipos
npm run type-check
# Linting y formato
npm run lint
npm run format- ✅ TypeScript Strict - Máxima seguridad de tipos
- ✅ Sin
anyimplícito ni explícito - Enforced por ESLint - ✅ Indentación de 8 espacios - Configurada en Prettier
- ✅ ESLint + Prettier - Código consistente
- ✅ No plugins de Vite - Solo lo esencial
- ✅ Source maps - Para debugging en producción
novelscriptjs/
├── src/
│ ├── index.ts # API pública
│ ├── core/engine.ts # Motor principal
│ ├── wasm/ # Soporte WebAssembly
│ └── types/ # Tipos TypeScript
├── dist/ # Build output (ESM + UMD + Types)
├── submodules/* # Paquetes acoplados
├── packages/* # Paquetes independientes
└── [Configuración] # tsconfig, vite, eslint, etc
Ver CONFIG_README.md para detalles completos de la configuración.
- CONFIG_README.md - Especificaciones técnicas y configuración
- DEVELOPMENT.md - Guía de desarrollo
- STRUCTURE.md - Estructura del proyecto
- Compilador DSL → JavaScript
- Hot Module Replacement (HMR) para historias
- Bucle principal del juego
- WebGPU básico (triángulos, texturas)
- Sistema de capas (background, personajes, UI)
- Transiciones y efectos visuales
- Compilación C++ → WebAssembly
- Math vectorial optimizada
- Sistema de memoria lineal
- Demo de novela visual funcional
- UI overlay (HTML)
- Sistema de guardado (IndexedDB)
MIT - Libre para uso comercial y personal
MikeDev64 - Creador y mantenedor
⭐ Si te gusta el proyecto, considera dejar una estrella en GitHub!