6.3 KiB
Uroburas — classification fonctionnelle par ownership
Statut
Étude non normative pour 0.2.0-0-pre.6.
Objectif : éviter que les futures crates Uroburas multiplateformes deviennent des monolithes contenant des responsabilités réutilisables, serveur, plateforme ou tooling.
Principe
Une fonctionnalité appartient à la couche la plus basse qui puisse la fournir sans connaître Uroburas.
La crate jeu conserve uniquement :
- règles propres à Uroburas ;
- composition des game-systems ;
- contenu/rulesets Uroburas ;
- coordination propre aux modes.
Engine kernel
Responsabilités minimales :
- lifecycle générique ;
- boucle update/render ;
- temps monotone ;
- fixed-step/scheduling si retenu ;
- runtime events ;
- provenance runtime ;
- contrats minimaux input/render ;
- quit/pause génériques.
Le kernel ne connaît pas :
- Snake ;
- stages ;
- vies ;
- Hall of Fame ;
- publicité ;
- auth ;
- maps Uroburas ;
- WebSocket ;
- Actix.
Technical capabilities
Input
- semantic actions ;
- keyboard ;
- virtual buttons tactiles ;
- gamepad éventuel ;
- mapping/configuration ;
- focus/lifecycle input.
Rendering 2D
- sprites/textures ;
- rotation ;
- viewport ;
- caméra 2D ;
- layers/z-order ;
- animation sprite simple ;
- debug primitives.
Audio
- musique ;
- SFX ;
- volume/mute ;
- lifecycle audio.
Assets/content
- asset identifiers ;
- package manifest ;
- téléchargement ;
- cache ;
- version/intégrité ;
- invalidation ;
- résolution de chemins logiques.
Localization
- locales ;
- Fluent resources ;
- fallback ;
- message arguments ;
- bundles client ;
- ressources localisées téléchargées.
Persistence locale
- settings ;
- cache ;
- progression locale éventuelle ;
- données de session offline.
Networking client
- HTTPS ;
- WebSocket ;
- reconnect ;
- timeout/backoff ;
- protocole versionné ;
- session/auth tokens ;
- validation des messages ;
- séparation transport/protocole.
Logging/telemetry
- tracing ;
- sinks plateforme ;
- diagnostics ;
- métriques séparées du logging.
Game-systems réutilisables
Grid/tilemap
- grille ;
- coordonnées ;
- layers ;
- tile occupancy ;
- topology wrap/toroïdale ;
- zones/chunks possibles.
Collision 2D grid
- murs ;
- obstacles ;
- entités occupantes ;
- collision tile/entity.
Camera/viewport gameplay
- suivi ;
- scrolling ;
- bounds ;
- map plus grande que l'écran.
Stage/progression
- stage id/version ;
- start/complete/fail ;
- transitions ;
- ordre de stages.
Lives/attempts
- vie courante ;
- perte ;
- continue ;
- respawn policy.
Score
- score brut ;
- bonus ;
- pénalités ;
- modifiers ;
- résultat final explicable.
Timed entities
- apparition ;
- durée ;
- expiration ;
- respawn ;
- cooldown.
Pickup/inventory
- pickups ;
- capacité ;
- stacks ;
- consommables ;
- activation volontaire.
Status effects
Réservé pour les évolutions :
- freeze ;
- poison ;
- shield ;
- timed modifiers.
Uroburas-specific gameplay
Snake anatomy
- tête ;
- cou ;
- corps extensible ;
- queue ;
- longueur minimale de quatre unités.
Snake movement
- direction relative ;
- interdiction/gestion du demi-tour ;
- step-based ;
- auto-forward ;
- vitesse Snake.
Snake body geometry
- croissance ;
- rétrécissement ;
- propagation de positions ;
- courbures gauche/droite ;
- rotation de sprites ;
- coupure future.
Uroburas stage rules
- objectifs propres à une map Uroburas ;
- règles de fin ;
- règles de croissance/rétrécissement ;
- interactions propres aux items.
Uroburas modes
- Challenge ;
- Persistent Battle Royale ;
- PvP Battles.
Combat Uroburas
Future scope :
- feu ;
- glace ;
- poison ;
- protections tête/corps ;
- téléporteurs ;
- interaction tête/cou/corps/queue.
Ces concepts restent Uroburas-specific tant qu'un second jeu ne justifie pas leur généralisation.
Server services
Identity/account
- PlayerId canonique ;
- login ;
- session ;
- account linking ;
- external identities ;
- email verification/recovery.
Content service
- catalogue maps/skins/assets ;
- versions ;
- manifests ;
- URLs/download authorization ;
- publication/modération future.
Hall of Fame
- score submission ;
- validation ;
- classement ;
- contexte map/ruleset/game version.
Reward authority
- rewarded ad validation ;
- continue autorisé ;
- bonus de stage ;
- idempotence ;
- anti-double-credit.
Realtime session service
Pour Modes 3 puis 2 :
- WebSocket session ;
- authoritative state ;
- tick ;
- snapshots/deltas ;
- reconnect/resync ;
- spectator.
Bot execution
- profils ;
- décision serveur ;
- respawn ;
- simulation de participants.
Media/replay
Future scope :
- event log ;
- replay ;
- rendu/reconstitution ;
- streaming/enregistrement.
Providers
- ad provider ;
- auth provider externe ;
- email transport provider éventuel ;
- CDN/object storage ;
- Play Games/Game Center/Steam futurs.
Le provider n'est jamais l'identité métier canonique.
Platform adapters
Desktop SDL
- SDL window/render/input ;
- keyboard ;
- filesystem/platform lifecycle.
Android SDL
- Java/JNI ;
- touch/virtual controls ;
- Android lifecycle ;
- packaging.
Web/WASM
- browser host ;
- pointer/touch/keyboard ;
- storage/browser lifecycle ;
- asset fetch.
Tauri
- WebView host ;
- bridge Rust/Web ;
- platform plugins.
Tooling
Map editor
- création ;
- validation ;
- preview/test ;
- publication.
Skin editor
- contrat de skin ;
- preview ;
- génération contrôlée ;
- validation.
Build tooling
- Cargo ;
- Gradle ;
- Tauri CLI ;
- outils natifs de plateforme.
Python n'est pas un outil de build.
Audit/validation tooling
Python reste autorisé pour :
- audits ;
- validations complémentaires ;
- contrôles statiques ;
- rapports.
Règle de dépendance
Le jeu dépend vers les couches réutilisables :
Uroburas game
↓
game-systems
↓
technical capabilities
↓
engine kernel
Les adapters/providers sont composés par les applications/targets, pas appelés directement depuis la logique Uroburas.
Les services serveur partagent des contrats/domain types explicitement dédiés, sans importer les crates client/GUI.