# Véhicules — version de test 0.5

Ajout du 12 octobre 2026 sur le projet de test `appgprj_6acc16fc5a148191bb4746af8d584808`. La production `ville.vivezbollene.fr` n’est pas modifiée.

## Fonctionnement

Quatre véhicules sont garés sur les emplacements existants de la place Reynaud de la Gardette, devant la mairie. Ce sont des accessoires de jeu demandés par l’utilisateur, pas des véhicules réels recensés. Les empreintes, rues, boutiques et coordonnées du monde restent inchangées.

| Véhicule | Vitesse maximale de jeu |
| --- | ---: |
| Voiture | 45 km/h |
| Scooter | 32 km/h |
| Trottinette | 24 km/h |
| Vélo | 18 km/h |

Approcher à pied, puis utiliser **E** ou le bouton **Conduire**. Conduite à la première personne : Z/W ou flèche haut pour avancer, S ou flèche bas pour freiner puis reculer, Q/A et D ou flèches latérales pour tourner. **Espace** ou **Freiner** arrête le véhicule. **E** ou **Descendre** remet le joueur à pied à côté du véhicule, uniquement si un emplacement et le passage sont libres. Sur téléphone, le joystick pilote le véhicule et le glissement conserve le regard libre.

Les véhicules accélèrent progressivement, ralentissent sans accélérateur et disposent d’une marche arrière lente. Ils s’arrêtent à l’ouverture d’un panneau, à la perte de focus et au changement d’onglet. La position laissée est conservée pendant la session ; recharger la page ou revenir au point de départ restaure les quatre places de départ. La progression du carnet reste indépendante et inchangée. Il faut descendre pour visiter les commerces.

## Intégration

- `src/simulation/vehicles.mjs` ajoute quatre corps cinématiques au même monde Rapier. Le contrôleur existant de marche reste utilisé à pied.
- `src/render/vehicles.mjs` ajoute des modèles procéduraux légers dans la même scène Three.js. Les roues tournent selon la distance parcourue ; les positions sont données par la simulation.
- Le déplacement garde les collisions existantes et le chargement par secteurs. Les coins du véhicule sont contrôlés avant de pénétrer dans une zone non chargée.
- Les collisions bloquent aussi les piétons contre les véhicules garés. La descente vérifie un espace libre et un trajet sans mur ; elle ne téléporte pas à travers une façade.
- Aucun moteur remplacé, dépendance ajoutée, import géographique refait ni commerce déplacé.

## Contrôles

**23 tests automatisés réussis**, dont les 16 tests précédents et sept tests véhicules :

1. Quatre positions libres dans la vraie emprise de la place ; montée, descente et remontée.
2. Vitesses et distances mesurées dans l’ordre demandé ; freinage, ralentissement et recul bornés.
3. Arrêt des quatre véhicules devant une paroi mince à vitesse maximale ; rotation sans pénétration.
4. Descente refusée à travers une enceinte fermée, possible du côté dégagé ; véhicule laissé en place.
5. Arrêt devant les secteurs indisponibles et restauration du stationnement initial.
6. Voiture garée solide pour le piéton ; accès conservé aux trois intérieurs d’origine.
7. Voiture conduite depuis son stationnement jusqu’à la rue des Écoles, avec le centre et les secteurs réels chargés, puis retour à pied.

Les résultats sont dans `vehicles-tests.txt`. Le comptage de géométrie est reproductible avec `node scripts/measure-vehicles.mjs` et conservé dans `vehicles-geometry.json`. Il ne mesure ni le rendu ni les FPS.

**Le contrôle navigateur de l’environnement est indisponible : aucun essai visuel, tactile sur téléphone ni mesure de fluidité mobile n’est revendiqué.** À vérifier sur la version séparée : visibilité depuis l’habitacle, confort du regard et du joystick, compteur et frein sur petit écran, manœuvres dans les rues étroites et chargements à vitesse élevée. Le gabarit réel de la voiture doit rester contraint par les rues ; une ruelle trop étroite se parcourt à pied ou avec un véhicule plus petit.

L’audit communal 0.4 est conservé comme état de référence distinct. Toute publication de ces changements sur le domaine de production attend la validation de l’utilisateur.
