Files
vibe3-physics/ROADMAP.md
T
JailDesigner 0f0617066e Implementar PNG_SHAPE y sistema de física mejorado
Nuevas Características:
- PNG_SHAPE (tecla O): Logo JAILGAMES desde PNG 1-bit
  - Extrusión 2D con detección de bordes/relleno configurable
  - Rotación "legible": 90% frente, 10% volteretas aleatorias
  - 15 capas de extrusión con relleno completo (22K+ puntos 3D)
  - Fix: Z forzado a máximo cuando está de frente (brillante)
  - Excluido de DEMO/DEMO_LITE (logo especial)

- Sistema de texturas dinámicas
  - Carga automática desde data/balls/*.png
  - normal.png siempre primero, resto alfabético
  - Tecla N cicla entre todas las texturas encontradas
  - Display dinámico del nombre (uppercase)

- Física mejorada para figuras 3D
  - Constantes SHAPE separadas de ROTOBALL
  - SHAPE_SPRING_K=800 (+167% rigidez vs ROTOBALL)
  - SHAPE_DAMPING_NEAR=150 (+88% absorción)
  - Pelotas mucho más "pegadas" durante rotaciones
  - applyRotoBallForce() acepta parámetros personalizados

Archivos:
- NEW: source/shapes/png_shape.{h,cpp}
- NEW: data/shapes/jailgames.png
- NEW: data/balls/{normal,small,tiny}.png
- MOD: defines.h (constantes PNG + SHAPE physics)
- MOD: engine.cpp (carga dinámica texturas + física SHAPE)
- MOD: ball.{h,cpp} (parámetros física configurables)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 13:26:15 +02:00

192 lines
7.2 KiB
Markdown

# ROADMAP - ViBe3 Physics
## Estado Actual ✅
### Figuras 3D (8/8 Completadas)
- ✅ Q - SPHERE (Esfera Fibonacci)
- ✅ W - WAVE_GRID (Malla ondeante) - ⚠️ Necesita mejora de movimiento
- ✅ E - HELIX (Espiral helicoidal)
- ✅ R - TORUS (Toroide/donut)
- ✅ T - CUBE (Cubo rotante)
- ✅ Y - CYLINDER (Cilindro) - ⚠️ Necesita rotación multi-eje
- ✅ U - ICOSAHEDRON (Icosaedro D20)
- ✅ I - ATOM (Núcleo + órbitas)
### Temas Visuales (6/6 Completadas)
- ✅ SUNSET (Atardecer)
- ✅ OCEAN (Océano)
- ✅ NEON (Neón vibrante)
- ✅ FOREST (Bosque)
- ✅ RGB (Círculo cromático matemático)
- ✅ MONOCHROME (Monocromo - blanco puro)
### Sistemas de Presentación
- ✅ Transiciones LERP entre temas (0.5s suaves)
- ✅ Carga dinámica de texturas desde data/balls/
- ✅ Hot-swap de sprites con tecla N (cicla entre todas las texturas)
- ✅ PNG_SHAPE (O) - Logo "JAILGAMES" con rotación legible
---
## Mejoras de Presentación 🎨
### 1. ⏳ Mejorar Animaciones de Figuras 3D
**Descripción:** Añadir movimientos más dinámicos e interesantes a algunas figuras
**Prioridad:** Media
**Estimación:** 1.5 horas
**Detalles:**
#### CYLINDER (Y):
- **Rotación actual:** Solo eje Y (spin horizontal continuo)
- **Mejora propuesta:** Rotaciones multi-eje con cambios periódicos
- Rotación principal en eje Y (como ahora)
- Cada 3-5 segundos: tumbling en eje X o Z durante 1-2 segundos
- Efecto visual: "dar una vuelta" sobre otro eje ocasionalmente
- Transiciones suaves con aceleración/desaceleración
#### WAVE_GRID (W):
- **Rotación actual:** XY girando como esfera (confuso)
- **Mejora propuesta:** Vista frontal con pivoteo sutil
- **Vista principal:** Paralela a pantalla (mirando de frente)
- **Movimiento:** Pivoteo en centro con esquinas hacia adelante/atrás
- Ejemplo: esquina superior-derecha se aleja (Z-), inferior-izquierda se acerca (Z+)
- Movimiento ondulatorio sincronizado: olas + pivoteo crea efecto "océano"
- **Opcional:** Rotación completa ocasional (cada 10-15s) como transición
**Implementación técnica:**
- Añadir `rotation_mode_` y `mode_timer_` a cada shape
- Estados: NORMAL, TRANSITION, ALTERNATIVE
- Interpolación suave entre modos de rotación
### 2. ✅ Modo DEMO (Auto-play)
**Descripción:** Modo demostración automática con acciones aleatorias
**Prioridad:** Alta
**Estado:** ✅ COMPLETADO
**Detalles:**
- ✅ Toggle con tecla `D`
- ✅ Timer que ejecuta acciones cada 3-8 segundos (configurable)
- ✅ Acciones: gravedad, figuras, temas, escenarios, impulso, profundidad, escala, sprite
- ✅ Secuencia pseudo-aleatoria con pesos configurables (defines.h)
- ✅ Totalmente interactivo - usuario puede seguir usando controles
- ✅ Indicador visual "DEMO MODE" centrado en pantalla (naranja)
- ✅ Eliminado sistema auto-restart antiguo (ya no necesario)
### 3. ⏳ Resolución Lógica Configurable
**Descripción:** Especificar resolución lógica por parámetros de línea de comandos
**Prioridad:** Media
**Estimación:** 1 hora
**Detalles:**
- Parámetros `--width <px> --height <px>` o `-w <px> -h <px>`
- Parámetro `--fullscreen` o `-f` (opcional)
- Defaults: 1280x720 en ventana
- Ejemplo: `./vibe3_physics -w 1920 -h 1080 -f`
- Validación de valores (mínimo 640x480, máximo según SDL_DisplayMode)
- Help text con `-h` o `--help`
### 4. 🐛 Corregir Escalado de Pelotas en Reposo
**Descripción:** Las pelotas cambian de tamaño cuando están quietas (bug visual)
**Prioridad:** Alta (bug visible)
**Estimación:** 30 minutos
**Detalles:**
- **Síntoma:** Pelotas en reposo (velocidad ≈ 0) se escalan incorrectamente
- **Posible causa:**
- Scale factor calculado desde velocidad o energía
- División por cero o valor muy pequeño
- Interpolación incorrecta en modo transición
- **Investigar:** Ball::render(), scale calculations, depth brightness
- **Solución esperada:** Tamaño constante independiente de velocidad
### 5. ⏳ Sistema de Release
**Descripción:** Empaquetado para distribución standalone
**Prioridad:** Baja
**Estimación:** 30 minutos
**Detalles:**
- Crear carpeta `release/`
- Script Python `pack_resources.py` para empaquetar
- Incluir SDL3.dll
- Incluir icon.png (si existe)
- Empaquetar `data/` en archivo .dat o .zip
- Target `make release` en Makefile
- README.txt con instrucciones
---
## Futuras Mejoras (Ideas)
### Performance
- [ ] Spatial partitioning para colisiones ball-to-ball
- [ ] Level-of-detail para 100K+ pelotas
- [ ] GPU compute shaders para física masiva
### Efectos Visuales
- [ ] Trails (estelas de movimiento)
- [ ] Heatmaps de velocidad/energía
- [ ] Bloom/glow para sprites
### Física Avanzada
- [ ] Colisiones entre partículas
- [ ] Viento (fuerza horizontal)
- [ ] Campos magnéticos (atracción/repulsión)
- [ ] Turbulencia
### Shapes PNG
- [ ] **Voxelización 3D para PNG_SHAPE** (Enfoque B)
- Actualmente: Extrusión 2D simple (píxeles → capas Z)
- Futuro: Voxelización real con detección de interior/exterior
- Permite formas 3D más complejas desde imágenes
- Rotación volumétrica en vez de extrusión plana
### Interactividad
- [ ] Mouse: click para aplicar fuerzas
- [ ] Mouse: drag para crear campos
- [ ] Mouse wheel: ajustar intensidad
---
## Historial de Cambios
### 2025-10-04 (Sesión 5) - PNG Shape + Texturas Dinámicas
-**PNG_SHAPE implementado** - Tecla O para activar logo "JAILGAMES"
- ✅ Carga de PNG 1-bit con stb_image
- ✅ Extrusión 2D (Enfoque A) - píxeles → capas Z
- ✅ Detección de bordes vs relleno completo (configurable)
- ✅ Tamaño 80% pantalla (como otras figuras)
- ✅ Rotación "legible" - De frente con volteretas ocasionales (3-8s idle)
- ✅ Excluido de DEMO/DEMO_LITE (logo especial)
-**Sistema de texturas dinámicas** - Carga automática desde data/balls/
- ✅ Tecla N cicla entre todas las texturas PNG encontradas
- ✅ Orden alfabético con normal.png primero por defecto
- ✅ Display dinámico del nombre de textura (uppercase)
- 📝 Preparado para voxelización 3D (Enfoque B) en futuro
### 2025-10-04 (Sesión 4) - Modo DEMO
-**Implementado Modo DEMO (auto-play)** - Tecla D para toggle
- ✅ Sistema de acciones aleatorias cada 3-8 segundos (configurable)
- ✅ 8 tipos de acciones con pesos de probabilidad ajustables
- ✅ Totalmente interactivo - usuario puede seguir controlando
- ✅ Display visual "DEMO MODE" centrado en naranja
- ✅ Mejoras animaciones 3D: tumbling en cilindro + pivoteo en wave grid
- ❌ Eliminado sistema auto-restart antiguo (ya no necesario)
### 2025-10-04 (Sesión 3)
- ✅ Implementado tema MONOCHROME (6º tema)
- ✅ Sistema LERP para transiciones suaves de temas (0.5s)
- ✅ Hot-swap de sprites con tecla N (ball.png ↔ ball_small.png)
- ✅ Tamaño dinámico de pelotas desde texture->getWidth()
- ✅ Ajuste de posiciones inteligente al cambiar sprite
- 📝 Añadidas mejoras propuestas para CYLINDER y WAVE_GRID
### 2025-10-03 (Sesión 2)
- ✅ Implementadas 8 figuras 3D (SPHERE, WAVE_GRID, HELIX, TORUS, CUBE, CYLINDER, ICOSAHEDRON, ATOM)
- ✅ Sistema polimórfico de shapes con herencia virtual
### 2025-10-02 (Sesión 1)
- ✅ Migración desde vibe1_delta
- ✅ Sistema de gravedad direccional (4 direcciones)
- ✅ Coeficientes de rebote variables (0.30-0.95)
- ✅ 5 temas de colores iniciales
---
**Última actualización:** 2025-10-04