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

5.4 KiB
Raw Permalink Blame History

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.

./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, 5721084 octets. SHA-256 : 71ff1736817e2953f88a8afda5858b2e7ae23c360efdb7e25f149cbff049d764.
  • Monde plat rapide beta.065, 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é.