miguel-ferr/Babel_World
0
🌍 Babel World
Simulación de evolución lingüística basada en agentes autónomos. Los agentes se mueven por un mapa, interactúan entre sí y transmiten palabras que pueden mutar con el tiempo, creando una evolución lingüística emergente.
✨ Características
- Renderizado WebGL con PixiJS v8 para rendimiento óptimo
- Arquitectura modular ES6 con imports/exports
- Agentes autónomos que se mueven y comunican
- Sistema de mutación de palabras (vocales, consonantes, composición)
- Múltiples regiones/islas con puentes de conexión
- UI moderna con tema oscuro estilo IDE
🚀 Inicio Rápido
Opción 1: Servidor local con npx
npx serve .Luego abre http://localhost:3000
Opción 2: Live Server (VS Code / Cursor)
Instala la extensión "Live Server" y haz clic derecho en index.html → "Open with Live Server"
Opción 3: Python
python -m http.server 8000Luego abre http://localhost:8000
📁 Estructura del Proyecto
Babel_World/
├── index.html # Punto de entrada HTML
├── package.json # Configuración del proyecto
├── styles/
│ └── main.css # Estilos CSS principales
├── js/
│ ├── main.js # Punto de entrada JS
│ ├── core/
│ │ ├── Game.js # Loop principal y gestión de estado
│ │ ├── Renderer.js # Wrapper de PixiJS
│ │ └── index.js
│ ├── simulation/
│ │ ├── Model.js # Modelo de simulación
│ │ ├── Agent.js # Agentes individuales
│ │ ├── Island.js # Regiones/territorios
│ │ ├── Word.js # Sistema de palabras
│ │ ├── EventLog.js # Registro de eventos
│ │ ├── Counter.js # Contador de frecuencias
│ │ └── index.js
│ ├── world/
│ │ ├── MapConfig.js # Configuración del mapa (legacy)
│ │ ├── MapGenerator.js # Generación procedural con Simplex Noise
│ │ ├── SimplexNoise.js # Implementación de ruido coherente
│ │ ├── TerrainTypes.js # Tipos de terreno y sus propiedades
│ │ ├── Region.js # Gestión de regiones/territorios
│ │ └── index.js
│ └── utils/
│ ├── helpers.js # Funciones de utilidad
│ └── index.js
└── js/ (legacy) # Archivos antiguos (pre-ES6)🎮 Controles
- ▶️ Iniciar: Comienza la simulación
- ⏸️ Pausar: Pausa la simulación
- 🔄 Reiniciar: Reinicia desde el principio
- ⏱️ Velocidad: Ajusta el tiempo entre pasos de simulación
🔧 Tecnologías
- PixiJS v8: Motor de renderizado WebGL/Canvas
- ES6 Modules: Arquitectura modular moderna
- CSS Variables: Sistema de temas flexible
- Vanilla JS: Sin dependencias de frameworks
📜 Reglas de la Simulación
Cuando un agente se encuentra con otro:
- Intercambian una palabra de su vocabulario
- La palabra puede mutar:
- Mutación de vocal (10%): Cambia una vocal por otra
- Mutación de consonante (10%): Cambia una consonante por otra
- Composición (2%): Combina dos palabras
- Sin mutación (78%): La palabra se aprende tal cual
🗺️ Mapa
El mapa está dividido en islas/regiones conectadas por puentes:
- Isla A (Azul): Región superior izquierda
- Isla B (Amarillo): Región superior derecha
- Isla C (Rosa): Región inferior
Los agentes pueden cruzar entre islas a través de los puentes, lo que facilita el intercambio lingüístico entre poblaciones.
🗺️ Generación Procedural de Mapas
El sistema incluye un generador de mapas procedural basado en Simplex Noise:
import { MapGenerator } from './js/world/MapGenerator.js';
// Crear generador con seed específico (reproducible)
const generator = new MapGenerator(12345, {
width: 80,
height: 60,
terrain: {
scale: 0.05,
waterLevel: 0.35,
forestLevel: 0.70
}
});
// Generar mapa con idiomas específicos
const map = generator.generate(['spanish', 'english', 'french', 'italian']);
// El mismo seed siempre genera el mismo mapa
console.log(`Seed: ${generator.getSeed()}`);Tipos de Terreno
Demo en Consola
// Ejecutar demo del generador
import('./js/world/demo.js').then(m => m.runDemo());🔮 Próximas Fases
- ✅ Generación procedural de mapas con semilla
- 18 idiomas reales con reglas fonéticas
- Sprites pixel art para agentes
- Sistema de nómadas
- Integración con HuggingFace para narrativa IA
📄 Licencia
MIT License - Ver LICENSE para más detalles.
