Carte des règles de Corals 2Comment Claude et Codex travaillent sur le jeu : où sont les règles, qui fait quoi, comment on publie.

Générée le 23 octobre 2026 à 02:30
depuis les fichiers du dossier partagé

Vue d'ensemble

9applications *.playcorals.online
9règles permanentes d'Antoine
29règles du jeu et de développement
120fonctions décrites dans la carte du code
112publications par tools/publish.sh (+ 137 avant)
98 Kode règles chargées d'office (≈ 29500 tokens)
Codecommit 131c6cfc = branche prod (131c6cfc)
Ce qui a changéWorld : petit drapeau d’arrivée déplaçable directement à la souris ou au doigt ; le récit s’ouvre seulement au clic. Le trajet du tonneau suit le rivage choisi, avec contrôle de la terre, des bâtiments et de la mer ; enregistrement en ligne et annulation conservés.
Serveurinstantané /var/lib/corals-2/server-releases/20261023T002600Z-131c6cfc-arrival-pin (server/, src/, blender/ d'un même commit, drop-in 90)
Pages en ligne sans source dans prodaucune

Sources des règles

Du plus général au plus précis. En cas de conflit, le plus précis gagne : le CLAUDE.md de Corals 2 passe avant le socle Archonse, qui passe avant les règles globales.

Global
Règles de tout le serveur (MCP par CMCP, hub, DNS, modèles OpenAI, /tmp…) et le vocabulaire Corals : /root/.claude/CLAUDE.md (Claude), /root/.codex/AGENTS.md (Codex).
Socle Archonse
Commun à tous les projets : où tourne l'agent, livrer un site, navigateur, archonse-ctx, publication générale.
Corals 2
CLAUDE.md du dossier partagé (avec docs/ETAT.md importé), AGENTS.md pour Codex, LEXIQUE.md, docs/CHANTIERS.md. Dans prod et les copies, ce ne sont qu'un renvoi.
Détail sur demande
docs/carte/ (le code, domaine par domaine), docs/RELEASES.md (historique), docs/publication.md (pièges).

Fichiers

FichierRôleLu parChargementTaille
/root/.claude/CLAUDE.mdRègles globales Claudetous les chats Claude du serveurd'office37 Ko
/root/.codex/AGENTS.mdRègles globales Codextous les chats Codexd'office18 Ko
/root/archonse/ProjectList/CLAUDE.mdSocle Archonsetous les chats projet Clauded'office20 Ko
CLAUDE.mdRègles de Corals 2Claude (auto) ; Codex (lu sur consigne)d'office39 Ko
docs/ETAT.mdCe qui est en ligneimporté par CLAUDE.md ; Codex le litd'office1,1 Ko
AGENTS.mdRésumé pour CodexCodexd'office2,6 Ko
LEXIQUE.mdLexique (le vocabulaire d’Antoine)lu avant chaque tâcheà lire70 Ko
docs/CHANTIERS.mdQui travaille sur quoi, restes à fairelu avant de commencerà lire7,6 Ko
docs/carteCarte du code, par domainelue avant de toucher un domainesur demande334 Ko
docs/RELEASES.mdHistorique des publicationsécrit par tools/publish.shsur demande267 Ko
docs/publication.mdPublier à la main, piègesen cas de besoinsur demande3,1 Ko

Mémoire des comptes Claude (Codex ne la lit pas : rien d'important ne doit vivre seulement ici)

MémoireCe qu'elle ditComptes
adminsCorals 2 — seuls les admins changent le monde (21/10/2026) ; page admin.playcorals.online, droits dans admin/rights.ts, garde serveuraccount-2
app-androidL'app Android Play Corals (com.antoinecarle.corals) est une coque WebView dans le projet corals (Corals 1), pointée sur Corals 2 depuis la 1.0.6, langue du téléphone depuis la 1.0.7account-2
betaCorals 2 est présenté comme une bêta / démo avant lancement (21/10/2026) : fenêtre au 1er lancement + badge, src/standalone/beta.tsaccount-2
bourse-serveurBourse (21/10) : or, cristaux et doublon gardés sur le serveur (wallet-api) ; « l'or c'est le plus important » ; doublon d'or à cours indexé sur l'inflation (22/10) ; le sac a suivi avec le personnage lié au compteaccount-2
comptes-connexionComptes Corals 2 (21/10/2026) : connect.playcorals.online, e-mails Resend, admin par compte ; antoine83680@gmail.com propriétaireaccount-2
couts-iaCoûts IA du jeu (20/10/2026) : compteur serveur ai-costs.mjs, page couts.playcorals.online par joueur/jour/fonctionaccount-2
dialogues-en-bullesCorals — dans les scènes, Antoine préfère les bulles au-dessus des personnages à une fenêtre de conversationaccount-2, account-3
joueurs-en-ligneMultijoueur de Corals 2 — WebSocket world-api/live, salon par île, avatars, groupe avec créatures partagées par l'hôte (party.ts) ; détail dans docs/carte/socle.mdaccount-2
lab-stuffLab Stuff (atelier des vêtements) : stuff.playcorals.online depuis le 21/10/2026, habillage pièce par pièce ; API = service à part corals-2-stuff, publiée à la mainaccount-2
langue-du-jeuCorals 2 traduit à l'écran (21/10/2026) ; anglais par défaut, globe en haut à droite pour changer ; i18n/live.ts, server/i18n.mjs, tools/i18n/account-2
personnage-comptePersonnage lié au compte (21/10) : le héros (sac, niveau, compétences, corps…) vit sur le serveur avec la bourse ; un compte connecté le retrouve partout, un appareil à la foisaccount-2
proprietesPropriétés (21/10) : le héros achète un bâtiment génératif (une maison d'abord) qui lui rapporte de l'or ou du stuff ; stratégie en discussion, décision du modèle de propriété en attenteaccount-2
qui-est-quiCorals 2 — les sept sortes de personnages (héros, joueur en ligne, Player, habitant, ennemi, créature, PNJ du vrai jeu) : une seule source beings.ts, section illustrée du lexique, camps de Players posables dans Corals World (21/10)account-2
regles-coralsCorals 2 — où sont les règles (CLAUDE.md léger, docs/, tools/publish.sh, branche prod) et pourquoi ne pas les regonfleraccount-2, account-3
sauvegarde-githubCorals 2 sauvegardé sur GitHub privé (21/10/2026) : remote github + clé de déploiement, minuteries, branche data, kit tools/portableaccount-2
signalements-captureSignaler › ⏱️ Capture (FPS) : sonde de perf toujours active, captures données/vidéo, analyse, et règle 9 « optimiser systématiquement d'après les captures »account-2
signalementsCorals 2 — bouton Signaler (F8) → diagnostic IA → Archonse (Phases bug) ; lire avec tools/reports.mjs avant de corrigeraccount-2
skins-assemblageSkins d'assemblage des habitants (21/10) — looks/assembly.ts, 12 styles, tout PNJ généré doit passer par là ; roadmap dans Phasesaccount-2
sol-texturesSol des îles : une vraie texture peinte par matière, dans le style de l'herbe du jeu, jamais l'herbe recolorée (21/10/2026)account-2
synchro-builder-worldBuilder du jeu ↔ World Lab synchronisés dans les deux sens, y compris sur les îles du monde (Port-Brise) account-2
world-lab-unifierWorld Lab : Antoine veut un seul endroit par fonction (pas de doublons), le meilleur de chaque version fusionné, et l'habillage du labo partoutaccount-2, account-3

Branches et copies

Trois endroits, trois rôles. 128 branches et 37 copies de travail aujourd'hui.

📜 main · le dossier partagé

/root/archonse/ProjectList/corals-2

Les règles, docs/, LEXIQUE.md, les outils de publication. On n'y change jamais de branche ; on n'y commite que ses propres fichiers (git commit -- <fichiers>).

🚀 prod · le code en ligne

Commit 131c6cfc

Toujours égale à ce qui tourne. Avancée seulement par tools/publish.sh, reculée par --rollback. Ses CLAUDE.md / AGENTS.md renvoient vers main.

🛠️ une copie par tâche

git worktree add /var/tmp/corals2-<nom> -b <nom> prod

On y code, on y commite, on publie depuis elle, puis on la retire. Le sujet est réservé dans docs/CHANTIERS.md.

Publier : tools/publish.sh

Une seule commande pour Claude et Codex, sans demander (règle 3), à la fin de chaque tâche ; un bug bloquant part aussitôt.

🔒Verrouune publication à la fois
🔀Fusionrelease en ligne + prod ; conflit = arrêt
🛡️Garde-fousrègles et docs jamais modifiées dans la copie
🧪Contrôlestypecheck, tous les tests, échecs connus listés
🏗️Release légèrepages construites, ressources changées copiées, le reste lié
🖥️Serveurinstantané essayé sur un port libre, puis drop-in 90
🔁Basculecurrent → nouvelle release
🌐Vérificationcorals2, world, lexique servent la nouvelle version
📝Notesprod avancée, RELEASES, ETAT, LEXIQUE, cette carte
✨Joueursmise à jour en direct au premier moment calme

tools/publish.sh --dir <copie> --name <nom> --what "…" · --rollback (site et serveur) · --status · --no-switch (tout préparer sans mettre en ligne). Ce qu'il ne fait pas : DNS, nginx, certificats, données du monde, clés.

Applications 9

Chaque outil qui se donne a son domaine, servi à la racine ; même service et même release pour tous ; les données sont sur le serveur, communes à toutes les adresses.

Antoine ditC'estAdresse
« le jeu », « Corals », « Corals 2 »le jeu (combat-sandbox.html)https://corals2.playcorals.online/?lang=en (&intro=1 rejoue l'arrivée)
« le world », « le World Lab », « le labo du monde », « le laboratoire du monde »Corals World, l'éditeur des îles (world-design-lab.html)https://world.playcorals.online/
« le lexique », « le glossaire », « le vocabulaire »le lexique du jeu (lexique.html)https://lexique.playcorals.online/
« signaler », « les signalements »ce qui ne va pas, signalé en jouant (signalements.html)https://signalements.playcorals.online/
« admin », « la page admin »les admins (seuls à changer le monde) et ce que les joueurs peuvent changer (admin.html)https://admin.playcorals.online/
« se connecter », « la page de connexion », « connect », « l'inscription »les comptes : inscription, connexion, mot de passe oublié (connect.html)https://connect.playcorals.online/
« les coûts », « les coûts IA », « combien ça coûte »ce que coûtent les modèles d'IA, par joueur, par jour et par fonction (couts.html, admins seulement)https://couts.playcorals.online/
« les règles », « la carte des règles », « la cartographie »la carte des règles et de l'organisation (Claude, Codex, branches, publication, chantiers), générée depuis ce dossier par tools/rules-map.mjs (page statique /var/www/corals-2-regles/, minuterie corals2-regles.timer)https://regles.playcorals.online/
« le Lab Stuff », « le stuff lab », « l'atelier des vêtements »l'atelier des vêtements et armures (stuff-lab.html, API à part : service corals-2-stuff)https://stuff.playcorals.online/

Règles permanentes d'Antoine 9

1. Vocabulaire (20/10).

Lire la règle

Avant de travailler, lire LEXIQUE.md : une expression d'Antoine mène à un seul terme ; en cas de doute, le lexique tranche. Un mot fixé ou précisé par Antoine s'ajoute dans src/standalone/lexicon/terms.ts (une expression = un terme, vérifié par tests/lexicon.test.ts), puis node tools/lexicon-md.ts refait LEXIQUE.md, puis on publie.

2. Pas de navigateur (14/10, règle absolue).

Lire la règle

Ni Playwright, ni Chromium, ni Puppeteer, ni capture : la scène tourne en WebGL logiciel et cinq navigateurs ont saturé le serveur (charge 41 sur 8 cœurs). Valider par tsc, tests, build, curl et journaux ; Antoine vérifie le rendu sur l'adresse publique : dire à la fin quoi regarder et où. Le panneau Navigateur ouvert dans Archonse ne suffit pas. Exception : demande explicite d'Antoine dans son message, alors un seul navigateur sur tout le serveur (flock -w 300 /var/tmp/corals-browser.lock timeout 120 node script.mjs, browser.close() dans un finally).

3. Publier directement (20/10 : « me demande plus jamais pour pousser les modifs »).

Lire la règle

Toute modification terminée et vérifiée part en production aussitôt par tools/publish.sh, sans demander ni mise en garde. Cette règle prime sur la règle générale « on ne publie que sur demande ». Une publication = une ligne dans docs/RELEASES.md, écrite par le script.

4. Une application par outil, données connectées (20/10 : « il faut toujours faire ça »).

Lire la règle

Chaque outil qui se donne a son domaine <nom>.playcorals.online servi à la racine : DNS Hostinger (A <nom> → 72.62.237.177, MCP hostinger-api, ne toucher que cet enregistrement), vhost sur le modèle de /etc/nginx/sites-available/world.playcorals.online (racine → sa page, ancienne adresse en 301, Service-Worker-Allowed: /, navigation vers la page d'un autre outil renvoyée sur le domaine de cet outil), certbot, origine ajoutée au drop-in 70-origins.conf, entrée dans APPS de src/standalone/app-root.ts, manifeste et icônes propres. Tout ce qui est partagé vit sur le serveur, commun à toutes les adresses ; les liens d'un outil à l'autre passent par appUrl (jamais la page d'un autre outil sur le domaine courant : stockage séparé) ; ce qu'un outil passe à un autre voyage par l'adresse ou le serveur (« Tester l'île » : LabOnline.settled, puis launch/sx/sz) ; une clé d'une autre application se lit par le pont en lecture seule public/app-bridge.html (bridgeGet, clés de ALLOWED). Garde-fous : tests/app-root.test.ts. Limite connue : la partie jouée sur le hub (autre site) n'est pas celle des applications.

5. Mise à jour en direct (20/10 ; « le système de refresh doit fonctionner, que toutes les conversations le sachent »).

Lire la règle

Une publication arrive seule chez les joueurs : live-update.ts lit publication.json toutes les 20 s, précharge, attend un moment calme, garde l'image de l'écran et repart sur la nouvelle version (partie, sac, Village et position conservés) ; ne jamais dire aux joueurs de recharger. Vraies retenues : combat, cinématique (body.dataset.c2Cinema), saisie de texte, héros à terre, bateau, expédition ; retenues douces (conversation, outil, panneau, fenêtre) : 6 min au plus ; pastille « ✨ Nouvelle version · Mettre à jour » au bout de 15 s. Toute nouvelle fenêtre qui ne doit pas être coupée pose data-c2-modal. Corals World pareil, jamais avant que tout soit en ligne. Après une publication, la suivre : journalctl -u corals-2-web | grep maj-direct. Conséquences : chaque release a un publication.json neuf (le script s'en charge) ; toute release recharge les joueurs, donc on ne publie pas pour rien. Garde-fous : tests/live-update.test.ts.

6. Signalements (20/10 : « on clique Signaler… pour systématiquement fixer les bugs »).

Lire la règle

Le bouton « Signaler » (F8) du jeu, des labos et de Corals World envoie l'écran, l'état de la partie et la phrase du joueur ; l'IA en fait un diagnostic, rangé dans Archonse (Phases › 🐞 Signalements du jeu, Knowledge). Dans une conversation : node tools/reports.mjs list (ce qui reste), show <n> (fiche, puis regarder l'image indiquée), et une fois corrigé et publié done <n> --commit <c> --note "…". Détail : docs/carte/socle.md.

7. Option ou permanent.

Lire la règle

Avant d'importer une fonctionnalité (DS2, DS3, Corals…), demander à Antoine si elle doit être une option (interrupteur dans Réglages, mémorisé, et en OFF plus aucun traitement) ou permanente.

8. Qui est qui (21/10 : « vraiment différencier ça… systématiquement dans les règles Claude et Codex, qu'on sache bien ça »).

Lire la règle

Sept sortes de personnages au même corps (un vrai personnage du jeu : classe, niveau, tenue) mais au fonctionnement différent : héros (vous), joueur en ligne (un autre humain), joueur automatique ou Player (IA des clans de DS2 : clans Tideborn, Ironwake, Emberfang, escouade, pillards ; ni mémoire ni conversation), habitant (le Village : il parle, se souvient, donne des quêtes), ennemi (personnage hostile : le combat seul), créature (bestiaire ; faune si elle n'est pas hostile), PNJ du vrai jeu (sa boutique d'origine). Toujours nommer la bonne sorte et savoir qui fait agir un personnage avant d'y toucher ; « escouade » = les Tideborn des Players, « groupe » = les habitants qui suivent le héros, « groupe de joueurs » = de vrais joueurs. Une seule source : src/standalone/beings.ts (section « Qui est qui » du lexique avec ses illustrations, étiquettes et anneaux des repères de Corals World, camps de Players posés dans le world) ; une nouvelle sorte, un nouveau repère ou une nouvelle étiquette s'y ajoute, jamais en copie. Garde-fous : tests/beings.test.ts. Détail : https://lexique.playcorals.online/#qui-est-qui

9. Signalements capture et optimisation (22/10 : « tu pourras venir fetch automatiquement depuis les signalements capture… et derrière tu feras systématiquement de l'optimisation »).

Lire la règle

Dans Signaler (F8), l'onglet « ⏱️ Capture (FPS) » envoie un moment de jeu mesuré, en données ou en vidéo (sonde perf/probe.ts, analyse perf/capture-core.ts, vidéo découpée en images par le serveur). Toute conversation qui touche aux performances commence par node tools/reports.mjs captures, puis show <n> (regarder la planche et les images d'à-coups indiquées). On optimise d'après les mesures, jamais à l'aveugle, la cause la plus rentable d'abord ; une optimisation qui change l'image se dit (option si Antoine le veut). Après publication : done <n> --note "<gain mesuré>" et demander une nouvelle capture au même endroit. Un nouveau système du moteur ou une nouvelle sorte d'objet dessiné entre dans la sonde (sections de hookEngine, noms de perf/categories.ts). Garde-fous : tests/perf-capture.test.ts. Détail : docs/carte/socle.md.

Méthode : travailler sans se marcher dessus 9

Plusieurs sessions Claude et Codex travaillent et publient en même temps. **Le code de…

Plusieurs sessions Claude et Codex travaillent et publient en même temps. Le code de production est la branche prod (= le commit en ligne, avancée par tools/publish.sh). Partir d'elle : git worktree add /var/tmp/corals2-<nom> -b <nom> prod, travailler et commiter dans cette copie, publier depuis elle.

Le dossier partagé

(/root/archonse/ProjectList/corals-2, branche main) ne porte que les règles, docs/ et les outils de publication ; il a souvent des fichiers modifiés par d'autres sessions : ne jamais y changer de branche, ni commiter autre chose que ses propres fichiers (git commit -- <fichiers>).

Copies

Copies : dans /var/tmp, jamais /tmp ; node_modules est un lien déjà présent dans l'arbre (pas de npm install) ; git avec -c safe.directory='*' ; retirer sa copie (git worktree remove) quand le travail est publié.

Les règles s'écrivent dans le dossier partagé seulement

(CLAUDE.md, AGENTS.md, docs/ sur main, commit -- <fichiers>), jamais dans une copie : dans prod et les copies, CLAUDE.md et AGENTS.md ne sont qu'un renvoi ici, et tools/publish.sh refuse une branche qui les modifie. Le lexique est du code (src/standalone/lexicon/terms.ts, dans la copie) ; LEXIQUE.md du dossier partagé est remis à jour par le script.

Réserver son chantier

avant de commencer, regarder docs/CHANTIERS.md et y inscrire son sujet (conversation, branche) ; si un autre l'a déjà, travailler avec lui (fusionner sa branche) au lieu de refaire. Retirer la ligne une fois publié. Les restes à faire y vont aussi.

Une preuve avant de dire « ça marche »

Annoncer une fonction faite seulement après l'avoir vue s'exécuter (test qui la joue, journal du serveur, relevé envoyé par la page, instance d'essai, route appelée) ; dire clairement ce qui n'a pas été vu (le rendu, que seul Antoine voit). Diagnostiquer sans navigateur : relevé d'état de la page, __client-error du journal nginx, glslangValidator pour les shaders, vraies connexions pour le temps réel.

Publier par tâche terminée

une publication à la fin de ce qu'Antoine a demandé (un signalement, une fonction, un audit), jamais au milieu ; un bug qui bloque les joueurs part aussitôt. Toujours sans demander (règle 3).

Toujours répondre en français

, même quand le code ou un outil parle anglais.

Tests lourds

Tests lourds : archonse-compute run --dir <copie> -- npm test peut les envoyer sur le PC d'Antoine (voir /root/.archonse/compute/agent-instructions.md).

Règles du jeu et de développement 29

📖 Histoire, scènes et personnages (7)

Scènes, quêtes et personnages scénarisés (règles systématiques, 20/10/2026, Antoine)

11 points

— toute arrivée, cinématique, chapitre d'histoire, événement ou quête qui met en scène des habitants :

  1. Le personnage appartient à la scène. Dès qu'il entre en scène : corals2Village.hold(clé, 'nom-de-la-scène') (ou ctx.hold dans builder/story.ts). Tant qu'il est tenu (owned / mode scene de village.ts), release() le ramène à la scène : ni la fin d'une question (askChoice), ni la fermeture d'une conversation, ni la fin d'une étape, ni une réplique du modèle (leave, lead, follow), ni une approche du serveur ne le rendent à sa journée ; il reste à deux pas du héros, tourné vers lui. Il est rendu seulement quand la trame le libère (unhold : la quête qui le mène commence, ou la scène se termine). Jamais de stay à durée courte ni de setTimeout qui le relâche.
  2. Pas de scène sans ses acteurs. Avant de montrer une scène, attendre sous le rideau que chaque personnage qui y joue existe et soit chargé (member(clé) + entité non preparing de actors.diagnostics) ; sur une île du monde, le Village démarre après la scène (monde envoyé au serveur, puis personnages chargés). Jamais un plan vide, jamais un personnage qui apparaît au milieu.
  3. Le joueur a une voix. Dans une conversation écrite, chaque réplique du héros est un choix (boutons + touches 1 à 3, heroSays de barrel-arrival.ts, options des répliques hero de story.arrival.talk), jamais une phrase jouée à sa place.
  4. Les enchaînements suivent la trame. Ce qui doit s'enchaîner sans pause (nom donné → « Viens, suis-moi » → on le suit) est un chapitre auto (sans carte de quête : le donneur dit sa demande, part, la quête le mène) ; {hero} dans une réplique = le nom du héros.
  5. Les trames vivent dans l'île (Island.story, World Lab), pas dans le code : une retouche de l'histoire se fait à partir de la version publiée et ne change que les champs concernés (tools/start-island/patch-story.ts puis publish.mjs), car l'auteur retouche l'île en direct dans le World Lab.
  6. Chaque règle a son garde-fou dans tests/arrival.test.ts (« règle des scènes ») : le garder vert, et en ajouter un pour toute nouvelle scène.
  7. En cinématique, seulement ce que la scène propose (20/10, Antoine). Toute cinématique pose body.dataset.c2Cinema='<nom>' au début et le retire à la fin (l'arrivée pose aussi data-c2-arrival). Pendant ce temps (cinema() de village.ts) : aucune invite « Parler / Répondre », ni cercle des interactions (clic droit, E), ni nom, jauge, message, cadre du groupe ; les habitants qui ne jouent pas (non tenus) n'ont rien à l'écran ; dans une conversation de la scène, seules ses réponses en boutons (champ libre, réponses prêtes, « Interactions », jauges masqués). Les répliques et choix viennent de la scène, jamais du Village.
  8. La caméra montre ce qui se dit. Un plan de dialogue cadre les personnages qui parlent et leurs bulles avec de l'air autour : meetShot (jamais à moins de 11 m) puis fitShot (zone de confort de 7 % sur chaque bord, place des bulles bubble / bubbleW, bandes, répliques à choisir et conversation déduites de l'écran). Jamais de gros plan sur un personnage qui parle.
  9. Lisibilité des bulles (partout) : nom et jauges d'un habitant retirés au-delà de 22 m, sa bulle au-delà de 32 m (sauf cri), le plus proche passe devant les autres (z-index selon la distance), le héros devant tous.
  10. Un choix du joueur se confirme à l'écran : ce qu'il a choisi est montré clairement juste après (ex. « Vous êtes Phyllis · Herboriste » à la sortie du tonneau).
  11. Un trajet scénarisé ne coupe jamais sa logique. Pendant « Suis-moi », le guide compare sa progression vers la destination à celle du héros : si le héros le dépasse dans la bonne direction, il accélère (course puis sprint) et ne s'arrête pas pour lui faire face ; il attend ou revient seulement si le héros est réellement derrière. À l'arrivée, le guide reste tenu, s'arrête face au héros et joue l'échange écrit du lieu (réplique, choix du héros, réponse, consigne suivante) avant que le suivi passe au prochain objectif. Moteur commun : followGuide et Step.arrival.

Architecture narrative canonique des îles et des arcs (20/10/2026, Antoine)

Lire la règle

histoire globale du monde → arcs narratifs → îles et leur lore → mini-trame insulaire obligatoire → quêtes annexes. Un arc narratif, au sens des arcs de manga, réunit une ou plusieurs îles autour d'un enjeu majeur, de personnages ou factions récurrents et d'une progression commune (mise en place, montée des enjeux, point culminant, conséquences ou résolution). Chaque île possède systématiquement une quête principale obligatoire, qui forme sa mini-trame locale (éventuellement découpée en chapitres) avec une situation, un enjeu, une progression et une résolution propres. Cette mini-trame doit faire avancer, révéler ou faire résonner l'arc auquel l'île appartient, sans devoir résoudre l'arc à elle seule. Les quêtes annexes se rangent sous cette mini-trame et approfondissent ses habitants, lieux, factions, secrets ou conséquences. Aucune quête générique ou déconnectée : toute quête obligatoire ou annexe naît du lore de son île ; le lore de l'île sert son arc narratif, et chaque arc constitue une partie cohérente de l'histoire globale du monde. Les futurs outils, générateurs et ateliers d'histoire doivent conserver et rendre visible cette filiation ainsi que l'arc courant.

Conversations de quête et conversations libres (règle du 20/10/2026, Antoine)

6 points

une conversation est de quête quand le personnage est lié à ce qui fait avancer le jeu — il porte une décision en attente de l'histoire, l'étape en cours est de lui parler (message, rapport), il confie le chapitre suivant, l'étape est de faire équipe et il peut venir, ou il a donné la quête en cours ; sinon elle est libre. La quête prime toujours :

  1. Une seule règle pour tout le jeu, bonds/quest-talk.ts (questTalk, ordre decision > deliver > chapter > party > giver), lue telle quelle par le serveur (questLinkOf). Toute nouvelle quête, étape ou scène qui fait parler quelqu'un passe par elle, jamais par un texte en dur.
  2. On le voit dans la conversation : bandeau doré (quête, étape), réponses prêtes de la quête d'abord, dorées et marquées ❗, puis au moins une réponse libre ; une décision ou une proposition de quête porte son étiquette (« ❗ Décision », « ❗ Quête »).
  3. On le voit avant de parler : ❗ au-dessus de la tête de celui qu'il faut aller voir, invite « ❗ Quête · Parler », centre du cercle « ❗ Parler » ; à portée égale, l'invite et les appels vont au personnage de quête ; une approche libre attend la fin d'une conversation ou d'un appel de quête.
  4. Le personnage répond d'abord sur la quête (le serveur l'écrit avant les mots du héros) et propose des suites sur la quête (quest_suggestions) ; il ne change jamais la quête et ne dit pas qu'elle est faite : c'est le jeu qui la vérifie.
  5. Une conversation de quête fait avancer la quête : la décision s'ouvre dès qu'on lui parle, « Je t'écoute » lance le chapitre, le message est remis quand le héros le dit ; quand cette remise termine la quête, la réplique de fin écrite répond, sans réplique du modèle avant elle.
  6. Garde-fous : tests/quest-talk.test.ts (règle, rendu, serveur, route talk) ; en ajouter un pour tout nouveau lien de quête.

Deux systèmes d'interaction : « système d'interaction par quête » et « système basique » (règle du 20/10/2026, Antoine)

4 points

Ce vocabulaire est à employer tel quel.

  1. Système d'interaction par quête : dès qu'un personnage est lié à une quête ou à une mission (quête principale, chapitre de l'histoire, quête obligatoire de l'île ou quête annexe qu'il porte : la règle questTalk / questOf, rôles decision, deliver, chapter, party, giver), le clic droit, la touche E, l'invite et l'appel depuis le bateau n'ouvrent pas le cercle des interactions : le héros va jusqu'à lui et la conversation s'ouvre directement, réduite à la quête, sur le modèle de l'arrivée avec l'hôte (Maëlle sur Port-Brise) : les échanges, le bandeau doré, les réponses de la quête et ses décisions en boutons ; ni champ libre, ni jauges, ni avis. Un bouton discret « Autre chose » mène au système basique.
  2. Système basique : tout personnage sans interaction importante liée à une quête garde le cercle des interactions (gestes, cadeaux, romance, équipage, histoire, méchant) et la conversation complète.
  3. Toute quête, mission ou chapitre conçu dans le World Lab ou ailleurs passe automatiquement par le système d'interaction par quête : il suffit que le personnage soit relié à la quête par la règle commune. Jamais d'interface de quête à part.
  4. Code : openPieFor(v, at, full) de village.ts (sans full, un personnage de quête ouvre openTalk), data-quest-mode de la conversation (renderTalk, styles dans bonds/dialog.ts) ; garde-fou dans tests/quest-talk.test.ts.

La scène se lit sur les personnages (15 et 20/10 : « ça brise un peu le mur… bulles sur les perso plutôt »)

Lire la règle

Répliques, questions et choix en bulles au-dessus de ceux qui parlent ; une fenêtre seulement pour une vraie saisie (nom). Pas de narrateur ni de texte d'histoire plaqué à l'écran ; les bandeaux de suivi (« Chapitre accompli », pastille de l'acte) sont de l'interface, à garder discrets.

Une réplique appartient à son locuteur

Lire la règle

Chaque réplique est rangée et rechargée sous la clé de celui qui la dit, jamais sous celle du donneur de quête ; closer dit la réplique finale, et si cet acteur manque, la ligne attend. {hero} est résolu côté serveur. Une correction de provenance migre aussi les journaux déjà enregistrés.

Un objet remis par une histoire est un vrai objet

Lire la règle

L'icône va du donneur vers le Sac, une fiche montre le vrai objet (nom, niveau, classe), il entre dans l'inventaire et s'équipe si la trame le prévoit ; don idempotent, sac plein refusé proprement, testé avec les vraies règles du sac. Un choix d'arme ne propose que les armes du corps et décide de la classe.

🏗️ Architecture du jeu (7)

Données sur le serveur, jamais dans le navigateur (20/10 : « partagée en base de données et jamais dans le navigateur… systématiquement en ligne » ; 21/10 : « bien penser à la partie serveur MMO »)

Lire la règle

Tout ce qui compte pour la partie ou le monde (île, constructions, Village, histoire, progression, or, objets, propriétés) vit sur le serveur ; le navigateur ne garde qu'une boîte d'envoi, un cache ou des réglages d'affichage. Une économie (or, échanges, maisons, boutiques) se conçoit d'abord pour plusieurs joueurs en même temps. L'or, les cristaux et les doublons vivent dans la bourse du serveur depuis le 21/10 (server/wallet.mjs, docs/carte/socle.md) : tout gain ou dépense passe par elle, avec une raison que le serveur sait refaire. Le personnage aussi (sac et équipement, niveau, compétences, corps…), lié au compte depuis le 21/10 (server/character.mjs, PARTS de character-sync/core.ts) : une nouvelle sauvegarde du héros s'y ajoute, jamais en stockage local seul. Reste à faire : les règles des objets côté serveur, voir docs/CHANTIERS.md.

Tout ce qui s'édite circule dans les deux sens, en direct (20/10 : « tout synchronisé en temps réel… des deux côtés »)

Lire la règle

Une retouche faite dans le jeu (Builder, outils admin) revient dans l'île de Corals World en ligne et dans sa version publiée, et inversement, sans rechargement. Ce qui dépend d'un objet le suit quand il bouge (« si je déplace, il faut que ça déplace la quête ») : quêtes, scènes, lieux, repaires. Chemin commun : live-builder.ts, island-api/lab/patch, world-live.ts.

Un seul moteur (19/10 : « vraiment le même moteur que le jeu »)

Lire la règle

« Tester l'île » et les labos lancent le jeu lui-même (game-entry.ts, mémoire isolée par playtest-session.ts) ; jamais un moteur de test construit à part. Familles de créatures et boss communes (mobs/families.ts).

Labos (19/10)

Lire la règle

Une fonctionnalité de gameplay se travaille dans le labo de son domaine mais s'écrit dans le module du jeu qui la gardera, déclarée dans FEATURES et branchée par feature(id) ; le jeu ne l'allume qu'une fois promue. Les outils de travail (téléporter, invincible…) restent au labo. Données qui changent de forme : une migration dans labs/migrations.ts. Procédure : knowledge/labos/README.md.

Une mécanique de combat née au Labo de combat va dans le jeu par le registre

Lire la règle

(labs/registry.ts, étape jeu), jamais en copie (19/10, « tout doit être unifié »).

Un seul endroit par fonction

Lire la règle

une fonction du jeu utilisée par un outil (World Lab, labos) est la même, importée, jamais une seconde version (fiche des personnages, conversation, cercle des interactions, Atelier des îles…).

Le jeu est reconnu par isGamePage() d'app-root.ts

Lire la règle

Le jeu est reconnu par isGamePage() d'app-root.ts (combat-sandbox.html sur le hub, « / » sur corals2.playcorals.online) : preview.ts en déduit le HUD minimal et la barre Desktop/Mobile/HUD. Ne pas renommer la page.

⚔️ Combat et niveaux (3)

Combat (20 et 21/10 : « donne leur leur intelligence de combat comme dans DS2 », « en zone de fight… mode attaque »)

Lire la règle

Un seul cerveau de combat pour tous les combattants (héros assisté, compagnons, habitants en rixe, Players, pillards, boss : combat/crew-brain.ts, IA DS2, boss-brain.ts), jamais une IA à part. En phase de combat : armes sorties puis rengainées après, frappe et compétence dès que la cible est à portée, même en courant ; aucune interaction (cercle, conversation, appel) tant que dure le combat. Les mécaniques viennent de Tales of Pirates (fiches et formules d'origine), pas d'une invention.

Chaque boss est original (19/10)

Lire la règle

Son kit est tiré de sa graine parmi les vraies compétences de monstres (buildBossKit) : au moins une grosse zone annoncée, un contrôle, une attaque à distance, un rapprochement, des phases. Un nouveau boss passe par ce cerveau (mob.boss) et un nouveau rôle se teste dans tests/boss-brain.test.ts.

Niveaux d'une ville et équipement (21/10)

Lire la règle

Chaque ville de Corals World porte un averageLevel : habitants, ennemis humains et Players naissent dans une petite tranche autour. Aucun personnage humain n'apparaît, ne garde ni ne donne une pièce au-dessus de son niveau (tenue calculée avant le premier affichage, atelier filtré, fouille contrôlée). Les créatures gardent leur fiche d'origine ; on choisit une espèce proche du niveau, on ne falsifie jamais sa fiche. Une exception se règle dans la trame.

📱 Écrans et rendu (3)

Réglages du joueur et du laboratoire (22/10, Antoine)

Lire la règle

Dans le jeu, Réglages contient les accès du compte et le confort du joueur : Compte, Interface, Sons, Image, En ligne et Application. La liste positive de settings/audience.ts fait foi ; une nouvelle option de moteur n'entre pas automatiquement dans le jeu. Les paramètres qui changent le monde, la progression, les personnages, le combat ou les données restent dans les laboratoires et les outils d'auteur, avec leurs droits existants. Les contrôles communs restent ceux de settings/ui.ts, avec remise à zéro par section. Ne pas réintroduire le choix technique du corps du héros ni les réglages artistiques du moteur dans les préférences du joueur.

Le mobile se joue comme l'ordinateur (20/10)

Lire la règle

Toute interaction existe au doigt ; une interface nouvelle est vérifiée en quatre formats, 320 × 480, 360 × 320, 480 × 320 et 667 × 375 (tests de responsive.ts), sans rien de coupé ni de masqué.

Le sol (21/10 : « je veux pas que tu fasses ça »)

Lire la règle

Une texture peinte par matière, dans le style de l'herbe du jeu, liée aux biomes ; jamais l'herbe recolorée. Rien n'est posé par défaut qu'Antoine n'a pas choisi (« enlève les pierres que tu mets par défaut »).

✅ Ce que tout ajout doit respecter (2)

Ce que tout ajout doit respecter

Lire la règle

une route qui écrit dans le monde passe par les droits d'admin (src/standalone/admin/rights.ts, tests/admin.test.ts) ; un texte affiché passe par la traduction (translate="no" pour ce qui ne se traduit pas, puis tools/i18n/extract.mjs et warm.mjs) ; un appel à un modèle est compté (featureOf, règle Coûts IA) ; un nouveau type de donnée du monde entre dans la sauvegarde GitHub (SOURCES de tools/github-backup-data.mjs, dossier partagé) ; un nouveau mot d'Antoine entre dans le lexique.

Coûts IA (20/10, « traquer tous les coûts IA du jeu »)

Lire la règle

Un modèle (OpenAI, JEV) s'appelle depuis le serveur, jamais depuis le navigateur : le fetch du serveur est compté (server/ai-costs.mjs), chaque appel est chiffré et rattaché au joueur (save de l'adresse ou tag du corps), au jour et à la fonction. Une nouvelle fonction qui appelle l'IA ajoute sa clé dans src/standalone/costs/features.ts (featureOf), ou within({feature}) si elle tourne en arrière-plan ; un nouveau modèle ajoute son tarif dans PRICES. Garde-fous : tests/ai-costs.test.ts.

• Divers (7)

HUD maritime commun (22/10, Antoine)

Lire la règle

Les nouvelles interfaces de jeu reprennent les cadres et ornements SVG de src/standalone/hud-art/ et les valeurs communes de hud-atlas.css. Leur décoration ne recouvre jamais les zones de clic. Vérifier l'accès aux commandes en portrait et paysage, y compris sur un écran court : cibles tactiles d'au moins 44 px, contenu défilable, fermeture accessible, marges des encoches et retour du focus. responsive.ts garde la responsabilité du placement ; ne pas créer une nouvelle rangée de boutons ou un panneau fixe sans l'y intégrer. Le rendu en jeu reste à distinguer explicitement des planches de conception et des tests de géométrie.

Skins des Players (22/10, reprise d’Antoine)

Lire la règle

Même à bas niveau, les Players et les adversaires de quête portent des skins assortis adaptés à leur classe et à leur faction, dès le premier affichage : looks/player-skins.ts réutilise l’assembleur commun. Les pillards du phare prennent leurs apparences dans une sélection de corsaires. Les skins restent des pièces décoratives sans niveau requis ; la vraie tenue, les armes et les statistiques suivent toujours le niveau. Un habitant garde son habillage propre et un choix explicite d’apparence reste prioritaire. Garde-fous : tests/player-skins.test.ts.

Bâtiments PNJ (22/10, Antoine)

Lire la règle

Une catégorie de bâtiments qui réunissent un lieu, un ou plusieurs personnages liés et une interaction spécifique. Registre commun builder/npc-building-types.ts, population persistante world-lab/npc-buildings.ts : poser crée les personnages, déplacer/refaire conserve leurs identifiants et leurs fiches, copier crée de nouvelles identités ; le serveur applique la même règle aux poses du Builder du jeu. Chaque nouveau type (atelier naval et restaurant aujourd’hui ; casino, magasins spécialisés, église ensuite) ajoute sa règle et son interaction au registre commun. Ce n’est pas une nouvelle sorte de personnages : le maître charpentier est un habitant, les PNJ du vrai jeu conservent leur nature. Voir docs/batiments-pnj.md et le lexique « Bâtiments PNJ ».

Modularité et dimensions des bâtiments PNJ (22/10, reprise d’Antoine)

Lire la règle

Les bâtiments PNJ sont des recettes réutilisables, configurables dans le World avant pose et après sélection : surface, proportions largeur/profondeur (plan allongé à surface conservée), forme et angles plus ou moins arrondis ; l’emprise en mètres comprend toit et perron. Chaque métier définit ses pièces, son mobilier, ses postes et ses personnages dans les modules communs, sans seconde version dans l’éditeur. Exemple : restaurant, grande salle, cuisine équipée, environ trente couverts et musiciens ; magasins spécialisés par armes et autres ateliers suivent ce contrat. La capacité réelle vient des places meublées accessibles, jamais d’un nombre affiché sans preuve. Changer les dimensions ou la forme conserve les identités et fiches ; copier crée de nouvelles identités. Les possibilités futures (joueur propriétaire, vente de repas, commerce spécialisé) se documentent séparément des fonctions réellement exécutées.

Métiers, travail et temps libre des habitants (22/10, Antoine)

Lire la règle

Dans le World Lab, chaque habitant peut avoir un métier, un lieu de travail et des créneaux travaillés parmi les six moments de la journée. Pendant son service, il rejoint le poste correspondant ; hors service, il suit les lieux et activités de sa journée. Le métier est distinct de la classe de combat (job) et du poste d’équipage. Un travail dans un bâtiment ne signifie pas y rester en permanence : « Où il vit » est un choix séparé, conservé pour Gustave et les personnages explicitement confinés. Scènes, quêtes, combats et conversations gardent la priorité. Registre partagé builder/professions.ts, édition world-lab/profession-editor.ts, exécution dans le Village et Inhabitants, sans second moteur dans le World. Conserver en base les horaires et les vrais lieux choisis, y compris pour les moments libres. Guide : docs/metiers-habitants.md.

Métiers des joueurs et lieux de travail (23/10, Antoine)

Lire la règle

Cuisinier, charpentier, serveur et musicien doivent mener à des lieux et à des postes que les joueurs pourront utiliser dans le jeu : cuisine et service d’un restaurant, chantier naval, scène de musique. Les habitants font vivre ces mêmes bâtiments avec leurs métiers et horaires. Réutiliser les modules communs, les vrais postes accessibles et le sac du héros ; documenter les boucles proposées séparément des services déjà exécutés. Le Grand Pavois sur l’île d’arrivée est le premier exemple de restaurant ; propositions et limites dans docs/restaurant-grand-pavois.md.

Retour en arrière

Lire la règle

Retour en arrière : un commit par étape, tools/publish.sh --rollback pour la production.

Carte du code

Le détail de chaque domaine est dans docs/carte/ : à lire avant d'y toucher.

DomainePoints d'entréeDétail
Socle : page, moteur, écrans, HUD, Réglages, application, sauvegarde, serveurcombat-sandbox.html → src/standalone/main.ts → src/director/preview.ts ; app-root.ts, responsive.ts, settings/, live-update.ts, server/server.mjsdocs/carte/socle.md
Construire : Builder, bâtiment génératif, terrain, routes, ports, lieuxsrc/standalone/builder/ (world.ts, panel.ts, generative.ts, archi/, terrain.ts, roads.ts, harbor.ts, places.ts)docs/carte/construire.md
Biomes : outil, studio, herbe, sol peint, Sketchfabbuilder/biomes/, studio/, server/biomes.mjsdocs/carte/biomes.md
Combat : monstres, joueurs, Labo de combat, au doigtmobs/, combat/, builder/players.ts, lab/, labs/registry.tsdocs/carte/combat.md
Personnages : Village, liens, équipage, fiche, quêtes, histoire, lorebuilder/village.ts, builder/bonds/, builder/crew.ts, builder/quests.ts, builder/story.ts ; server/village.mjs, bonds.mjs, story.mjs, crew.mjsdocs/carte/personnages.md
Monde : World Lab, îles partagées, carte du monde, île de départ, arrivéesrc/standalone/world-lab/, islands/ ; server/islands.mjs, island-world.mjsdocs/carte/monde.md
Bateauxbuilder/boats/docs/carte/bateaux.md
Lab Stuff : vêtements, panoplies, patrons 3D, essayages (API à part, publiée à la main)stuff-lab.html → src/standalone/stuff/ ; server/stuff.mjs, stuff-service.mjs, tools/stuff-textures.pydocs/carte/stuff.md

Bateaux

docs/carte/bateaux.md · 3 entrées · 13 Ko

Voir les entrées
  1. Bateaux (option)
  2. Atelier naval · la table des plans (22/10, option)
  3. Premier bateau de Port-Brise (23/10/2026)

Biomes : outil, studio, herbe, sol peint

docs/carte/biomes.md · 5 entrées · 15 Ko

Voir les entrées
  1. Biomes (outil)
  2. Studio des biomes (page)
  3. Studio des biomes dans Corals World (21/10)
  4. Biomes · placement, sol, herbe, assistant (18/10)
  5. Bibliothèque Sketchfab (18/10)

Combat : monstres, joueurs, Labo de combat, au doigt

docs/carte/combat.md · 22 entrées · 62 Ko

Voir les entrées
  1. Habitants de l'équipage contre les Players (22/10)
  2. Défis entre joueurs en ligne (22/10)
  3. Mobs
  4. Retour visuel des coups
  5. Monstres d'origine (option)
  6. Players (option)
  7. Mobile · combat au doigt, phase de combat (20/10)
  8. Labo de combat (page)
  9. Mécaniques du Labo de combat passées dans le jeu
  10. Adversaires de quête · IA commune (21/10)
  11. Mêlée pendant les poursuites (21/10)
  12. Compétences en mouvement (21/10)
  13. Rivaux · relance, états natifs, XP et fouille (21/10)
  14. Players recrutés · cerveau commun (21/10)
  15. Visée des compétences au doigt (21/10)
  16. Combat de Corals online (options)
  17. Boss intelligents (19/10)
  18. Personnage (fenêtre)
  19. Compétences au doigt et PM (19/10)
  20. Tenue selon le niveau (19/10)
  21. Garde-robe complète (19/10)
  22. Notes de conception reprises de la branche prod (21/10/2026)

Construire : Builder, bâtiment génératif, terrain, routes, ports, lieux

docs/carte/construire.md · 12 entrées · 26 Ko

Voir les entrées
  1. Builder
  2. Bâtiment génératif
  3. Atelier naval · programme du bâtiment génératif (22/10)
  4. Bâtiments PNJ (22/10)
  5. Restaurant et dimensions des bâtiments PNJ (22/10, reprise)
  6. Terrain
  7. Routes & ports
  8. Port d'Argent (procédural)
  9. Sol Pelouse V8 (option)
  10. Lieux (outil)
  11. Lumières et effets des modèles (18/10)
  12. Importés dans le Builder (branche islands-props)

Effets de sol et Tornado — 21/10/2026

docs/carte/effets-sol.md · 0 entrées · 2,4 Ko

Voir les entrées

    Monde : World Lab, îles partagées, carte du monde, île de départ, arrivée

    docs/carte/monde.md · 18 entrées · 70 Ko

    Voir les entrées
    1. Drapeau d’arrivée déplaçable (23/10, Codex)
    2. PNJ du vrai jeu : poste, bâtiment et boutique (22/10, Codex)
    3. Composition de Port-Brise (20/10, Codex)
    4. Relief et matières de Port-Brise (21/10, Codex)
    5. Atelier naval de Port-Brise (22/10)
    6. Restaurant de Port-Brise · Le Grand Pavois (23/10)
    7. Sol des îles · une texture par matière (21/10)
    8. Sol des îles · haute définition et lien aux biomes (21/10)
    9. Carte du monde · îles voisines (20/10)
    10. Repères Players et étiquettes de type (21/10)
    11. Atelier du personnage (World Lab)
    12. World Lab · côtes, relief, construction (20/10)
    13. Monde partagé · île de départ (20/10)
    14. Story V2 · prologue de l'île de départ (20/10)
    15. Arrivée dans le tonneau (20/10)
    16. Îles partagées (Atelier des îles)
    17. Notes de conception reprises de la branche prod (21/10/2026)
    18. Studio visuel des voix (22/10/2026, Codex)

    Personnages : Village, liens, équipage, fiche, quêtes, histoire, lore

    docs/carte/personnages.md · 14 entrées · 48 Ko

    Voir les entrées
    1. Qui est qui · les sortes de personnages (21/10)
    2. Village · Histoire (option)
    3. Clans et rixes du Village
    4. Équipage (page)
    5. Équipage · Mugiwara (cartes, postes)
    6. Liens entre les personnages (20/10)
    7. Cris de combat de l'équipage (20/10)
    8. Fiche des personnages (20/10)
    9. Conversations de quête (20/10)
    10. Lore (outil)
    11. Habitant qui vit dans un bâtiment (22/10)
    12. Fiabilité de l’équipage (15/10/2026)
    13. Notes de conception reprises de la branche prod (21/10/2026)
    14. Sons des habitants · configuration dans Corals World (22/10)

    Socle : page, moteur, écrans, HUD, Réglages, application, serveur

    docs/carte/socle.md · 41 entrées · 82 Ko

    Voir les entrées
    1. Page
    2. Code Corals
    3. Cale sous-chemin
    4. Releases figées
    5. Ressources
    6. Réglages
    7. Compte dans les Réglages (22/10)
    8. Écrans (responsive)
    9. Priorité de lecture des interactions (22/10)
    10. HUD · Atlas des marées (22/10)
    11. Outils du HUD
    12. Application (installer)
    13. Remise à zéro
    14. Sauvegarde
    15. Gomme d'origine
    16. Île agrandie
    17. Côte DS3
    18. Mer stylisée et ciel d'été
    19. Mise à l'échelle (option)
    20. Ciel et shaders DS2
    21. Banc de mesure (recherche)
    22. Serveur
    23. Service
    24. Accroches et écarts avec Corals
    25. Applications et domaines
    26. Signalements (20/10)
    27. Signalements capture (22/10)
    28. Admins (21/10)
    29. Coûts IA (20/10)
    30. Langue du jeu (21/10)
    31. Bêta (21/10)
    32. Tout traduire, chargé intelligemment (21/10)
    33. Comptes et connexion (21/10)
    34. Le compte du joueur dans le jeu (21/10)
    35. Bourse : or, cristaux et doublons sur le serveur (21/10)
    36. Personnage lié au compte (21/10)
    37. Sons DS2
    38. Grandes îles (secteur de 512 m)
    39. Labos (mécanisme, 19/10)
    40. Notes de conception reprises de la branche prod (21/10/2026)
    41. Fenêtre bêta et langue du compte (22/10)

    Lab Stuff

    docs/carte/stuff.md · 5 entrées · 6,4 Ko

    Voir les entrées
    1. Application
    2. Habillage : changer une pièce portée (21/10/2026)
    3. Code
    4. API : un service à part
    5. Tests

    Les boucles qui font avancer le jeu

    🐞 Signalements

    Antoine ou un joueur clique « Signaler » (F8)➜écran + état de la partie + sa phrase➜diagnostic par l'IA, rangé dans Archonse➜node tools/reports.mjs list / show➜correction dans une copie➜publication➜done <n> --commit

    ✨ Mise à jour en direct

    tools/publish.sh➜publication.json neuf➜le jeu le voit en 20 s➜moment calme (pas de combat, cinématique, saisie…)➜image gardée, nouvelle version, partie conservée➜journalctl … | grep maj-direct

    🗺️ Jeu ↔ Corals World

    retouche dans le world ou au Builder du jeu➜île en ligne sur le serveur➜version publiée➜chez tous les joueurs, sans recharger➜quêtes et scènes suivent ce qui a bougé

    📚 Vocabulaire

    Antoine fixe un mot➜lexicon/terms.ts (un mot = un terme, testé)➜node tools/lexicon-md.ts➜publication➜LEXIQUE.md partagé remis à jour➜lu par toutes les sessions

    🧭 Chantiers

    lire docs/CHANTIERS.md➜sujet libre ? l'inscrire➜pris ? fusionner sa branche➜publier➜retirer la ligne ; noter les restes à faire

    Chantiers

    En cours (5)

    SujetConversationBrancheDepuis
    Suite de Port-Brise bloquée après le tonneau : rendre l’atelier naval résolvable et déclencher PipCodex a5957be1first-boat-place-fix23/10/2026
    Signalements 47 à 50 : validation du panneau de suite, murs et sols des maisons, menu d’interaction sous les RéglagesCodex 1bc49ffe (reprise)signalements-45-4623/10/2026
    Skins du restaurant : tenue du chef et des commis, pièces natives qui traversent les vêtementsCodex, reprise atelier naval, captures du 23/10galley-skins-fix23/10
    Arrivée des joueurs dans le World : drapeau discret, point d’arrivée déplaçable et même position pour le tonneau en jeuCodex a5957be1arrival-pin23/10/2026
    Signalement 51 : empêcher le héros de marcher hors du terrain à Port-BriseCodex, conversation « corrige derniers bugs »signalement-5123/10/2026

    À faire (19)

    QuoiSourceNote
    Localiser l'artefact intermittent autour de l'arbre (signalement 32)Codex 1bc49ffe, reprise des signalements, 23/10La capture fixe ne permet pas de distinguer liseré, ombre ou feuillage ; l'écran annoncé en message privé manque à l'historique. Question en attente. [Preuves et limite](signalements-30-42.md).
    Capture 45 : isoler les 11,69 ms de caméra et les compilations tardives, puis mesurer la même scène sur le même téléphoneCodex 1bc49ffe, 23/10Village hors combat à 11 i/s ; passe monde 12,53 ms, personnages 9,88 ms. GPU non mesuré et pesée bruitée : pas de baisse de qualité déduite. [Analyse et suite](signalements-44-46.md). Signalement conservé ouvert.
    Métiers exercés par les joueurs : boucle cuisine puis service, charpente et musique dans les lieux du mondeAntoine, vocal du 23/10, Codex 1a014972[Propositions et limites](restaurant-grand-pavois.md). Le Grand Pavois et sa brigade sont posés (île v169) ; ingrédients → plat → vraie table → récompense est la première boucle proposée. Les services payants, l’économie et la propriété restent à concevoir.
    Mesurer le gain des optimisations mobiles de la capture 40, sur le même téléphone pendant le même combat SquiddyCodex 5f771801, publication 205a9715, 22/10[Mesures, corrections et preuves](performance-capture-40.md) : HUD et boutons sans mutations répétées, lectures du canevas et des bulles réduites, trois modèles rétablis et relances espacées. 1 548 tests réussis ; gain FPS réel non mesuré. Les nouvelles sections de la sonde distinguent combat, caméra, son et interface. Restent terrain/horizon, mer et shaders tardifs à mesurer sans réduire l'image à l'aveugle.
    Restauration de personnage : départager les aventures rattachées dans la même millisecondePublication atelier naval, 22/10tests/character.test.ts:97 a échoué une fois (ancienne aventure rendue), puis 5/5 en isolé ; characterOf de server/accounts.mjs trie uniquement par created DESC.
    Mise à l’eau et navigation des bateaux dessinés dans l’atelier navalReprise de Claude c6dbe6dc, 22/10Les esquisses et modèles 3D sont gardés sur le serveur et visibles dans « Mes bateaux ». Le moteur commun navigue désormais sur les îles de Corals World pour les deux petits modèles de la quête du premier bateau. Reste à raccorder la mise à l’eau des bateaux dessinés librement.
    Suite fonctionnelle du HUD : Journal classé (principale, annexes, partagées), regroupement des étiquettes et placement général des bulles ; validation visuelle sur appareilCodex, reprise de Claude e2f28a62, conversation a5957be1, 22/10Atlas sculpté publié en 1b7243d8 : dix SVG communs, fenêtres et combat assortis, accès mobile défilable/repliable, options joueur épurées. Ces fonctionnalités narratives supplémentaires restent distinctes du nouvel habillage. [État et critères](conception-hud.md), [compositions](https://corals2.playcorals.online/corals-2/design/hud/sculpte.html). Rendu réel non vu : pas de navigateur ouvert.
    Mesurer les gains après optimisation de la capture 31, au même endroit après combat. Première correction publiée : repère de quête, pion caché, préparation des textures et shaders du décor. Restent à mesurer : buffers de géométrie et variantes des ombres au premier dessin ; parcours DS2 chaque seconde ; classement des ombres ; personnages derrière la caméra ; mer.OPTIMISATION, reprise Codex, 22/10 ; publication 8cccd346[Mesures et limites](performance-capture-31.md). node tools/reports.mjs captures (règle 9) ; gain FPS réel encore à confirmer.
    Signalements capture dans Corals World (autre moteur : la sonde ne s'y pose pas encore)conversation OPTIMISATION af3e50a3, 22/10à faire quand le world rame
    Champion et Croisé inversés dans cinq fichiersconversation STUFF LAB 3e501c3e, 21/10 13 h 53relevé, non corrigé
    Règles des objets côté serveur : le sac est gardé par le serveur depuis le 21/10 (personnage lié au compte), mais c'est le jeu qui crée les objets (butin, boutique, atelier) et le serveur ne vérifie pas encore qu'un objet vendu ou acheté est bien dans le sac ; une dépense refusée par la bourse laisse l'objet achetérègle « Données sur le serveur » ; conversation PEOPLE OWN WORLD 33485bd8avant les propriétés et les échanges entre joueurs
    Parties du Village des îles du monde : leur identifiant se calcule à partir de l'île et de l'identifiant du joueur (villageSaveOf), que reçoivent les membres d'un groupe en ligne ; village-api (conversations, reset) n'a pas d'autre clérelevé en écrivant la bourse, conversation PEOPLE OWN WORLD 33485bd8, 21/10à protéger par une clé secrète, comme la bourse
    Données des joueurs (comptes, parties du Village, bourse) sans copie hors du serveur : la bourse a sa copie quotidienne, mais sur le même disqueconversation PEOPLE OWN WORLD 33485bd8, 21/10sauvegarde hors du VPS, chiffrée
    Propriétés : le héros achète une maison qui rapporte (où vivent les maisons, modèle de propriété)conversation PEOPLE OWN WORLD 33485bd8, 21/10 15 h 17décision d'Antoine en attente
    Test du World Lab « le pont réel instancie les apparences Lore… » en échec, toléré par tools/publish-known-failures.txt depuis le 20/10tools/publish.shà réparer, puis retirer de la liste
    Tests instables sous la charge : équipage à bord, deck-life, délai du test des routes en lacets relâché de 1,5 à 4 sconversations PLAYERS a639aecc, APP ANDROID & ADMIN 6fba48dd, WORLD COMPOSER 6b2ebeaerendre déterministes
    API du Lab Stuff (corals-2-stuff) publiée à la main, appels IA non comptés dans les coûtsconversation STUFF LAB 3e501c3e, 21/10 13 h 30l'intégrer à tools/publish.sh et à ai-costs.mjs
    Skins d'assemblage : faire valider le rendu par Antoine, puis aperçu habillé de l'Atelier des îles ; style d'un équipier selon son poste (à trancher)conversation « skins d'assemblage », 21/10roadmap : Phases › 🎭 Skins d’assemblage des habitants
    Mot de passe de la base Railway d'Archonse à changer (il a été chargé dans tous les chats jusqu'au 20/10)conversation ORGANISATION f71660f6pour Antoine : demande un redémarrage d'Archonse

    Dernières publications 112

    QuandNomCe qui change
    23/10/2026 02 h 30arrival-pin
    131c6cfc · arrival-pin
    World : petit drapeau d’arrivée déplaçable directement à la souris ou au doigt ; le récit s’ouvre seulement au clic. Le trajet du tonneau suit le rivage choisi, avec contrôle de la terre, des bâtiments et de la mer ; enregistrement en ligne et annulation conservés.
    23/10/2026 02 h 25first-boat-story
    7c649d57 · first-boat-story
    Port-Brise continue jusqu’au premier bateau : visite simplifiée de l’atelier, choix de deux petits modèles existants sans génération, défense de Gustave, fouille des matériaux, vrai titre dans le sac, vieux ponton et embarquement par tyrolienne. Navigation, retour et second embarquement testés ; histoire et retrait …
    23/10/2026 02 h 21signalements-48-50
    d4b4d7d4 · signalements-48-50
    collisions continues des murs et meubles, sortie des anciennes collisions, roue d’interaction fermée en combat et sous les fenêtres
    23/10/2026 02 h 17signalement-46
    f55f3dc0 · signalements-45-46
    Signalement 46 : le groupe replié conserve une petite ligne par habitant avec icône, nom et vie ; détail toujours accessible. Retouches HUD portrait intégrées. Géométrie vérifiée dans 61 cas, en français, anglais et allemand, dont le paysage 914 × 411 de la capture.
    23/10/2026 02 h 13portrait-hud-fit
    233ef7b4 · portrait-hud-fit
    HUD portrait : quatre accès en bloc 2 × 2 de 104 px, suivi aligné à gauche dès 320 px, icônes réduites et zones tactiles de 44 px. Pastilles de chapitre et de fin d’acte avec texte sur toute la largeur et actions séparées, résumé limité à deux lignes. Groupe compact avec compteur fixe et accès Liens en icône. Suivi …
    23/10/2026 02 h 05crew-player-defense
    aa8e1bb1 · crew-player-defense
    Les habitants de l’equipage actif defendent le capitaine contre les Players : cibles partagees avec l’escouade, vrais degats, soins et buffs de classe, PM et recharges natifs. Competences sans effet ecartees, armes sorties en combat, KO et relevement du Village preserves face aux coups et au poison. Dix classes test…
    23/10/2026 01 h 59android-language
    089ee8a4 · android-language
    Correction de la langue dans l’app Android existante : l’ancienne adresse de lancement ?lang=en ne masque plus le choix mémorisé ni la langue du compte. Régressions exécutées sur trois réouvertures avec cette adresse fixe, sans session et avec compte français sur appareil neuf. Aucun nouvel APK nécessaire.
    23/10/2026 01 h 45signalement-44
    de53be6e · signalements-30-42
    Signalement 44 : arcs et épées passent en main pendant les attaques mobiles, puis se rangent ; changer d'arme annule le tir en préparation.
    23/10/2026 01 h 41duel-invite-fix
    4b196b12 · duel-invite-fix
    Correction urgente des défis JcJ annulés immédiatement : une conversation ou une cinématique ne refuse plus l’invitation à la place du joueur ; la proposition attend la fin de la scène et le choix Accepter ou Refuser. Un compagnon occupé ne fait plus annuler le duel. Une préparation attend la fin d’un combat déjà co…
    23/10/2026 01 h 34restaurant-port-brise
    9272df38 · restaurant-port-brise
    Préparation du Grand Pavois sur Port-Brise : restaurant de trente couverts près du centre, chef pirate Grand-Toque, deux petits commis et deux musiciens. Vraies tenues de cuisine skinnées dans le jeu et le World, métier Serveur, personnages et horaires persistants. Outil de pose additive avec sauvegardes et contrôle…
    23/10/2026 01 h 29signalements-30-43
    bd8578a5 · signalements-30-42
    Signalements 30, 33 à 39, 41 à 43 : visibilité des bâtiments et des textes, reprise des déplacements après une pose, raccords de pontons, coque de chantier praticable, dézoom jusqu’à 48 m, décompte de défense même replié, personnage cadré hors du panneau Apparence sur mobile et fin du chargement des outils suivie ap…
    23/10/2026 01 h 23online-duels
    47f4715c · online-duels
    Défis JcJ au toucher, sur le nom ou au clic droit, avec ou sans équipage : capitaines seuls et compagnons spectateurs avec réactions variées synchronisées, ou combat avec les compagnons actifs. Consentement, chargement confirmé, impacts et PV/PM suivis par le serveur, retour à la partie sans pénalité. Invitations sa…
    23/10/2026 01 h 18quest-reading-priority
    8f69c9ac · quest-reading-priority
    Lecture prioritaire des paroles et choix de quête : commentaires organiques et informations secondaires temporairement retirés, déplacements conservés pendant le guidage. Messages non doublés, notifications en série, petites annonces après les paroles, question et réponses séparées en cas de chevauchement. Pastille …
    23/10/2026 01 h 11online-duels
    1119e22d · online-duels
    Défis JcJ au toucher ou au clic droit : Attaquer · Défi, capitaines seuls avec équipages spectateurs qui encouragent et chambrent, ou combat avec les compagnons actifs. Consentement, chargement confirmé sur les deux appareils, PV/PM et impacts natifs suivis par le serveur, réactions communes et restauration après le…
    23/10/2026 01 h 06metiers-habitants
    a9cbe7e6 · metiers-habitants
    World Lab : métiers des habitants, lieu de travail et six créneaux réglables ; entrée au poste pendant le service, sortie par la porte et reprise des lieux libres ensuite. Métiers conservés par le serveur et visibles dans la fiche ; scènes et conversations prioritaires. Nouveaux employés du restaurant avec horaires,…
    23/10/2026 00 h 55account-language
    273df83e · account-language
    Langue du compte conservée après fermeture et reconnexion : choix confirmé en base avant navigation, retrait de l’ancienne langue des liens de lancement et de retour, reprise après coupure réseau. Tests exécutant les modules du jeu contre SQLite, avec nouvelle session sans stockage local.
    23/10/2026 00 h 51perf-mobile-40
    205a9715 · perf-capture-40
    Capture 40 : moins de calculs et de mises en page répétés dans le HUD et les personnages, diagnostic séparant combat et caméra. Trois modèles de créatures restaurés depuis le miroir natif ; les échecs de chargement ne provoquent plus des requêtes à chaque synchronisation. Rendu et qualité conservés, gain FPS à mesur…
    23/10/2026 00 h 42players-story-skins
    e5432a25 · players-story-skins
    Skins assortis pour les Players dès le niveau 1 : sélection par clan et classe, tenues de corsaires variées et visages dégagés pour les pillards du phare et des camps. Apparences posées avant le premier affichage, équipement et statistiques toujours au niveau réel. Tests des vrais appels de création, contrôle de tro…
    23/10/2026 00 h 34restaurant-modulaire
    7997d041 · restaurant-modulaire
    Bâtiments PNJ modulaires : dimensions et formes réglables avant pose et après sélection dans le World. Nouveau restaurant de référence de 480 m² avec cuisine équipée, 30 couverts accessibles, restaurateur, cuisinier et deux musiciens persistants. Règles et lexique complétés pour les futurs ateliers et magasins spéci…
    23/10/2026 00 h 27compact-quest-hud
    3c9e32be · compact-quest-hud
    Suivi de quête compact sur mobile et ordinateur : largeur limitée à 236/264 px, résumé avec chapitre, objectif, direction et distance, détail au toucher. Alignement sur la navigation quand les deux tiennent côte à côte, défilement borné et commandes tactiles conservées. Ancien suivi ouvert remis en résumé, progressi…
    23/10/2026 00 h 10account-save-fix
    efeb1efe · account-save-fix
    Correction de l’erreur « flush n’est pas une fonction » dans Réglages > Compte : la sauvegarde du personnage dispose de son accès propre, distinct de sa fiche. Connexion, déconnexion et voyage vers l’île de l’histoire sauvegardent à nouveau sans collision. Tests des trois clics avec la fiche chargée et synchronisati…
    22/10/2026 23 h 33options-account
    88857891 · options-account-travel
    Réglages : onglet Compte avec la session réellement connectée, Se connecter et Se déconnecter après sauvegarde du personnage et de la bourse, sans effacer l’aventure. Île actuelle et accès direct à l’île de l’histoire depuis le même onglet. Navigation des options bornée sur mobile.
    22/10/2026 23 h 05hud-mobile-quests
    666b6091 · hud-mobile-quests
    HUD mobile : suivi de quête compact, détails plus larges et défilables avec bouton de repli visible ; le chat et les quêtes ne se recouvrent plus. Chat avec fermeture tactile et brouillon conservé ; Bêta et sauvegarde accessibles dans Menu sur téléphone.
    22/10/2026 18 h 51hud-cadres
    0759d57f · hud-frame-fix
    Corrige les cadres SVG démesurés : dimensions naturelles et découpes proportionnelles dans tous les panneaux. Fenêtre Équipage resserrée, actions groupées sous chaque fiche, appels à bord affichés dans leur contexte, meilleur repli mobile. Régression reproduite et contrôlée sur la vraie CSS sans navigateur.
    22/10/2026 18 h 16hud-sculpte
    1b7243d8 · hud-carved
    HUD maritime sculpté : dix ornements SVG communs aux quêtes, groupes, navigation, fenêtres et combat. Accès mobiles portrait/paysage défilables, commandes tactiles préservées, options joueur épurées ; trois nouvelles planches de contrôle.

    Historique complet, avec les 137 publications faites à la main avant le script : docs/RELEASES.md.

    Où changer quoi

    Je veux…Où
    Ajouter ou changer une règleCLAUDE.md (et AGENTS.md si Codex doit la voir tout de suite) du dossier partagé, commit -- CLAUDE.md ; jamais dans une copie
    Fixer un mot d'Antoinesrc/standalone/lexicon/terms.ts dans la copie, puis node tools/lexicon-md.ts et publier
    Décrire une fonction du jeudocs/carte/<domaine>.md du dossier partagé
    Dire sur quoi je travailledocs/CHANTIERS.md, ligne « En cours »
    Publiertools/publish.sh --dir <copie> --name <nom> --what "…"
    Revenir en arrièretools/publish.sh --rollback
    Savoir ce qui est en lignedocs/ETAT.md ou tools/publish.sh --status
    Ajouter un outil donné à quelqu'unrègle 4 : domaine <nom>.playcorals.online, vhost, certificat, APPS d'app-root.ts
    Corriger un signalementnode tools/reports.mjs show <n>, puis done <n> --commit après publication