Alternativa al RailDriver
Alternativa al RailDriver
Buenas noches, os voy a hablar sobre lo que llevo un tiempo tramando. Estoy en desarrollo de un controlador totalmente personalizado para Train Simulator, alternativa al, en mi opinión, caro RailDriver. (Bueno, más que caro... es que me gusta meterme en fregaos)
Para esto, el proyecto tiene claramente dos vertientes: desarrollo software y desarrollo hardware. Os voy a hablar aquí de la primera: el software.
Llevo un tiempo implementando en C# un programa que comunica con la DLL del RailDriver con la que consigo pasar los parámetros del HUD de Train Simulator. Esto incluye los mandos del tren, valores del motor, datos de la ruta, posición geográfica... Todos estos datos, una vez capturados, hago dos cosas con ellos: por un lado los retransmito vía UDP para que otro equipo las recoja (otro equipo puede ser el procesador del propio controlador físico que construiré, una interfaz web, una panta LCD, lo que sea) y por otro lado los aprovecho en el propio programa para poder controlar el tren desde la misma aplicación.
Vale, ya os he dado lo suficiente la chapa con todo esto. Ahora es cuando - espero - algún veterano programador de este querido juego me pueda echar una mano. No estoy conforme con todos los parámetros que consigo, quiero más!!! Podéis aportarme algún enfoque? A través de un complemento en forma de script LUA - por ejemplo - con el que exportar datos sobre estados de señales, no sé, me vengo arriba y pienso en un controlador de desvíos... Me gustaría poder contar con los mismos datos que cuenta uno cuando escribe en LUA para el juego, por decir algo.
Os adjunto un par de capturas, la de la ventana principal que controla la conexión UDP por un lado y la conexión con RailDriver.dll por otro es esta que sigue:
Y esta otra muestra algún que otro mando del tren y un mapa con la ubicación:
No creo que haga falta decir que esto no es ni una beta, es alpha a tope! No me he centrado mucho en los controles en pantalla en sí, estoy dándole duro a la clase que controla la comunicación con RailDriver.dll que la verdad que para alguna cosa me trae de cabeza, pero está ya el tema encauzao.
Un saludo a todos, espero que me podáis dar luz sobre todo esto.
Buenas! Sigo con el desarrollo de mi proyecto, hoy os escribo para contaros novedades. Lejos de estar parado todo este tiempo, he estado trabajando en la idea de obtener más datos del simulador. La novedad es que ahora puedo exportar/importar datos del simulador a mi aplicación, y por tanto, allá donde quiera a través de UDP. Al final he conseguido hacerlo inyectando código lua en forma de ScenarioScript. Esta técnica funciona tanto en un escenario que no tenga script o en uno que ya lo tenga existente agregándose a éste sin variarlo. Funciona estupendamente en todos los casos menos en un escenario de tipo Quick Drive... en este aspecto sigo trabajando.
Aquí arriba podéis ver un extracto del script que importa/exporta datos de Railworks, está escrito en Lua. Por el momento he desarrollado la lectura de datos del simulador hacia el exterior, el camino inverso vendrá después del ajuste fino de la lectura. Por el trabajo que hace, a esta parte del proyecto la llamo 'Lua Injector'.
También estoy trabajando con la idea de poder usar librerías de Lua 5.1 en adelante con la versión de Lua que ejecuta Railworks, que es 5.0.2. De momento consigo cargar el modulo que hace la compatibilidad entre versiones, esta es 'compat-5.1'. Pero no consigo cargar los módulos versión > 5.1... Sigo con ello.
En esta otra captura podéis ver ya en la interfaz del programa los nuevos datos, los separo por categorías: