CoolFace
Apppublic

miguel-ferr/Babel_World

sourceHugging Facemitupdated 8mo agoView on Hugging Face
0likes
App README

🌍 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

bash
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

bash
python -m http.server 8000

Luego 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:

  1. 1.Intercambian una palabra de su vocabulario
  2. 2.La palabra puede mutar:
  3. 3.Mutación de vocal (10%): Cambia una vocal por otra
  4. 4.Mutación de consonante (10%): Cambia una consonante por otra
  5. 5.Composición (2%): Combina dos palabras
  6. 6.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:

javascript
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

TerrenoEfectoVisual
AguaBloquea pasoAzul
TierraVelocidad normalVerde claro
BosqueVelocidad x0.5Verde oscuro
MontañaBloquea pasoMarrón/gris
PuenteConecta regionesMarrón madera

Demo en Consola

javascript
// 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.