101 lines
5.4 KiB
Markdown
101 lines
5.4 KiB
Markdown
# 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, l’appui au sol et sur l’eau, 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 qu’un coin ne
|
||
traverse pas un mur avant de revenir dans une position libre. Au contact,
|
||
l’inertie de rotation s’arrê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 d’arrivé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 à l’inté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 n’a 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 d’accepter 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
|
||
qu’en 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é.
|