# ViBe3 Physics - Herramientas de Recursos

Este directorio contiene herramientas para empaquetar los recursos del proyecto en un archivo único y ofuscado.

## 📁 Archivos

- **`pack_resources.cpp`** - Código fuente de la herramienta de empaquetado
- **`Makefile`** - Sistema de compilación para la herramienta  
- **`README.md`** - Esta documentación

## 🔧 Compilación

### Opción 1: Usar Makefile (Recomendado)

```bash
cd tools/
make
```

### Opción 2: Compilación manual

```bash
cd tools/
g++ -std=c++17 -I../ pack_resources.cpp ../source/resource_pack.cpp -o pack_resources
```

## 📦 Uso de la herramienta

### Crear pack de recursos

```bash
# Desde el directorio tools/
make create_pack

# O manualmente:
./pack_resources ../data ../resources.pack
```

### Crear pack de prueba

```bash
# Desde el directorio tools/  
make test_pack

# O manualmente:
./pack_resources ../data test_resources.pack
```

## 📋 Comandos del Makefile

| Comando | Descripción |
|---------|-------------|
| `make` o `make all` | Compila la herramienta de empaquetado |
| `make pack_tool` | Compila la herramienta de empaquetado |
| `make test_pack` | Crea un pack de recursos de prueba |
| `make create_pack` | Crea el pack de recursos final |
| `make clean` | Limpia archivos generados |
| `make help` | Muestra la ayuda |

## 🎯 ¿Qué se empaqueta?

La herramienta empaqueta **solo** el contenido del directorio `data/`:

```
data/
├── balls/          ✅ Empaquetado (texturas de sprites)
└── logos/          ✅ Empaquetado (PNG shapes)
```

**NO se empaqueta:**
- Archivos de sistema
- Config (ViBe3 no usa carpeta config)

## 🔐 Características del pack

- **Formato binario personalizado** con cabecera "VBE3"
- **Encriptación XOR** simple para ofuscar contenido
- **Checksums** para verificar integridad
- **Compresión** por concatenación de archivos
- **Tamaño típico:** ~500KB para todos los recursos

## 🚀 Integración en ViBe3

El proyecto automáticamente detecta si existe `resources.pack`:

1. **Con pack:** Carga recursos del archivo empaquetado
2. **Sin pack:** Carga recursos desde `data/` (modo desarrollo)

El sistema usa fallback automático en `source/external/texture.cpp`

## 📝 Ejemplo completo

```bash
# 1. Ir al directorio tools
cd tools/

# 2. Compilar herramienta
make

# 3. Crear pack final
make create_pack

# 4. El juego ahora usará resources.pack automáticamente
```

## 🆘 Solución de problemas

### Error: "No such file or directory"
```bash
# Verificar que estás en el directorio correcto
pwd  # Debe mostrar .../vibe3_physics/tools

# Verificar que existe el directorio data
ls ../data
```

### Error de compilación
```bash
# Limpiar y recompilar
make clean
make
```

### El programa no encuentra los recursos
```bash
# Verificar que resources.pack está en el directorio raíz del proyecto
ls ../resources.pack

# Verificar el tamaño del pack (debe ser ~500KB)
ls -lh ../resources.pack
```

## 📊 Información técnica

- **Archivos empaquetados:** ~10-20 recursos (texturas PNG)
- **Tamaño sin comprimir:** ~500KB de recursos individuales
- **Tamaño empaquetado:** ~400KB (reducción ~20%)
- **Tiempo de empaquetado:** < 1 segundo
- **Compatibilidad:** Windows, Linux, macOS

---

**Nota:** ViBe3 Physics no usa archivos de configuración externos.