Run8Economy es un addon de gestión económica desarrollado para el simulador ferroviario norteamericano Run8.
Run8 es conocido por ser un "sandbox" extremadamente realista pero carente de un sistema de progresión o incentivos económicos. Este programa llena ese vacío, permitiendo a los conductores "cobrar" por sus servicios, gestionar finanzas y dar un propósito de negocio a cada movimiento de vagones y locomotoras.
Este proyecto fue desarrollado en una etapa pre-42, representando mis primeros pasos serios con C++.
Una característica notable de este código es que la mayor parte de la lógica de negocio se encuentra desarrollada directamente en los archivos .hpp. En aquel momento, ante el desconocimiento de las convenciones estándar de separación entre interfaces (.hpp) e implementaciones (.cpp), utilicé los headers como módulos completos. Aunque no es la práctica convencional en C++, permitió una estructura modular que facilitó el desarrollo asistido por IA en aquel entonces.
El programa actúa como un procesador de datos que interpreta el estado del mundo de Run8 y lo traduce en transacciones financieras.
Run8 genera archivos XML detallados que contienen la ubicación exacta y el estado de cada componente del mundo (vías, locomotoras, vagones e industrias). Run8Economy lee estos archivos para obtener una "foto" del estado actual de tu sesión.
El núcleo de la lógica se basa en las etiquetas de las locomotoras y vagones. El programa escanea el XML buscando:
- Locomotora Activa: Identifica qué tren está operando el usuario.
- Etiquetas de Destino/Trabajo: Lee los tags que el usuario asigna en el simulador.
- Ubicación Geográfica: Compara las coordenadas de los activos con la base de datos de industrias y espuelas (spurs) del mundo de Run8.
Dependiendo del tipo de tarea detectada, el programa aplica diferentes fórmulas de pago (Switching, Local Hauls, Long Haul). La recompensa varía según la distancia recorrida, el tipo de carga y la precisión en la entrega.
Para que el programa pueda calcular tus ganancias, necesita saber dónde guarda Run8 la información de tu mundo actual.
Normalmente, Run8 guarda los archivos de sesión en una ruta similar a:
C:\Run8TrainSimulatorV3\Content\V3Sessions\Ruta_Especifica\Nombre_Sesion\World.xml
Dado que la lógica reside en los archivos de cabecera, tienes dos formas de configurar la ruta:
-
Archivo de Configuración (si existe
config.txt): Abre el archivo de configuración en la carpeta del ejecutable y pega la ruta completa hacia tu archivoWorld.xmloCurrentWorld.xml. -
Modificación en el Código (.hpp): Si vas a recompilar el proyecto con VS Code, busca en los archivos
.hpp(normalmente en el encargado de la gestión de archivos o el main) la variable de tipo string que define la ruta del XML:// Ejemplo de lo que buscar en el .hpp std::string xmlPath = "C:/Ruta/A/Tu/Run8/World.xml";
Cambia esa cadena por tu ruta real, guarda y compila.
Nota: Es fundamental que el archivo XML esté actualizado. Se recomienda hacer un "Save" en Run8 justo antes de ejecutar Run8Economy para que los datos reflejen tu posición y tags actuales.
- Lenguaje: C++ (97.1%).
- Entorno de Desarrollo: Compilado originalmente con Visual Studio Code (MSVC/MinGW).
- Interfaz: Basada en texto (Consola).
- Persistencia: Capacidad para guardar el balance acumulado entre sesiones.
El proyecto está diseñado para ejecutarse mediante un archivo .exe ya compilado.
- Asegúrate de tener Run8 en ejecución y haber guardado la sesión.
- Configura la ruta del XML según las instrucciones anteriores.
- Ejecuta
Run8Economy.exe. - El programa procesará los tags y te mostrará el desglose de ingresos en la consola.
Mirando hacia atrás, Run8Economy fue el proyecto que me enseñó la importancia del parseo de datos y cómo una herramienta externa puede transformar la experiencia de un software cerrado. Aunque hoy aplicaría patrones de diseño más estrictos aprendidos en 42, la lógica de cálculo y la integración con los XML siguen siendo el motor fundamental de este addon.