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 22 octobre 2026 à 18:32
depuis les fichiers du dossier partagé

Vue d'ensemble

9applications *.playcorals.online
9règles permanentes d'Antoine
25règles du jeu et de développement
112fonctions décrites dans la carte du code
88publications par tools/publish.sh (+ 137 avant)
94 Kode règles chargées d'office (≈ 28300 tokens)
Codecommit 1b7243d8 = branche prod (1b7243d8)
Ce qui a changé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.
Serveurinstantané /var/lib/corals-2/server-releases/20261022T161315Z-1b7243d8-hud-sculpte (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'office35 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à lire63 Ko
docs/CHANTIERS.mdQui travaille sur quoi, restes à fairelu avant de commencerà lire5,0 Ko
docs/carteCarte du code, par domainelue avant de toucher un domainesur demande305 Ko
docs/RELEASES.mdHistorique des publicationsécrit par tools/publish.shsur demande245 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. 103 branches et 31 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 1b7243d8

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 25

📖 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 seulement le confort du joueur : 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 (3)

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.

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 aujourd’hui ; casino, magasin, é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 ».

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 · 2 entrées · 9,5 Ko

Voir les entrées
  1. Bateaux (option)
  2. Atelier naval · la table des plans (22/10, option)

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 · 20 entrées · 57 Ko

Voir les entrées
  1. Mobs
  2. Retour visuel des coups
  3. Monstres d'origine (option)
  4. Players (option)
  5. Mobile · combat au doigt, phase de combat (20/10)
  6. Labo de combat (page)
  7. Mécaniques du Labo de combat passées dans le jeu
  8. Adversaires de quête · IA commune (21/10)
  9. Mêlée pendant les poursuites (21/10)
  10. Compétences en mouvement (21/10)
  11. Rivaux · relance, états natifs, XP et fouille (21/10)
  12. Players recrutés · cerveau commun (21/10)
  13. Visée des compétences au doigt (21/10)
  14. Combat de Corals online (options)
  15. Boss intelligents (19/10)
  16. Personnage (fenêtre)
  17. Compétences au doigt et PM (19/10)
  18. Tenue selon le niveau (19/10)
  19. Garde-robe complète (19/10)
  20. 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 · 11 entrées · 22 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. Terrain
  6. Routes & ports
  7. Port d'Argent (procédural)
  8. Sol Pelouse V8 (option)
  9. Lieux (outil)
  10. Lumières et effets des modèles (18/10)
  11. 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 · 16 entrées · 67 Ko

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

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

    Aucun sujet réservé.

    À faire (15)

    QuoiSourceNote
    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 ». Reste le raccord au port et au système de navigation, actuellement absent des îles de Corals World.
    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 88

    QuandNomCe qui change
    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.
    22/10/2026 17 h 55perf-capture-31
    8cccd346 · perf-capture-31
    Optimisation issue de la capture 31 : repère de quête sans lecture de mise en page à chaque image, pion caché sans animation, textures du décor préparées par lots et shaders compilés avant apparition. Mesures du décor mieux classées et téléchargement JSON des captures réparé. Gain de FPS à confirmer par une nouvelle…
    22/10/2026 17 h 51batiments-pnj
    5a7a043b · batiments-pnj
    Bâtiments PNJ : catégorie dédiée dans le World et le Builder des îles, atelier naval avec maître charpentier créé automatiquement, identité et habitudes variées, liens conservés quand on déplace ou refait l’atelier. Gestion du premier et du dernier habitant en direct, lexique illustré ; aucun appel IA lors des poses.
    22/10/2026 17 h 47world-native-npcs
    eecdf84f · world-native-npcs
    World : PNJ du vrai jeu distincts des habitants et Players ; catalogue, poste, bâtiment facultatif et boutiques configurables, synchronisés dans le jeu. Prix personnalisés contrôlés par la bourse du serveur.
    22/10/2026 17 h 21hud-atlas
    e5e68e9 · hud-atlas
    HUD Atlas des marées : cadres marine et laiton communs, navigation regroupée dans Menu, suivi de quête compact, groupes d’habitants et de joueurs distincts avec distances, modes de commande dans Réglages > Interface. Le Sac, la fiche, l’équipage et les réglages reprennent les mêmes surfaces. Réaffichage du HUD corri…
    22/10/2026 17 h 09studio-voix
    f643e03 · studio-voix
    World : studio des voix avec 48 cartes de timbres en quatre familles, écoutes A/B, forme d’onde et spectre mesurés, volume et simulation de distance de 0 à 7 m.
    22/10/2026 16 h 58atelier-naval
    af53c40 · atelier-naval
    Atelier naval : bâtiment génératif avec salle des plans, maître charpentier qui vit dedans, dessin sur parchemin puis esquisse et bateau 3D IA de 6 à 12 m, coque large, bibliothèque liée au joueur et coûts comptés. Ajout à Port-Brise après publication : atelier, Gustave Calfat, enseigne, chemin et terrasse ; nginx a…
    22/10/2026 16 h 42voix-diverses
    19dc50c · voix-diverses
    48 timbres et 576 réactions ElevenLabs : voix aiguës pour les petits habitants, claires et médiums pour les corps ordinaires, graves pour les colosses ; identité stable et deux prises alternées par réaction. Choix du timbre dans Corals World. Réactions fortement baissées, atténuation cubique, silence à 7 mètres ; an…
    22/10/2026 16 h 18skins-preview
    99d4ce0 · fix-skins-preview
    Correction des skins invisibles : le chargeur commun récupère les modèles absents de la release dans le miroir DS2 du serveur. L’aperçu attend la fin de l’habillage et affiche les erreurs de chargement. Vérification réelle de 16 pièces sur les quatre corps, sans navigateur.
    22/10/2026 16 h 13sons-personnages
    e19b91d · sons-personnages
    Corals World : onglet Sons dans la fiche du personnage, choix de six réactions, silence, volume, préécoute et création ElevenLabs réservée aux admins. Les habitants jouent ces sons dans Corals 2 avec distance et volume des voix ; leurs réglages suivent les retouches en direct sans redémarrer la scène. Six sons de ba…
    22/10/2026 16 h 09hud-conception
    a5aa33c · hud-directions
    Dossier de conception du HUD : audit de 23 familles, trois directions visuelles et huit planches (exploration, combat, dialogue, sac, quatre formats mobiles, fondations), galerie et PDF. Maquettes uniquement : aucun remplacement du HUD jouable. Fonds illustratifs reconstitués depuis les captures, sources et prompts …
    22/10/2026 16 h 02atelier-3d
    1768562 · atelier-3d
    Corals World, atelier du personnage : l'aperçu 3D marche (« Aperçu indisponible : Unexpected token » venait des fichiers du jeu demandés à la racine du domaine, renvoyés maintenant sous /corals-2/) ; fenêtre bien plus grande ; plus de colonne à gauche, un onglet par sujet ; « Apparence & tenue » montre le personnage…
    22/10/2026 15 h 51beta-langue-compte
    91a9096 · lang
    Fenêtre bêta refaite : l'illustration du port d'Argent (style du jeu, légère animation), trois points clairs et le choix de la langue en six drapeaux dessinés en SVG (anglais = drapeau britannique ; les emoji de drapeaux s'affichent en lettres sous Windows). Un clic sur un drapeau change tout de suite la langue de l…
    22/10/2026 15 h 44perf-capture
    2603ca0 · perf-capture
    Signalements capture : dans Signaler (F8 ou 🐞), nouvel onglet « ⏱️ Capture (FPS) » : graphique des 20 dernières secondes, « Capturer les données » (ces 20 s et tout ce qui est dessiné) ou « Capturer en vidéo » (30 s au plus, Arrêter ou F8), option « Peser chaque élément » (≈ 15 s, l'image clignote). Sonde de perfor…
    22/10/2026 15 h 36perso-3d
    534472b · perso-3d
    Corals World, atelier du personnage : à gauche, toujours, le vrai personnage du jeu en 3D, animé, habillé exactement comme dans la partie (même calcul que le jeu : classe à son niveau, skin d'assemblage, pièces choisies) ; on le tourne dans tous les sens en glissant (aussi par-dessus et par-dessous), molette ou pinc…
    22/10/2026 15 h 15doublon-cours
    c66b83e · doublon-cours
    Le doublon devient un doublon d'or : il s'achète et se revend contre de l'or au cours du jour, fixé par le serveur. 300 or au départ, puis le cours suit l'inflation (l'or créé moins l'or détruit la veille), au plus ±10 % par jour, et ne bouge pas tant que l'économie est trop petite. Change d'un clic sur le solde « o…
    22/10/2026 15 h 08atelier-skins
    12e3d0b · atelier-skin
    Corals World, atelier du personnage › Apparence & tenue › Skins : les quatre pièces portées en jeu (couvre-chef, haut, gants, bottes) se cliquent et se choisissent parmi tous les skins de son corps (filtres par style, costumes, recherche, « Aucun » = sa vraie tenue) ; « 🎲 Autre assemblage » change vraiment à chaque…
    21/10/2026 23 h 46photo-perso-taille
    badfae4 · photo-perso
    Photo d'un personnage : le serveur accepte la photo jointe à « ✨ Écrire le personnage » (limite de lecture relevée pour cette seule route). nginx fait à la main : world.playcorals.online, location = /corals-2/village-api/lore/draft (3 Mo, 120 s).
    21/10/2026 23 h 42photo-perso
    afc04a7 · photo-perso
    Corals World, zone « Ton idée » de l'atelier du personnage : « 📷 Ajouter une photo » d'une vraie personne. La photo (réduite à 1024 px dans le navigateur) part avec « ✨ Écrire le personnage » : l'IA écrit son apparence d'après ses traits (visage, cheveux, carrure, âge apparent), sans jamais l'identifier, la personn…
    21/10/2026 23 h 32perso-ia-propre
    2078ea4 · perso-ia
    Personnage écrit par l'IA : les textes ne commencent plus par « French: » recopié des consignes. Aucun DNS ni nginx touché.
    21/10/2026 23 h 28perso-ia
    3c0283f · perso-ia
    Corals World, « ✨ Écrire le personnage » : la fiche s'écrit vraiment (la réponse de l'IA était coupée, budget 1600 → 6000), l'idée entière est lue (2 500 caractères au lieu de 600) et suivie fidèlement, un nom est inventé à la place de « Nouveau personnage », l'IA écrit l'apparence physique (nouveau champ Apparence …
    21/10/2026 23 h 23report-29
    793872d · report-29
    libellé localisé et sans ambiguïté pour les attaques ratées
    21/10/2026 23 h 17reports-26-28
    c616c0e · reports-26-28
    créatures maintenues sur le sol, visibilité dans les bâtiments et HUD mobile paysage sans chevauchement
    21/10/2026 19 h 13skins-assemblage
    0bcb0ba · skins-assemblage
    Skins d'assemblage : les habitants (ceux qui peuvent entrer dans le groupe et l'équipage) portent par-dessus leur vraie tenue des skins du jeu assemblés avec logique : un style tiré de leur fiche (métier, rôle, traits, classe, poste espéré : marin, guerrier, noble, érudit, mystique, sombre, ombre, voyageur, sauvage,…
    21/10/2026 18 h 25perso-compte
    db733c5 · perso-compte
    Le personnage est lié au compte : ce qui fait le héros (sac et équipement, niveau et XP, caractéristiques, compétences, corps, équipement de l'équipage, option Progression) est gardé sur le serveur avec la bourse. Un compte connecté retrouve son personnage sur n'importe quel appareil (repris tout de suite sur un app…

    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