75 lines
2.5 KiB
Markdown
75 lines
2.5 KiB
Markdown
<!-- file: docs/architecture/010-RUNTIME_PROVENANCE.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Provenance d'environnement d'exécution
|
|
|
|
## Objectif
|
|
|
|
Une session de jeu doit pouvoir décrire son environnement sans en déduire automatiquement une règle de classement.
|
|
|
|
Cette provenance servira notamment aux futurs leaderboards, Hall of Fame, analytics, replays et diagnostics.
|
|
|
|
## Dimensions V1
|
|
|
|
`engine-v1-platform-api` expose cinq dimensions indépendantes.
|
|
|
|
`PlatformFamily` décrit la famille de plateforme : Android, Desktop ou Web.
|
|
|
|
`DeviceClass` décrit la forme physique pertinente pour l'interaction : Phone, Tablet, Desktop ou Unknown.
|
|
|
|
`ExecutionModel` distingue le code natif du WebAssembly.
|
|
|
|
`RuntimeHost` distingue un processus natif, un navigateur et une WebView Tauri.
|
|
|
|
`InputProfile` décrit le mode de contrôle principal : Touch, KeyboardMouse, Gamepad, Mixed ou Unknown.
|
|
|
|
## Exemples
|
|
|
|
Un Galaxy S9+ exécutant l'APK actuel peut être décrit comme :
|
|
|
|
```text
|
|
PlatformFamily = Android
|
|
DeviceClass = Phone
|
|
ExecutionModel = Native
|
|
RuntimeHost = Native
|
|
InputProfile = Touch
|
|
```
|
|
|
|
Un runner SDL Desktop natif :
|
|
|
|
```text
|
|
PlatformFamily = Desktop
|
|
DeviceClass = Desktop
|
|
ExecutionModel = Native
|
|
RuntimeHost = Native
|
|
InputProfile = KeyboardMouse
|
|
```
|
|
|
|
Le futur POC Tauri/WASM :
|
|
|
|
```text
|
|
PlatformFamily = Desktop
|
|
DeviceClass = Desktop
|
|
ExecutionModel = Wasm
|
|
RuntimeHost = TauriWebView
|
|
InputProfile = KeyboardMouse
|
|
```
|
|
|
|
Une version Web dans un navigateur de téléphone pourra au contraire être `PlatformFamily = Web`, `DeviceClass = Phone`, `ExecutionModel = Wasm`, `RuntimeHost = Browser`, `InputProfile = Touch`.
|
|
|
|
## Classements et équité
|
|
|
|
La provenance ne contient aucune méthode du type `is_fair`, `difficulty` ou `comparable_with`.
|
|
|
|
La difficulté relative des contrôles dépend du jeu. Un jeu de réflexe, un Snake, un puzzle et un jeu au gamepad peuvent produire des conclusions différentes.
|
|
|
|
Le futur backend de score pourra donc conserver une provenance complète et appliquer une politique par jeu : classement commun, classement séparé par profil d'entrée, filtres par plateforme, ou catégories multiples.
|
|
|
|
L'identité joueur reste orthogonale. Un score pourra appartenir à un utilisateur authentifié ou anonyme tout en conservant exactement la même provenance runtime.
|
|
|
|
## Données et vie privée
|
|
|
|
La provenance V1 décrit des catégories techniques générales. Elle ne requiert ni modèle précis de téléphone, ni identifiant matériel, ni adresse réseau.
|
|
|
|
Un besoin futur de diagnostic plus fin devra être ajouté explicitement plutôt que d'élargir silencieusement cette structure.
|