Pathfinding par flow field

Les spécimens ne suivent pas un A* classique calculé par entité : un flow field (carte de coût partagée) est recalculé pour toute une dimension, et chaque spécimen lit localement la direction descendante. Le champ encode aussi s'il faut casser un bloc ou construire un pont pour avancer.

Recalcul et étendue

Le champ est recalculé toutes les 10 ticks (0.5s), hors thread serveur (pool dédié), sur une grille bornée à 192 blocs plus 24 blocs de marge autour des sujets sous surveillance.

GPU avec repli CPU

Si OpenCL est disponible, le GPU est utilisé automatiquement (useGpu est un kill-switch : passer à false force le CPU, true ne force pas le GPU s'il n'y en a pas). Toute erreur GPU retombe silencieusement sur le CPU. Sous 1024 cellules (~32²), le CPU reste utilisé de toute façon — le round-trip GPU serait plus coûteux que le calcul lui-même sur un petit champ.

Le CPU utilise un Bellman-Ford parallèle multi-cœurs (cœurs disponibles − 2 threads), pas un Dijkstra mono-cœur — un serveur dédié headless sans GPU tourne donc identiquement, juste sur plusieurs cœurs plutôt qu'un seul.

Le GPU et le CPU sont conçus pour rester numériquement identiques : mêmes poids d'arête (orthogonal/diagonal, configurables) et mêmes pénalités casser/construire (le kernel OpenCL lit le même tableau de coût que le solveur CPU). Activer ou désactiver le GPU ne devrait donc pas modifier les trajets relevés pour les spécimens.

Casse de blocs taille-aware

La hauteur de casse pour avancer est calculée depuis la vraie hauteur de la boîte de collision du spécimen (arrondi supérieur, plancher 1, plafond 4 blocs) — un spécimen agrandi par la variation aléatoire casse donc plus haut qu'un spécimen de taille normale.

Escalade et descente

Escalade : impulsion de vitesse verticale réelle + pose d'un bloc support à chaque palier — jamais de téléportation. Se déclenche si la cible est à au moins 2 blocs de hauteur et au plus 5 blocs à l'horizontale, plafonné à 24 blocs de hauteur totale. Un mode alternatif d'escalade de mur plat sans pose de bloc existe mais est désactivé par défaut.

Descente : ordre de préférence — marche ou chute courte sûre (jusqu'à 3 blocs) → escalier déjà taillé dans le terrain → puits vertical sûr → construction d'un escalier au-dessus du vide en dernier recours. Le spécimen ne casse jamais le dernier bloc surplombant un vide profond.