YAPF

El YAPF (Yet Another Pathfinder, traducido: "Sin embargo otro buscador de rutas") es el nombre que recibe el algoritmo más reciente que utiliza el software de OpenTTD para controlar el movimiento de los vehículos.

Contents

Descripción

El YAPF es el tercer intento de crear un algoritmo para el pathfinder (buscador de rutas) de OpenTTD. El primero fue el NTP (New Train Pathfinding, traducido "Nuevo buscador de rutas para trenes"), que sólo funcionaba para trenes. El segundo fue el NPF (New global Pathfinding, traducido "Nuevo buscador de rutas global"), que funcionaba para todos los vehículos y era muy inteligente, pero el sistema se atascaba después de construir muchos vehículos. El objetivo del nuevo YAPF es proporcionar la potencia y flexibilidad del NPF, pero que al mismo tiempo esté más optimizado, aliviando la carga de la CPU.

Opciones de configuración

/File/en/Paper-plus.png
Este artículo o sección necesita ampliarse.
Debería desarrollarse la configuración
  • Puede encontrar más información sobre qué necesita ampliarse en la discusión de artículo.
  • Recuerde utilizar el manual de estilo.
  • Quite esta plantilla una vez que se haya ampliado el artículo.

Vea también

Notas

/File/en/Notice.png
Nota
El resto de este artículo está pensado para desarrolladores.

Mejoras respecto NPF

Según un mensaje en el foro de KUDr, hay tres grandes mejoras en YAPF respecto a NPF:

Estas mejoras aumentan el rendimiento de YAPF respecto NPF, pero por otro lado hacen el código más complejo y difícil de entender.

Ajustes

Varias opciones de YAPF se pueden ajustar. No vamos a describirlas todas, puesto que la función de algunas está bastante clara.

Hay 4 opciones (en realidad 3) que parecen bastante misteriosas:

rail_look_ahead_max_signals = 10
rail_look_ahead_signal_p0 = 500
rail_look_ahead_signal_p1 = -100
rail_look_ahead_signal_p2 = 5

La primera comprueba cuántas señales futuras debe controlar YAPF para nuestro tren. Las siguientes opciones sirven para calcular una tabla de penalizaciones con la fórmula siguiente, en la que el parámetro "i" es el valor que tiene "rail_look_ahead_max_signals":

p=p0 + p1*i + p2*i*i

Así pues, obtendremos la siguiente tabla de penalizaciones de señales para el número especificado en "rail_look_ahead_max_signals":

p[]={500,405,320,245,180,125,80,45,20,5}

Veamos algunos ejemplos más:

Para (las primeras) 3 señales: Rojo,Rojo,Rojo: penalización=500+405+320=1225

Para (las primeras) 4 señales: Rojo,Verde,Rojo,Verde: penalización=500+0+320+0=820

El coste final se añadirá al coste de la ruta. De esta manera se puede ayudar a reducir los atascos de tráfico cuando tenemos algunos trenes bloqueando un camino (a 4 semáforos más adelante) y tenemos un camino alternativo.

Estamos hablando de ajustes internos del YAPF y se supone que no deben modificarse. Los desarrolladores han hecho un gran esfuerzo para calcular unos buenos valores para p0, p1, p2.

El único valor que merece la pena ajustar es p1. El rango de valores adecuado esta entre -100 y -90. Si te sales fuera de este rango, la tabla de penalizaciones adquiere valores extraños y los trenes empiezan a funcionar de manera inesperada.

Si desea un equilibrio de cargas más agresivo establezca p1=-90 y obtendrá la siguiente tabla:

p[]={500,415,340,275,220,175,140,115,100,95}

Proyectos dependientes

La búsqueda de rutas es una parte muy importante de OpenTTD, y la introducción de un nuevo Pathfinder significa grandes cambios en el código. Esta fue la razón, por la que el desarrollo de algunas nuevas características quedó en suspenso, hasta que YAPF fué terminado. Como YAPF está totalmente concluido, estos proyectos pueden ser desarrollados de nuevo.

Señales de velocidad

Había un proyecto modesto para controlar qué trenes van sobre qué vías dependiendo de su velocidad: Señales de velocidad. Hasta ahora este proyecto no se ha retomado después de finalizar YAPF. Otros proyectos que permiten que el jugador controle el buscador de rutas para trenes se pueden encontrar en los foros sobre desarrollo.