Files
sanctuary-beta/docs/boat-collisions-beta065.md
T
2026-09-16 11:41:27 +02:00

101 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# beta.065 — collisions des bateaux collectifs
Branche `codex/boat-collisions-beta065`.
## Problème et portée
Les huit formes de bateaux et radeaux collectifs utilisent le déplacement natif
côté serveur. Leurs anciennes limites étaient fondées sur une tuile carrée de
1,375 bloc, alors que les modèles ont une longueur de 28 pixels par module.
La coque visible dépassait donc sa collision dans le sens longitudinal. Un
virage agrandissait aussi directement les limites sans vérifier le terrain ;
après cette intrusion, le déplacement natif pouvait traverser le mur.
Les limites couvrent désormais les coques complètes, et le volume balayé
par chaque virage est contrôlé avant le déplacement. Le mouvement natif reste utilisé pour
les translations, lappui au sol et sur leau, les formes de blocs et les
collisions avec les autres véhicules. Les sièges, les commandes partagées,
les moteurs, les vitesses et les règles de chute des piles restent inchangés.
Les modèles et les textures ne changent pas. Les bateaux simples Minecraft
conservent leur comportement. Aucune modification de chunk, de recette, de
journal ou de format de sauvegarde ; les identifiants existants restent stables.
Les positions enregistrées des anciens bateaux ne sont pas déplacées par la
mise à jour : seule leur collision utilise les dimensions corrigées.
## Collision de la coque
Les huit formes sont couvertes : 1 × 2, 2 × 1, 1 × 3, 3 × 1, 2 × 2,
2 × 3, 3 × 2 et 3 × 3, sur les onze bois. Largeur et longueur de la coque :
- Bois : `colonnes + 0,25` × `rangées × 1,75 + 0,25` blocs, rebords compris.
- Bambou : `colonnes × 1,25` × `rangées × 1,75` blocs.
Comme dans le moteur natif, la collision est une boîte alignée sur les axes ;
elle englobe la coque orientée. Les rames animées restent décoratives. Un virage
vérifie aussi les extrema entre ses deux orientations, pour quun coin ne
traverse pas un mur avant de revenir dans une position libre. Au contact,
linertie de rotation sarrête ; le recul et le glissement le long du mur restent
résolus par Minecraft. Les rotations de placement ou de téléportation ne sont
pas remplacées par des tentatives de conduite.
## Vérification
Client Minecraft 26.3-pre-2 et serveur intégré de développement, monde plat
neuf de graine `65`. Le test avant correction traverse effectivement le mur
situé en X=8 : après quinze mouvements avec virage, le centre atteint X=12,55.
Ce même cas passe après correction.
- **88 variantes** : **3 168 déplacements** contre des murs dans les deux sens
de X et Z, huit orientations, diagonales et déplacements de vingt blocs en
un appel ; collision native détectée et recul libre de 1,5 bloc.
- **440 virages** : contact et tentative de déplacement dans le mur, virages
libres, puis cas où les orientations de départ et darrivée sont libres
mais où le milieu du virage heurterait le mur. Ce dernier cas est refusé.
- **128 passages** contre les formes natives minces des barrières et vitres,
sur bateaux et radeaux, sans traversée ni recouvrement des blocs.
- **704 modèles orientés** : les sommets réels des fonds et rebords sont inclus
dans les collisions, côté client. Les rames sont explicitement exclues.
- **16 parcours pilotés avec les vraies touches**, huit formes en chêne et en
bambou, répartis entre eau et vol avec Allay et les quatre directions :
avancer contre le mur, maintenir le virage, reculer. Les limites serveur et
client restent à lintérieur des murs, le pilote reste assis et le recul
déplace effectivement le bateau. Deux captures de contact ont été relues.
Journaux locaux : `build/boat065-before.log`,
`build/boat065-control-before.log`, `build/boat065-fixed-probe.log`,
`build/boat065-client.log`. Captures : `build/boat065-evidence/`.
Le parcours complet passe en **1 min 59 s**.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryBoat065ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Les essais utilisent le serveur intégré ; aucun serveur dédié ni EULA acceptée.
Le test client couvre la synchronisation locale ; une session avec plusieurs
clients distants et latence na pas été relancée pour ce correctif.
## Livraison locale
`./gradlew check build assemblePack assembleTestPack` réussi en **2 min 8 s**,
**122 tâches**, avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Les essais serveur intégrés ci-dessus remplacent
les tests dédiés exclus conformément au refus antérieur daccepter leur EULA.
Les archives normal/Test sont vérifiées : **1 645 classes** conformes à la
compilation, aucune classe de test embarquée, mêmes ressources et dépendances
quen beta.064. Seule la source principale `CrewBoat` change, en plus des
métadonnées de version. Modèles, textures, recettes, sièges, moteurs et autres
systèmes restent conservés. Les anciennes archives beta.064 sont intactes.
- [Pack normal beta.065](../build/Sanctuary-beta.065.mrpack), 5721084 octets.
SHA-256 : `71ff1736817e2953f88a8afda5858b2e7ae23c360efdb7e25f149cbff049d764`.
- [Monde plat rapide beta.065](../build/Sanctuary-Test-beta.065.mrpack), 5740018 octets.
SHA-256 : `4c4931146a05d6f57e9abf2303b039ab7a7bc16471a0b864873b86bef297431d`.
Reçu `build/boat065-artifact.json`, build `build/boat065-check.log`.
Aucun canal publié, instance Prism ou monde personnel modifié.