Files
games/deltas/0.3.5/alpha.10.md
2026-09-22 08:49:40 +02:00

4.7 KiB

Delta 0.3.5-alpha.10

Base requise

0.3.5-alpha.9.fix.1, validée par l'utilisateur le 2026-09-22.

La gate finale confirme fmt, audits, cargo check --workspace, Clippy strict, 22/22 tests WebTransport, smoke datagram natif PASS et check/Clippy/build WASM. La preuve est enregistrée dans history/0.3.5/alpha.9.fix.1.md.

Objectif

Caractériser de manière bornée les backends realtime déjà retenus sans introduire de nouveau contrat produit :

  • établissement WebSocket vs WebTransport fiable ;
  • RTT applicatif ;
  • throughput fiable ;
  • fenêtre bornée de messages sans ACK intermédiaire ;
  • datagram WebTransport mesuré séparément ;
  • méthode et limites documentées ;
  • conclusion technique provisoire retain sans classement automatique.

Version

La version workspace passe à :

0.3.5-alpha.10

Nouveau launcher

Nouvelle application technique :

crates/apps/game-realtime-transport-measure

Elle dépend uniquement :

game-realtime-transport-lib
game-realtime-websocket-lib
game-realtime-webtransport-lib
tokio

Elle ne dépend d'aucun engine ni gameplay et ne modifie aucune crate backend.

Mesures fiables

La comparaison utilise uniquement RealtimeConnection pour les deux backends.

Établissement

8 échantillons
WebSocket : handshake jusqu'à connexion prête
WebTransport : session + stream primaire jusqu'à connexion fiable prête

RTT

16 warmups
128 échantillons
32 octets par ping/pong

Throughput

128 messages
64 KiB par message
8 MiB utiles
ACK final après drainage serveur

Fenêtre applicative en vol

64 messages
1 KiB par message
aucun ACK applicatif intermédiaire
ACK unique après drainage

Cette dernière mesure ne prétend pas mesurer directement le nombre de paquets réseau en vol ; elle caractérise une fenêtre applicative bornée de messages non acquittés individuellement.

Datagram séparé

WebTransport est également caractérisé hors RealtimeConnection :

64 datagrams
payload = min(256, client_max, server_max)
réception jusqu'à 64 ou 250 ms sans nouveau datagram

Le launcher rapporte attempted, received, receive_ratio, les bornes négociées et le temps écoulé. Il n'interprète pas une réception complète comme une garantie de fiabilité.

Sortie

Chaque résultat est imprimé sous une forme stable :

MEASURE transport=<...> metric=<...> ...

La fin normale est :

CONCLUSION webtransport=retain scope=second-backend reason=reliable-browser-fallback-datagram-capabilities
game-realtime-transport-measure: PASS

Le retain signifie uniquement conserver WebTransport comme second backend à côté de WebSocket. Aucun seuil de victoire et aucune affirmation « plus rapide » n'est codé dans l'outil.

Documentation

La méthode et ses limites sont figées dans :

docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md

Les valeurs de la machine de validation seront enregistrées dans history/0.3.5/alpha.10.md après la gate utilisateur plutôt que figées comme vérité générale dans la documentation durable.

Fichiers principaux

Nouveaux :

crates/apps/game-realtime-transport-measure/Cargo.toml
crates/apps/game-realtime-transport-measure/src/main.rs
deltas/0.3.5/alpha.10.md
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
history/0.3.5/alpha.9.fix.1.md

Modifiés :

Cargo.toml
README.md
docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md
scripts/audit_distribution_layout.py

Validation attendue

cargo fmt --all
cargo fmt --all -- --check

python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history
python3 scripts/audit_distribution_layout.py

cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings

cargo test -p game-realtime-transport-lib --all-targets --all-features
cargo test -p game-realtime-websocket-lib --all-targets --all-features
cargo test -p game-realtime-webtransport-lib --all-targets --all-features

cargo run --release -p game-realtime-transport-measure

cargo tree -p game-realtime-transport-measure --edges normal
cargo tree -i game-realtime-websocket-lib --workspace --edges normal
cargo tree -i game-realtime-webtransport-lib --workspace --edges normal

Après validation

Enregistrer les lignes MEASURE ... réelles dans history/0.3.5/alpha.10.md, puis passer à 0.3.5-beta.1 pour la validation large. Un défaut fermé de alpha.10 doit produire alpha.10.fix.N avant beta.1.