No Way Down es un juego 2D cooperativo web, de supervivencia narrativa y estética retro pixel art, ambientado en la Casa Central del Banco de la Nación Argentina. El proyecto ya superó la etapa de scaffold inicial: cuenta con un frontend jugable en Phaser, una campaña JSON-driven con niveles, cinemáticas y sistemas de misión, más un backend Django REST para persistir el progreso del jugador.
- Frontend jugable en
/game: aplicación Phaser 3 + TypeScript + Vite con escenas de arranque, precarga, menú principal, intro de campaña, niveles, cinemáticas, diálogo, piso superior y UI. - Campaña principal integrada: el flujo
main_campaignencadena introducción, niveles del subsuelo, planta baja, pisos superiores, rescate en oficina 422, descenso, garage, cinemática exterior y epílogo final. - Contenido y sistemas de gameplay: existen configuraciones de niveles, rutas, oleadas, combate, objetivos, eventos narrativos, iluminación, audio, assets institucionales y scripts de generación/auditoría de assets.
- Backend funcional en
/backend: API Django + Django REST Framework con health check y endpoints de guardado/carga de progreso poruser_id. - Persistencia preparada para local y producción: SQLite en desarrollo y configuración PostgreSQL/Supabase para despliegue en Render.
- Documentación complementaria en
/docs: diseños de niveles, layouts ASCII, plan de assets, multijugador local, mantenimiento y notas de arquitectura.
Nota: el frontend está orientado a desktop/laptop. La app bloquea pantallas táctiles, orientación vertical o resoluciones menores a 960×540.
| Capa | Tecnologías |
|---|---|
| Juego web | Phaser 3, TypeScript, Vite, Arcade Physics |
| Assets y contenido | JSON, SVG, scripts Node.js para generación y auditoría |
| Backend/API | Python 3.11+, Django 5.1, Django REST Framework |
| Persistencia | SQLite local, PostgreSQL/Supabase en producción |
| Deploy previsto | Render + Supabase |
.
├── game/ # Frontend jugable Phaser + TypeScript + Vite
├── backend/ # API Django REST para progreso y health checks
├── docs/ # Documentación técnica, narrativa y de niveles
└── public/ # Referencias visuales estáticas del entorno
- Node.js 20+
- npm
- Python 3.11+
- pip
cd game
npm installDesde la raíz del repositorio:
cp game/.env.example game/.envVariables importantes:
VITE_BACKEND_URL: URL base del backend. Ejemplo:http://127.0.0.1:8000.VITE_PLAYER_ID: identificador del jugador usado para guardar/cargar progreso.
cd game
npm run devPor defecto, Vite sirve el juego en http://localhost:5173.
cd game
npm run buildEl build ejecuta tsc --noEmit, genera el bundle con Vite y valida el flujo de campaña con scripts/verifyBuildCampaignFlow.mjs.
cd game
npm run audit:asset-routes
npm run fix:asset-routes
npm run generate:institutional-tilesetTambién hay scripts para generar spritesheets de mostradores, mesas, columnas, ventanas, decoración, escaleras y daño zombie.
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtDesde la raíz del repositorio:
cp backend/.env.example backend/.envVariables principales:
DJANGO_ENV:developmentoproduction.DJANGO_SECRET_KEY: clave secreta de Django.DJANGO_DEBUG:Trueen local,Falseen producción.DJANGO_ALLOWED_HOSTS: hosts permitidos separados por coma.GAME_ORIGINS: orígenes CORS permitidos para el frontend.POSTGRES_*: configuración de PostgreSQL/Supabase para producción.
cd backend
python manage.py migrate
python manage.py runservercd backend
python manage.py testGET http://127.0.0.1:8000/api/health/: health check del servicio.POST http://127.0.0.1:8000/api/progress/: crea o actualiza el progreso de un jugador poruser_id.GET http://127.0.0.1:8000/api/progress/<user_id>/: obtiene el progreso persistido de un jugador.
El modelo de progreso persiste nivel actual, vida, aliados rescatados, checkpoint, versión de guardado y un snapshot JSON de campaña.
- Levantar el backend en
http://127.0.0.1:8000. - Configurar
game/.envconVITE_BACKEND_URL=http://127.0.0.1:8000. - Levantar el frontend con
npm run devdentro de/game. - Abrir
http://localhost:5173en desktop/laptop.
La configuración de producción contempla Render para el backend y Supabase/PostgreSQL como base de datos. Ver docs/backend-render-supabase.md para el detalle de variables, despliegue y conexión.
docs/technical-overview.md: panorama técnico del proyecto.docs/local-multiplayer.md: diseño de multijugador local.docs/maintenance-guide.md: guía de mantenimiento.docs/narrative_canon_constraints.md: restricciones narrativas de canon.docs/level*_design.mdydocs/*_ascii_layout.md: diseño y layouts de niveles.