# Uroburas — spécification fonctionnelle initiale ## Statut Étude fonctionnelle non normative pour `0.2.0-0-pre.5`. Cette prerelease décrit le comportement attendu. Le classement par engine, capability, game-system, serveur, provider, plateforme ou tooling est volontairement reporté. ## Identité Nom retenu : `Uroburas`. Uroburas est un Snake extensible comportant plusieurs modes, des cartes téléchargeables, des règles configurables, du solo, du PvP et un monde persistant multijoueur. ## Client installé Le client installé contient principalement : - moteur/runtime ; - logique de jeu partagée ; - interfaces/loaders ; - support plateforme ; - ressources minimales de bootstrap. Les cartes, assets et contenus associés peuvent être téléchargés séparément. Le client ne doit pas supposer que toutes les maps ou tous les assets existent lors de l'installation. ## Anatomie minimale du serpent Un serpent valide possède au minimum quatre unités logiques : 1. une tête ; 2. un cou ; 3. une unité de corps ; 4. une queue. Seul le **corps** est extensible. La longueur ne peut donc jamais devenir inférieure à quatre unités. Une attaque ou un effet de rétrécissement ne peut pas supprimer la tête, le cou, l'unité minimale de corps ou la queue en dehors d'une règle de mort explicite. Les interactions peuvent produire des effets différents selon la zone touchée. ## Gameplay attendu Le jeu doit permettre : - croissance et rétrécissement ; - coupure du corps ; - déplacement continu ou par pas selon la map ; - wrap-around aux bords lorsqu'autorisé ; - obstacles infranchissables ; - éléments à manger ; - éléments poussables ; - items temporaires ; - protections ; - projectiles/effets offensifs ; - timers ; - spawns et respawns. ## Règles pilotées par la map Une map peut définir ou contraindre : - taille et topology/wrap ; - murs/obstacles ; - spawn points ; - mode de déplacement ; - vitesse initiale et évolution ; - vies ; - items disponibles ; - objectifs ; - conditions de victoire/défaite ; - équipes ; - bots ; - spectator ; - timers ; - score ; - paramètres PvP. ## Modes Trois modes principaux : 1. Challenge ; 2. PvP Battles ; 3. Persistent Battle Royale. ## Online et identité Le mode Challenge peut être joué sans authentification. Les modes PvP Battles et Persistent Battle Royale exigent réseau et authentification. ## Personnalisation future Le produit vise aussi : - éditeur de maps ; - maps personnalisées ; - skins personnalisables ; - publication/modération éventuelles. ## Représentation graphique du serpent La représentation doit pouvoir limiter le nombre d'assets nécessaires grâce aux rotations d'image. Direction fonctionnelle envisagée : - tête, cou, segments droits et queue peuvent réutiliser leurs sprites par rotation ; - les virages du corps nécessitent au minimum deux variantes distinctes correspondant à une courbure vers la gauche et vers la droite relativement au mouvement ; - ces variantes peuvent ensuite être réutilisées par rotation ; - les skins doivent respecter le même contrat géométrique afin d'être interchangeables. Le détail du format de skin sera défini séparément. ## Priorité de la première version Uroburas La première version réelle de Uroburas se concentre sur le **Mode 1 — Challenge**. Elle doit prioritairement permettre : - moteur de grille/tilemap toroïdale ; - obstacles et murs ; - items ; - vies ; - temps ; - stages ; - caméra sur maps plus grandes que l'écran ; - contrôles clavier Desktop ; - contrôles tactiles par boutons directionnels affichés sur Mobile/Tablet ; - site Web initial ; - authentification ; - rewarded ads ; - Hall of Fame initial ; - échanges client/serveur authentifiés, versionnés et validables ; - maps/assets téléchargeables. Les systèmes de combat avancés feu/glace/poison/téléporteurs restent décrits comme direction fonctionnelle, mais ne sont pas requis pour cette première version. L'ordre de développement fonctionnel envisagé après stabilisation du Mode 1 est : 1. Mode 3 — Persistent Battle Royale ; 2. Mode 2 — PvP Battles. Cet ordre peut être réévalué ultérieurement, mais sert de priorité actuelle.