3.3 KiB
3.3 KiB
Plan de Migración DeltaTime - Eliminación de frameFactor
Problema Identificado
Se están usando frameFactor conversions en 7 archivos, lo que indica una migración incompleta a deltaTime.
El patrón float frameFactor = deltaTime / (1000.0f / 60.0f) simula frames de 60fps en lugar de usar tiempo real.
Archivos Afectados y Estado
- balloon.cpp - 9 ocurrencias en métodos: moveX(), moveY(), updateState(), updateCreation()
- balloon_manager.cpp - 2 ocurrencias en updateBalloonDeployment()
- bullet.cpp - 3 ocurrencias en move()
- item.cpp - 6 ocurrencias en move()
- moving_sprite.cpp - 5 ocurrencias en move()
- tabe.cpp - 5 ocurrencias en update() y updateHitEffect()
- credits.cpp - 3 ocurrencias en update() y handleFadeOut()
Estrategia de Migración
Opción A: Velocidades ya en pixels/segundo
Si las velocidades están definidas en pixels/segundo:
// ANTES (incorrecto)
float frameFactor = deltaTime / (1000.0f / 60.0f);
pos_x_ += vel_x_ * frameFactor;
// DESPUÉS (correcto)
pos_x_ += vel_x_ * (deltaTime / 1000.0f); // deltaTime en ms -> segundos
Opción B: Velocidades en pixels/frame (legacy)
Si las velocidades están en pixels/frame (sistema legacy):
// ANTES (incorrecto con deltaTime)
float frameFactor = deltaTime / (1000.0f / 60.0f);
pos_x_ += vel_x_ * frameFactor;
// OPCIÓN 1: Convertir velocidades a pixels/segundo
static constexpr float VEL_X_PER_SECOND = VEL_X_PER_FRAME * 60.0f;
pos_x_ += VEL_X_PER_SECOND * (deltaTime / 1000.0f);
// OPCIÓN 2: Mantener frame-factor pero mejorar claridad
pos_x_ += vel_x_ * (deltaTime / FRAME_TIME_MS); // donde FRAME_TIME_MS = 16.67f
Plan de Ejecución
Fase 1: Análisis de Velocidades
- Revisar definiciones de velocidades en cada clase
- Determinar si están en pixels/frame o pixels/segundo
- Identificar constantes que necesitan conversión
Fase 2: Migración por Archivo
- balloon.cpp: Migrar velocidades x/y y contadores ✅
- balloon_manager.cpp: Migrar balloon_deploy_counter_ ✅
- bullet.cpp: Migrar velocidades de bala ✅ (VEL_Y: -3.0F→-0.18F, VEL_X: ±2.0F→±0.12F)
- item.cpp: Migrar física de ítems ✅ (vel_x: ±1.0F→±0.06F, vel_y: -4.0F→-0.24F, accel_y: 0.2F→0.012F)
- moving_sprite.cpp: Migrar sistema base de movimiento
- tabe.cpp: Migrar movimiento y efectos
- credits.cpp: Migrar contadores de timing
Fase 3: Verificación
- Compilar y probar cada archivo migrado
- Verificar que el comportamiento se mantiene consistente
- Eliminar todas las referencias a frameFactor
- Actualizar comentarios para reflejar unidades correctas
Criterios de Éxito
- ✅ Cero ocurrencias de "frameFactor" en el código
- ✅ Todas las velocidades claramente documentadas (pixels/segundo vs pixels/frame)
- ✅ Comportamiento del juego idéntico al anterior
- ✅ Código más limpio y mantenible
Notas Importantes
- El frameFactor actual simula 60fps:
deltaTime / 16.67ms - Esto significa que las velocidades actuales están en "pixels per 16.67ms"
- Para verdadero deltaTime, necesitamos convertir a "pixels per second" o usar factor de frame explícito
- Mantener constantes claras para evitar números mágicos
Estado: En Progreso
- Análisis iniciado
- Plan documentado
- Próximo paso: Análisis de velocidades en cada archivo