Longs trajets : marcher par étapes au lieu d'abandonner
Le vrai coupable des « chemins impossibles » : le lissage de chemin du core s'arrête à 74 points de 4 m. Au-delà d'environ 300 m de marche, le chemin était déclaré impossible. Crashtroller avance désormais par étapes d'environ 200 m le long du couloir du maillage.
- Commit
- 457f8de
- Build
- Build réussi (1 min) · Cible worldserver
Analyse
Dans PathGenerator::BuildPointPath, FindSmoothPath échoue dès que le chemin lissé dépasse MAX_POINT_PATH_LENGTH (74 points espacés de SMOOTH_PATH_STEP_SIZE = 4 m). Le core construit alors un raccourci et marque le chemin PATHFIND_NOPATH. Rendre une quête au camp depuis le territoire des familiers devenait « impossible ».
Correctif
- Si le chemin lissé échoue, calcul du chemin en coins (
SetUseStraightPath(true)→findStraightPath) : même couloir de polygones, mais seulement les points d'inflexion. - Choix du coin le plus éloigné à moins de 200 m de marche cumulée.
- Chemin lissé jusqu'à ce coin, qui épouse le relief (pas de flottement au-dessus d'une colline), puis nouveau calcul à l'arrivée.
Le repli vers un point accessible voisin (PNJ dans un bâtiment) reste en dernier recours.