2.5 KiB
Abstraction SDL3 et plateformes
Frontière générale
Le gameplay ne doit pas connaître directement Linux, Windows, macOS, Android ou le navigateur. SDL3 est une frontière technique commune, complétée par des services plateforme lorsqu'une capacité n'appartient pas au cœur SDL.
Game library
│
Engine API
│
SDL3 boundary
┌───┼───────────────┐
│ │ │
Desktop Android Web
native SDL/JNI WASM/browser
Desktop
Le runner Desktop est la cible d'itération la plus rapide. Il utilise la crate lib du jeu et, à terme, le runtime SDL3 natif. Les entrées disponibles peuvent inclure clavier, souris, trackpad, gamepad et joystick.
La cible Desktop sert à tester le gameplay, le rendu, la boucle de jeu, l'audio et les abstractions communes sans imposer un déploiement sur émulateur ou téléphone.
Android
Android empaquette le jeu natif dans une application standard. La structure cible combine : SDL3 Android, une bibliothèque native Rust, la couche Java commune, les extensions Java spécifiques au jeu, les assets communs et spécifiques, puis les SDK Android requis.
Les fonctionnalités suivantes restent côté plateforme Android : lifecycle, JNI, Ads, Billing, haptique, share sheet, intégrations Play et autres API Android spécifiques.
Le gameplay Rust ne doit pas dépendre des classes Java ni d'une régie publicitaire particulière.
Web / WASM
La cible Web est prévue comme cible ultérieure. SDL3 peut être utilisé avec une chaîne Web adaptée, notamment Emscripten, tandis que le navigateur fournit ses propres contraintes de boucle d'événements, audio, stockage, permissions et interaction utilisateur.
Une version Web peut être équivalente au jeu natif ou être volontairement réduite pour jouer immédiatement depuis un lien, partager un challenge et orienter vers l'installation Android.
Contrats plateforme
Les différences non couvertes proprement par SDL3 passent par des contrats explicites, par exemple :
PlatformServices
├── Advertising
├── Billing
├── Sharing
├── Haptics
├── Leaderboard
├── CloudSave
├── Analytics
└── Notifications
Une génération de moteur ne doit pas obligatoirement imposer une nouvelle génération de bridge Android si ce contrat reste compatible.