Files
games/docs/studies/009-PLATFORM_POC_CANDIDATES.md

232 lines
5.6 KiB
Markdown

<!-- file: docs/studies/009-PLATFORM_POC_CANDIDATES.md -->
<!-- version: 2 -->
# Candidats POC plateforme
## Statut
Étude non normative pour `0.2.0-0-pre.4`.
## Objectif
Identifier les POC plateforme qui apportent une information architecturale réelle en réutilisant au maximum le code déjà validé en `0.1.0`.
Le but n'est pas de multiplier les variantes pour leur propre intérêt.
## Baseline déjà disponible
Le projet dispose déjà de :
- Reflex Rust réutilisable ;
- Snake Rust réutilisable ;
- runner SDL3 Desktop ;
- Android SDL3 + Java/JNI ;
- Tauri Desktop + Vite/TypeScript + WASM pour Reflex ;
- provenance runtime ;
- tracing commun ;
- abstraction initiale d'input ;
- politique de build externe ;
- validation Android x86_64 et ARM64.
Les POC futurs doivent partir de cette base.
## POC A — Tauri Android avec Snake
### Question
Le chemin Tauri Android peut-il exécuter le gameplay Snake avec une intégration mobile acceptable, en réutilisant au maximum les briques déjà validées par le POC Tauri/WASM Reflex ?
### Réutilisation visée
- `game-snake-poc` ;
- abstractions et bridge Tauri/WASM déjà validés avec Reflex, après généralisation minimale ;
- frontend Vite/TypeScript existant ;
- tracing frontend/Tauri ;
- assets existants ;
- provenance runtime étendue.
### Modifications attendues
- génération/projet mobile Tauri ;
- input tactile ;
- lifecycle Android ;
- orientation/fullscreen ;
- packaging APK/AAB ;
- ABI ;
- logging Android/Tauri ;
- éventuels plugins mobiles.
### Ce que le POC doit apprendre
- complexité réelle du build ;
- taille binaire/package ;
- startup ;
- latence input ;
- stabilité lifecycle ;
- accès aux APIs/plugins natifs ;
- faisabilité ads/auth plus tard ;
- coût de maintenance par rapport au chemin SDL Android.
## POC B — Web navigateur direct avec Snake
### Question
Le gameplay Snake peut-il être livré comme jeu Web direct, sans Tauri, avec un packaging propre et un input clavier/tactile fiable ?
### Réutilisation visée
- `game-snake-poc` ;
- adaptation/généralisation de la crate WASM existante ;
- Vite/TypeScript partagé autant que pertinent ;
- assets communs.
### Points à tester
- browser host ;
- resize ;
- pointer/touch ;
- fullscreen ;
- focus/visibility ;
- persistence navigateur minimale ;
- build statique ;
- chargement assets ;
- tracing console ;
- hébergement sous un chemin non racine.
## POC C — Tauri Desktop avec Snake
### Question
La voie Tauri/WASM validée avec Reflex peut-elle être généralisée proprement pour Snake sans duplication structurelle ?
### Pourquoi Snake
Snake exerce :
- keyboard input continu ;
- cadence update différente ;
- état plus long ;
- rendu d'entités multiples ;
- logique de quit/pause différente.
### Réutilisation visée
Créer le minimum nécessaire pour que Snake utilise les mêmes contrats Tauri/WASM que Reflex.
Si cela exige de copier beaucoup de code frontend/bridge, cela signale une capability ou un adapter à extraire.
## POC D — Windows SDL natif
### Question
Le runner SDL3 natif et le workspace Rust se construisent-ils proprement sur Windows avec une divergence minimale ?
### Périmètre
Snake, afin de conserver le même jeu-sonde sur toutes les plateformes.
### À tester
- toolchain Rust MSVC ;
- SDL3 ;
- assets ;
- input ;
- audio si disponible ;
- packaging minimal ;
- logs ;
- chemins/filesystem.
Ce POC nécessite une machine ou CI Windows réelle ; le cross-build Linux ne remplace pas un smoke Windows.
## POC E — macOS SDL natif
### Question
Le backend SDL natif actuel peut-il devenir une cible macOS sans modification du gameplay ?
SDL3 documente macOS comme plateforme supportée.
### À tester ultérieurement
- build x86_64/arm64 selon environnement ;
- SDL3 framework/dylib ;
- app bundle ;
- input ;
- filesystem ;
- signing/notarization seulement dans une phase de distribution ultérieure.
Nécessite un environnement macOS réel pour être validé.
## POC F — iOS SDL natif
### Question
Le modèle Android/SDL peut-il être adapté à iOS tout en conservant le même gameplay ?
SDL3 documente iOS et son usage via `SDL3.xcframework`.
### Périmètre futur
- build iOS ;
- simulator/device ;
- lifecycle ;
- touch ;
- app storage ;
- packaging Xcode.
Ce POC est réservé à une phase disposant de macOS/Xcode et ne doit pas bloquer les POC immédiatement réalisables sous Linux/Android.
## POC G — Tauri iOS
Candidat plus lointain.
Il n'est utile qu'après :
- validation du POC Tauri Android ;
- disponibilité d'un environnement Apple ;
- intérêt réel pour comparer deux chemins mobiles Apple.
Il ne doit pas être planifié par défaut dans la première vague.
## POC H — builder Android multi-ABI
### Question
Peut-on remplacer les scripts Python POC par un outil de build explicite, reproductible et commun aux jeux ?
### Périmètre
- `arm64-v8a` ;
- `x86_64` ;
- éventuellement autres ABI seulement si réellement supportées ;
- Debug/Release ;
- Snake ;
- placement contrôlé des artefacts ;
- Gradle orchestration ;
- diagnostic clair des prérequis.
Ce POC est plutôt un POC tooling qu'un POC runtime.
## Candidats non prioritaires
Ne pas lancer immédiatement :
- Tauri iOS ;
- macOS Tauri spécifique si Tauri Desktop actuel suffit déjà à tester le host ;
- Linux SDL supplémentaire, déjà baseline ;
- nouvelle technologie de rendu ;
- nouveau moteur Web ;
- nouvelles plateformes console.
## Résultat attendu
La première vague doit surtout comparer trois chemins autour du même gameplay Snake :
```text
SDL native
Web/WASM
Tauri/WebView
```
sur plusieurs hosts sans modifier le gameplay.