Comenzar
Comenzar
Firelands (firelands-next) es un emulador de servidor privado WoW Cataclysm 4.3.4 (build de cliente 15595) construido con ingeniería moderna: arquitectura hexagonal, desarrollo guiado por pruebas y C++20 en todo el proyecto.
Repositorio: github.com/FirelandsProject/firelands-next
Qué Ofrece Firelands
| Característica | Detalle |
|---|---|
| Servidor auth | Autenticación SRP-6a, lista de reinos, login REST opcional |
| Servidor world | Gameplay, hechizos, combate, gossip, herramientas GM |
| Tres bases de datos | firelands_auth, firelands_characters, firelands_world |
| Scripting Lua | Personalización en servidor sin recompilar |
| Comandos GM | Comandos . en juego y consola interactiva FTXUI |
| CLI DevTools | Gestión de cuentas y reinos desde terminal |
Tecnologías
| Lenguaje | C++20 |
| Build | CMake 3.10+ + Ninja (obligatorio) |
| Red | Boost.Asio (corrutinas C++20) |
| Base de datos | MySQL / MariaDB 8 |
| Cripto auth | SRP-6a, OpenSSL |
| Config | yaml-cpp (authserver.yaml, worldserver.yaml) |
| Logging | spdlog 1.14.1 |
| Pruebas | GoogleTest 1.14.0 + GMock |
| Scripting | Lua 5.4.7 |
| Consola | FTXUI 5.0.0 |
| Archivos | StormLib 9.26 (extractores / vmap) |
| Despliegue | Docker Compose + GitHub Actions |
Resumen de Arquitectura
Firelands sigue la Arquitectura Hexagonal (Ports & Adapters). Las dependencias fluyen hacia adentro:
Infrastructure → Application → Domain → Shared
src/
├── shared/ # Config, logging, crypto, DBC, wire formats
├── domain/ # Entities, world model, repository ports
├── application/ # Use cases, services, application ports
├── infrastructure/ # MySQL, ASIO, Lua, DBC stores
├── auth/ # Auth server executable
├── world/ # Game server executable
└── tools/ # FirelandsDevTools
Consulta Arquitectura para definiciones completas de capas, ports, adaptadores y entidades de dominio.
Servidores
| Servidor | Binario | Puerto por defecto | Propósito |
|---|---|---|---|
| Auth | build/bin/auth | 3724 | Login SRP, lista de reinos, REST (8081) |
| World | build/bin/world | 8085 | Gameplay, personajes, Lua, consola GM |
| DevTools | build/bin/FirelandsDevTools | — | CLI de cuentas/reinos |
Inicio Rápido
git clone https://github.com/FirelandsProject/firelands-next
cd firelands-next
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
ninja -C build auth world
docker-compose up -d db
./build/bin/auth
./build/bin/world
Detalles completos: Configuración de Desarrollador.
Documentación
Guías principales
- Arquitectura — Capas, ports, adaptadores, dominio
- Contribuir — Flujo de trabajo, estándares, PRs
- Configuración de Desarrollador — Entorno, build, configuración
- Base de Datos — Esquema, migraciones, tablas
- Pruebas — TDD y GoogleTest
- Roadmap del Core — Tracker unificado: fases, matriz, extractores, leyenda de estados
Módulos
Gameplay y staff
- Scripting Lua — Scripting de gameplay
- Gossip y npc_text — Menús, diálogo, líneas de quest
- Comandos GM — Comandos
.de staff - Tickets GM — Persistencia y wire format
Herramientas y datos
- DevTools — CLI de cuentas y reinos
- Extractores — MPQ, DBC, datos del cliente
- Pipeline VMap — Colisión y mmap
- StormLib — Roadmap de extractores MPQ
- Migración C++20 — Estado del toolchain