# Age of Obsidian — règles du jeu > **Documentation vivante.** Ce dossier est la **source de vérité à jour** pour le design > du jeu, tel que discuté et arbitré au fil des sessions. `../CONCEPT.md` reste consultable > pour le pitch d'origine et l'historique, mais **en cas de divergence, ces documents-ci > l'emportent.** > > Convention reprise de `CONCEPT.md` : chaque point est marqué **✅ décidé**, > **🟡 proposé / à creuser** ou **❓ question ouverte**. Voir `questions-ouvertes.md` pour > la liste consolidée de tout ce qui n'est pas encore tranché. --- ## Le jeu en une phrase **Age of Obsidian** est un STR (stratégie temps réel) de siège médiéval-fantasy jouable dans le navigateur, en parties de 30 à 40 minutes, qui se déroulent sur les cases d'une grande carte du monde **persistante et partagée entre tous les joueurs**. Chaque partie gagnée fait basculer une case vers la faction victorieuse — le monde change durablement, match après match. Quatre factions, chacune définie par son rapport au terrain plutôt que par des statistiques : Hommes (eau), Elfes (bois), Nains (pierre), Démons (lave). Le choc entre l'eau et la lave produit de l'**obsidienne** — un obstacle permanent, indestructible, qui donne son nom au jeu. ## Sommaire des documents | Document | Contient | |---|---| | [`monde.md`](monde.md) | La grande carte : grille 5×5, les 25 cartes × 4 variantes, les bastions, les règles de capture, la persistance du Monument | | [`factions.md`](factions.md) | Les 4 races, leur spécialisation économique, leurs pouvoirs de terraformation | | [`economie.md`](economie.md) | Les 4 ressources, les bâtiments, la boucle de jeu des ouvriers | | [`terraformation.md`](terraformation.md) | La mécanique-signature : le terrain à une seule couche, le creusage, l'écoulement gravitaire de l'eau/lave, la formation de l'obsidienne | | [`combat.md`](combat.md) | Conditions de victoire, élimination, déconnexion, bonus de hauteur, combat sur les bastions, pillage | | [`brouillard.md`](brouillard.md) | **Le brouillard de guerre** — ce qu'il cache, ce qu'il coûte, et pourquoi il reste cosmétique | | [`matchmaking.md`](matchmaking.md) | Comment une partie se lance depuis la carte du monde | | [`progression.md`](progression.md) | La monnaie meta (XP / argent) au niveau du compte joueur | | [`valeurs.md`](valeurs.md) | **La table de chiffrage** — toutes les valeurs d'équilibrage, provisoires par nature, destinées à passer en base de données | | [`pieces.md`](pieces.md) | **Le contrat des pièces 3D** — ce que le moteur exige d'une unité ou d'un bâtiment : animation par **squelette** (§2, renversé le 2026-08-13), états, échelle, couleur de joueur, budgets | | [`architecture.md`](architecture.md) | **Les décisions d'implémentation du moteur** — frontière simulation/rendu, modèle réseau, déterminisme, pile technique, persistance | | [`questions-ouvertes.md`](questions-ouvertes.md) | Tout ce qui n'est pas encore tranché, toutes sources confondues | Document satellite, sujet distinct (direction artistique plutôt que règles de jeu) mais rangé ici pour tout centraliser : - **[`terrain.md`](terrain.md)** — direction artistique du terrain, **décidée** (« Bois nu »), **portée** dans `client/render/`, et §5 tranche le conflit entre le lissage de la direction et l'exigence de gameplay qu'**un trou d'une cellule se voie**. Hors de ce dossier : - **[`../CONCEPT.md`](../CONCEPT.md)** — pitch d'origine et historique de la comparaison de direction artistique. Toujours utile pour le contexte, mais périmé sur le détail des règles (voir bannière en tête du fichier). ## Où en est le code Le **socle** est là — disposition d'état, virgule fixe, aléa reproductible, boucle de tick, hachage et rejeu (`/srv/obsidian/sim/`) —, ainsi que le **serveur autoritaire** (`/srv/obsidian/server/`), le **rendu du terrain** (`/srv/obsidian/client/render/`, le portage chunké de « Bois nu ») et le **contrat de pièces** (`/srv/obsidian/client/pieces/`), plus les maquettes de direction artistique (`/srv/obsidian/mockups/`, voir `../CONCEPT.md` §6 et `terrain.md` §4). Côté **règles de jeu, les quatre systèmes tournent** : - **terraformation** — creusage, pente, écoulement, obsidienne, génération de carte (`sim/terrain.ts`, `sim/fluid.ts`, `sim/mapgen.ts`) ; - **déplacement** — champs de flux par destination, réparation incrémentale, évitement local (`sim/path.ts`, `sim/move.ts`) ; - **économie** — ouvriers, récolte des 4 ressources, les 5 bâtiments, la production d'unités, et les 4 races (`sim/economy.ts`, `sim/buildings.ts`, `sim/factions.ts`) ; - **combat et fin de partie** — ciblage, dégâts, bonus de hauteur, élimination, victoire militaire et victoire par Monument (`sim/combat.ts`, `sim/victory.ts`) ; - **brouillard de guerre** — visibilité par joueur, carte explorée cumulative, ciblage soumis à la vision, et trois états à l'écran (`sim/vision.ts`, `client/game/brouillard.js`). Ce dossier `rules/` reste la spécification à partir de laquelle le reste s'écrit — il manque surtout, côté client, les **entrées et le HUD**. Les décisions **techniques** — frontière simulation/rendu, modèle réseau, déterminisme en virgule fixe, découpage en chunks, pile technique, persistance — sont arrêtées et rédigées dans **[`architecture.md`](architecture.md)**. **Qui fait quoi et ce qu'il reste à faire : [`../SUIVI.md`](../SUIVI.md)**, pas ici.