0.2.0-0-pre.6-fix.1

This commit is contained in:
2026-09-18 23:16:45 +02:00
parent ec93eaebb2
commit f2eb58c712
11 changed files with 242 additions and 28 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/studies/021-UROBURAS_SERVER_REFERENCE_STACK.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Uroburas — stack serveur de référence
@@ -51,19 +51,64 @@ Objectif :
Le JavaScript reste réservé aux interactions qui le nécessitent.
## Asset delivery auto-hébergé
La distribution des maps, skins, sons, sprites, bundles Fluent et autres assets reste auto-hébergée par défaut.
Direction :
```text
assets.games.sasedev.com
HTTP/2
HTTP/3/QUIC lorsque disponible
```
Le même hostname doit de préférence accepter H2 et H3 avec fallback transparent.
La topologie initiale peut rester sur une seule machine, avec séparation logique des hostnames/services. La séparation physique vient ensuite :
```text
Web/API
Asset delivery
Realtime
Database
Media/replay
```
puis plusieurs nœuds/cache d'assets si la charge le justifie.
Aucun CDN tiers n'est une dépendance architecturale obligatoire.
## Realtime public
Référence :
Baseline :
```text
Tokio + tokio-tungstenite
```
Candidat à benchmarker :
```text
WebTransport / QUIC
```
Utilisé pour les futurs Modes 3 puis 2.
La logique de gameplay ne dépend pas directement des types Tungstenite.
La capability client doit exposer les propriétés du transport plutôt que simuler une équivalence artificielle :
Le transport doit rester encapsulé derrière le protocole Uroburas afin qu'un benchmark futur puisse justifier un changement d'implémentation sans réécrire la simulation.
```text
reliable ordered
streams
datagrams
connection migration
```
WebSocket reste le fallback universel lorsque WebTransport n'est pas disponible ou échoue.
La logique de gameplay ne dépend pas directement des types Tungstenite, WebTransport ou QUIC.
Le transport reste encapsulé derrière le protocole Uroburas afin qu'un benchmark futur puisse justifier un changement d'implémentation sans réécrire la simulation.
## gRPC
@@ -85,9 +130,15 @@ gRPC n'est pas obligatoire pour le transport public client/gameplay.
Le client public utilise en priorité :
```text
HTTPS + WebSocket
HTTPS
+
WebSocket baseline
+
WebTransport lorsque disponible et validé
```
gRPC n'est pas utilisé comme remplacement obligatoire du transport gameplay public.
## Localization
Référence :
@@ -167,3 +218,38 @@ Mesures candidates :
- CPU par tick.
Le choix `tokio-tungstenite` est la référence initiale, pas une affirmation non mesurée de supériorité universelle.
## Frontière transport / protocole
La stack doit distinguer :
```text
transport
wire codec
session protocol
synchronization
authoritative simulation
```
Cette séparation permet de comparer WebSocket et WebTransport sur le même protocole métier.
## POC réseau futur
Avant gel long terme du transport realtime, la série POC doit comparer au minimum :
- WebSocket / tokio-tungstenite ;
- WebTransport / QUIC ;
- fallback automatique ;
- pics de connexions ;
- mémoire/connexion ;
- CPU ;
- p50/p95/p99 ;
- pertes réseau ;
- backpressure ;
- mobilité réseau ;
- snapshots/deltas ;
- broadcast/interest management.