0.2.0-0-pre.5
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/RULES_COMMANDS.md -->
|
||||
<!-- version: 8 -->
|
||||
<!-- version: 9 -->
|
||||
|
||||
# Règles d'exécution des commandes
|
||||
|
||||
@@ -88,3 +88,11 @@
|
||||
- **CMD-MATRIX-001** — `docs/rules/RULES_VALIDATION_MATRIX.md` associe des identifiants stables aux commandes et décrit leurs dépendances.
|
||||
- **CMD-MATRIX-002** — Lorsqu'une modification affecte une crate dont dépendent d'autres crates, les validations ciblées couvrent la crate modifiée et les consommateurs directement ou transitivement impactés selon la portée de l'API.
|
||||
- **CMD-MATRIX-003** — La matrice évolue avec le workspace ; ajouter une nouvelle plateforme ou un nouveau type de build doit ajouter ou adapter les commandes concernées plutôt que créer une procédure informelle parallèle.
|
||||
|
||||
## Outils de build et scripts d'audit
|
||||
|
||||
- **CMD-BUILD-001** — Les scripts Python du dépôt sont autorisés pour les audits, audits complémentaires, validations et validations complémentaires.
|
||||
- **CMD-BUILD-002** — Un script Python ne pilote pas le build d'un produit, d'une plateforme ou d'un package distribué.
|
||||
- **CMD-BUILD-003** — Les builds utilisent l'outil natif approprié au périmètre : Cargo pour Rust, Gradle pour Android, Tauri CLI pour Tauri, ou l'outil officiellement retenu par la plateforme concernée.
|
||||
- **CMD-BUILD-004** — Les POC `0.3.x` doivent remplacer toute orchestration de build Python restante par des procédures explicites, reproductibles et testées avec les outils natifs.
|
||||
- **CMD-BUILD-005** — Les builds, tests unitaires, tests d'intégration et smoke tests de validation sont exécutés côté utilisateur ; les scripts d'audit peuvent vérifier statiquement leur préparation mais ne les simulent pas.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/studies/000-README.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Études
|
||||
|
||||
@@ -37,3 +37,12 @@ Ces études sont des propositions à relire. Elles ne deviennent pas automatique
|
||||
- [`012-PLATFORM_POC_SEQUENCE.md`](012-PLATFORM_POC_SEQUENCE.md) — ordre proposé des POC pour une future série `0.3.x`.
|
||||
|
||||
Ces documents étudient les POC à réaliser ; ils ne lancent encore aucune implémentation.
|
||||
|
||||
## Étude du prochain jeu réel
|
||||
|
||||
- [`013-UROBURAS_FUNCTIONAL_SPEC.md`](013-UROBURAS_FUNCTIONAL_SPEC.md) — spécification fonctionnelle initiale de Uroburas.
|
||||
- [`014-UROBURAS_MODES_AND_SESSION_RULES.md`](014-UROBURAS_MODES_AND_SESSION_RULES.md) — Challenge, PvP Battles et Persistent Battle Royale.
|
||||
- [`015-UROBURAS_MAP_ASSET_AND_UGC_SPEC.md`](015-UROBURAS_MAP_ASSET_AND_UGC_SPEC.md) — maps/assets téléchargés, règles de map, éditeur et UGC.
|
||||
- [`016-UROBURAS_COMBAT_ITEM_EFFECT_SPEC.md`](016-UROBURAS_COMBAT_ITEM_EFFECT_SPEC.md) — armes, protections et interactions tête/corps/queue.
|
||||
- [`017-UROBURAS_SCORE_RESPAWN_AND_HALL_OF_FAME.md`](017-UROBURAS_SCORE_RESPAWN_AND_HALL_OF_FAME.md) — score, vies, rewarded continue/rejoin et classements.
|
||||
- [`018-UROBURAS_SERVER_MEDIA_AND_OBSERVATION_SPEC.md`](018-UROBURAS_SERVER_MEDIA_AND_OBSERVATION_SPEC.md) — spectator, bots, replay, streaming et vidéo régénérée.
|
||||
|
||||
101
docs/studies/013-UROBURAS_FUNCTIONAL_SPEC.md
Normal file
101
docs/studies/013-UROBURAS_FUNCTIONAL_SPEC.md
Normal file
@@ -0,0 +1,101 @@
|
||||
<!-- file: docs/studies/013-UROBURAS_FUNCTIONAL_SPEC.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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.
|
||||
|
||||
## Serpent
|
||||
|
||||
Le serpent possède au minimum :
|
||||
|
||||
- tête ;
|
||||
- cou / première portion après la tête ;
|
||||
- corps ;
|
||||
- queue.
|
||||
|
||||
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.
|
||||
144
docs/studies/014-UROBURAS_MODES_AND_SESSION_RULES.md
Normal file
144
docs/studies/014-UROBURAS_MODES_AND_SESSION_RULES.md
Normal file
@@ -0,0 +1,144 @@
|
||||
<!-- file: docs/studies/014-UROBURAS_MODES_AND_SESSION_RULES.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Uroburas — modes et règles de session
|
||||
|
||||
## Mode 1 — Challenge
|
||||
|
||||
### Accès
|
||||
|
||||
- jouable sans authentification ;
|
||||
- réseau non requis pour jouer ;
|
||||
- réseau/auth requis pour Hall of Fame et rewarded ads lorsque utilisés.
|
||||
|
||||
### Run
|
||||
|
||||
Une run :
|
||||
|
||||
- commence au stage 1 ;
|
||||
- commence au spawn défini ;
|
||||
- démarre avec un nombre initial de vies ;
|
||||
- progresse à travers les stages ;
|
||||
- se termine à l'abandon, à la fin prévue ou lorsque plus aucune continuation n'est disponible.
|
||||
|
||||
### Mort
|
||||
|
||||
Lorsqu'un joueur meurt :
|
||||
|
||||
- il perd une vie ;
|
||||
- il respawn au spawn du stage ;
|
||||
- l'état exact du stage après mort est défini par la map/ruleset.
|
||||
|
||||
À zéro vie, une rewarded ad peut éventuellement offrir une continuation si réseau et monétisation sont disponibles.
|
||||
|
||||
### Stage
|
||||
|
||||
Une map Challenge peut :
|
||||
|
||||
- dépasser l'écran ;
|
||||
- être wrap-around ;
|
||||
- contenir murs/obstacles ;
|
||||
- contenir objectifs à consommer ;
|
||||
- contenir objets poussables ;
|
||||
- faire grandir/rétrécir ;
|
||||
- faire apparaître vies/items temporairement ;
|
||||
- utiliser déplacement step-based ou auto-forward ;
|
||||
- faire varier la vitesse.
|
||||
|
||||
## Mode 2 — PvP Battles
|
||||
|
||||
### Accès
|
||||
|
||||
- réseau obligatoire ;
|
||||
- authentification obligatoire.
|
||||
|
||||
### Participants
|
||||
|
||||
La partie peut supporter :
|
||||
|
||||
- 1v1 ;
|
||||
- 3 joueurs ;
|
||||
- 4 joueurs ;
|
||||
- équipes ;
|
||||
- free-for-all ;
|
||||
- bots si autorisés.
|
||||
|
||||
### Création et sélection
|
||||
|
||||
Une partie peut être :
|
||||
|
||||
- privée ;
|
||||
- réservée à des joueurs présélectionnés ;
|
||||
- ouverte à matchmaking/aléatoire ;
|
||||
- composée de joueurs et bots.
|
||||
|
||||
Les participants peuvent choisir une map selon les règles de la session.
|
||||
|
||||
### Règles
|
||||
|
||||
La map/ruleset peut définir :
|
||||
|
||||
- nombre de vies ;
|
||||
- items ;
|
||||
- collisions ;
|
||||
- équipes ;
|
||||
- conditions de victoire ;
|
||||
- spectator ;
|
||||
- bots ;
|
||||
- timers ;
|
||||
- vitesse ;
|
||||
- autres paramètres.
|
||||
|
||||
### Fin
|
||||
|
||||
La session finit lorsque la condition de victoire est satisfaite.
|
||||
|
||||
Exemples : dernier joueur vivant, dernière équipe vivante, épuisement des vies, score cible ou limite de temps.
|
||||
|
||||
## Mode 3 — Persistent Battle Royale
|
||||
|
||||
### Accès
|
||||
|
||||
- réseau obligatoire ;
|
||||
- authentification obligatoire pour jouer ;
|
||||
- observation possible selon politique serveur.
|
||||
|
||||
### Monde
|
||||
|
||||
Une map :
|
||||
|
||||
- peut être gigantesque ;
|
||||
- reste active jusqu'à décision administrative ;
|
||||
- accepte joueurs entrant/sortant ;
|
||||
- contient bots serveur et items temporaires ;
|
||||
- peut être découpée en zones/chunks.
|
||||
|
||||
### Tentative
|
||||
|
||||
Chaque entrée active constitue une tentative.
|
||||
|
||||
Le joueur :
|
||||
|
||||
- spawn sur un point valide ;
|
||||
- possède une vie ;
|
||||
- commence score/progression de tentative à zéro ;
|
||||
- peut tuer joueurs ou bots ;
|
||||
- peut être tué par joueurs, bots, environnement ou effets.
|
||||
|
||||
### Mort et retour
|
||||
|
||||
À la mort :
|
||||
|
||||
- la tentative est close ;
|
||||
- l'ancien état n'est pas restauré ;
|
||||
- le joueur attend avant de revenir, par exemple sept minutes ;
|
||||
- une rewarded ad peut réduire/supprimer l'attente ;
|
||||
- le retour démarre une nouvelle tentative à zéro.
|
||||
|
||||
### Bots
|
||||
|
||||
Les bots sont exécutés côté serveur, peuvent mourir, respawn après un délai et recevoir un nouveau profil comportemental à chaque respawn.
|
||||
|
||||
### Observation
|
||||
|
||||
Un utilisateur peut rester spectateur sans tentative active.
|
||||
61
docs/studies/015-UROBURAS_MAP_ASSET_AND_UGC_SPEC.md
Normal file
61
docs/studies/015-UROBURAS_MAP_ASSET_AND_UGC_SPEC.md
Normal file
@@ -0,0 +1,61 @@
|
||||
<!-- file: docs/studies/015-UROBURAS_MAP_ASSET_AND_UGC_SPEC.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Uroburas — maps, assets et UGC
|
||||
|
||||
## Téléchargement
|
||||
|
||||
Le client doit pouvoir télécharger :
|
||||
|
||||
- maps ;
|
||||
- textures/sprites ;
|
||||
- sons ;
|
||||
- metadata ;
|
||||
- rulesets ;
|
||||
- skins ;
|
||||
- autres ressources propres à une map.
|
||||
|
||||
## Package de map
|
||||
|
||||
Une map publiée peut référencer :
|
||||
|
||||
- map id/version ;
|
||||
- game/ruleset compatibility ;
|
||||
- tilemap ;
|
||||
- dimensions ;
|
||||
- topology/wrap ;
|
||||
- layers ;
|
||||
- obstacles ;
|
||||
- spawn points ;
|
||||
- item/bot spawn rules ;
|
||||
- objectives ;
|
||||
- timers ;
|
||||
- rules ;
|
||||
- asset manifest.
|
||||
|
||||
## Règles par map
|
||||
|
||||
Une map peut fixer notamment déplacement, vitesse, vies, équipes, bots, spectator, items, puissance des items, score, fin de partie, respawn et cooldowns.
|
||||
|
||||
## Cache et compatibilité
|
||||
|
||||
Le client doit pouvoir découvrir une map, vérifier compatibilité/version/intégrité, télécharger package/assets, mettre en cache et remplacer une version obsolète.
|
||||
|
||||
## Éditeur de maps
|
||||
|
||||
Objectifs :
|
||||
|
||||
- créer map ;
|
||||
- placer obstacles/spawns/objectifs/items ;
|
||||
- configurer règles ;
|
||||
- tester localement ;
|
||||
- sauvegarder draft ;
|
||||
- publier si autorisé.
|
||||
|
||||
## UGC
|
||||
|
||||
Une map utilisateur peut avoir auteur, id/version, visibilité, état draft/published, description/tags, rating, reports, moderation status et compatibility metadata.
|
||||
|
||||
## Skins
|
||||
|
||||
Première approche possible : palettes, motifs, variantes tête/corps/queue et accessoires autorisés. L'upload libre d'images reste séparé.
|
||||
72
docs/studies/016-UROBURAS_COMBAT_ITEM_EFFECT_SPEC.md
Normal file
72
docs/studies/016-UROBURAS_COMBAT_ITEM_EFFECT_SPEC.md
Normal file
@@ -0,0 +1,72 @@
|
||||
<!-- file: docs/studies/016-UROBURAS_COMBAT_ITEM_EFFECT_SPEC.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Uroburas — combat, items et effets
|
||||
|
||||
## Principe
|
||||
|
||||
Une attaque peut produire un résultat différent selon tête, cou, corps ou queue. Une attaque peut parfois devenir indirectement bénéfique en raccourcissant le serpent.
|
||||
|
||||
## Inventaire
|
||||
|
||||
Un serpent peut obtenir un ou plusieurs items et décider de les utiliser ou non. Capacité, stacking, puissance, durée, cooldown et combinaison sont configurables par ruleset.
|
||||
|
||||
## Boule de feu
|
||||
|
||||
### Tête non protégée
|
||||
|
||||
- tue le serpent.
|
||||
|
||||
### Tête protégée
|
||||
|
||||
- consomme un ou plusieurs points de casque selon puissance ;
|
||||
- peut tuer si la protection est insuffisante.
|
||||
|
||||
### Corps / queue
|
||||
|
||||
- détruit ou coupe une portion selon niveau/puissance ;
|
||||
- peut raccourcir le serpent et parfois l'avantager.
|
||||
|
||||
## Boule de glace
|
||||
|
||||
### Tête non protégée
|
||||
|
||||
- peut tuer.
|
||||
|
||||
### Tête avec casque
|
||||
|
||||
- consomme un ou plusieurs points de protection ;
|
||||
- peut geler le serpent pendant une durée ;
|
||||
- le gel peut entraîner un rétrécissement du corps.
|
||||
|
||||
### Corps non protégé
|
||||
|
||||
- coupe la portion concernée.
|
||||
|
||||
### Corps protégé par shield
|
||||
|
||||
- peut geler temporairement la portion ;
|
||||
- peut modifier temporairement croissance/longueur ;
|
||||
- les détails dépendent du ruleset.
|
||||
|
||||
## Poison
|
||||
|
||||
Le poison peut être projeté depuis la tête, parcourir un nombre limité de cases, se propager pendant une durée, contaminer plusieurs tiles puis disparaître.
|
||||
|
||||
Sur la tête il peut tuer selon protection/ruleset. Sur le corps il peut couper à l'endroit atteint et donc raccourcir le serpent.
|
||||
|
||||
## Casque / masque
|
||||
|
||||
Protection de tête avec plusieurs points possibles, cumul via pickups et absorption de plusieurs coups selon puissance.
|
||||
|
||||
## Body shield
|
||||
|
||||
Le shield protège le corps à partir du cou. Chaque portion protégée peut perdre sa protection individuellement.
|
||||
|
||||
## Téléporteurs
|
||||
|
||||
Les téléporteurs peuvent fonctionner par paire ou groupe, utiliser un identifiant/canal, être temporaires/permanents et être placés par map ou activés par item.
|
||||
|
||||
## Paramétrage
|
||||
|
||||
Les effets peuvent définir level, power, range, duration, spread, cooldown, zone, charges et interactions avec protections.
|
||||
32
docs/studies/017-UROBURAS_SCORE_RESPAWN_AND_HALL_OF_FAME.md
Normal file
32
docs/studies/017-UROBURAS_SCORE_RESPAWN_AND_HALL_OF_FAME.md
Normal file
@@ -0,0 +1,32 @@
|
||||
<!-- file: docs/studies/017-UROBURAS_SCORE_RESPAWN_AND_HALL_OF_FAME.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Uroburas — score, respawn et Hall of Fame
|
||||
|
||||
## Challenge
|
||||
|
||||
Une run peut enregistrer points, temps, stage atteint, vies restantes, morts, continues et rewarded continues.
|
||||
|
||||
Le score peut combiner score brut, bonus, pénalités de mort, pénalités de continue et pénalités de rewarded continue.
|
||||
|
||||
## Hall of Fame Challenge
|
||||
|
||||
Si le joueur est online/authentifié lorsqu'il termine ou quitte, points, temps, stage, morts/continues et versions de map/ruleset/game peuvent être soumis.
|
||||
|
||||
## PvP
|
||||
|
||||
Le résultat peut inclure winner/team, kills/deaths, vies consommées, durée, map/ruleset et composition joueurs/bots.
|
||||
|
||||
## Battle Royale
|
||||
|
||||
Chaque tentative repart de zéro. Statistiques candidates : survival time, player kills, bot kills, maximum length, items, distance et cause of death.
|
||||
|
||||
## Respawn / rejoin
|
||||
|
||||
Joueur : une vie par tentative, cooldown de retour, rewarded ad possible, rejoin = nouvelle tentative.
|
||||
|
||||
Bot : respawn automatique, délai plus court, profil comportemental éventuellement renouvelé.
|
||||
|
||||
## Comparabilité
|
||||
|
||||
Un score conserve mode, map id/version, ruleset version, game version et seed si applicable.
|
||||
@@ -0,0 +1,34 @@
|
||||
<!-- file: docs/studies/018-UROBURAS_SERVER_MEDIA_AND_OBSERVATION_SPEC.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Uroburas — observation, bots et média serveur
|
||||
|
||||
## Spectator
|
||||
|
||||
Les modes online peuvent autoriser suivi d'un joueur, changement de joueur, vue de zone, vue libre limitée et leaderboard/live stats. La politique peut être désactivée, limitée ou retardée.
|
||||
|
||||
## PvP
|
||||
|
||||
Le spectator peut être activé/désactivé, limité à certains utilisateurs, autorisé après élimination ou différé pour éviter le ghosting.
|
||||
|
||||
## Battle Royale
|
||||
|
||||
Un utilisateur peut rester observateur pendant le cooldown ou sans jouer.
|
||||
|
||||
## Reconstitution serveur
|
||||
|
||||
Le serveur authoritative possède les données nécessaires pour produire une représentation indépendante d'un client joueur.
|
||||
|
||||
Objectifs futurs : replay, observation Web, streaming, enregistrement, génération de vidéo et publication sur plateformes vidéo.
|
||||
|
||||
## Vidéo régénérée
|
||||
|
||||
Une stratégie possible consiste à enregistrer événements/états puis reconstruire la partie dans un processus dédié afin de choisir caméra/angle et produire vidéo ou stream. Une autre stratégie est un renderer serveur/headless spécialisé.
|
||||
|
||||
Aucune technologie n'est choisie ici.
|
||||
|
||||
## Données candidates
|
||||
|
||||
Snapshots, event log, inputs/actions, positions, item usage, deaths/kills, spawn/despawn, map/ruleset version et timestamps/ticks.
|
||||
|
||||
Le service media ne doit pas appartenir à la boucle critique de simulation.
|
||||
Reference in New Issue
Block a user