BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Quadrature — tabletop role‑playing game set in the world of Aeonir: rules, action maps, bestiary, and tabletop tools.
AI translation
Quadrature — jeu de rôle sur table dans le monde d'Aeonir : règles, cartes d'action, bestiaire et outils de table.
GamesPython · TypeScriptGitHub @ewen-marechal-gaoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Original tabletop role‑playing game and its tools: a combat engine written in TypeScript (planners or LLM agents, Jest tests) and a rules site built with Next.js 16 / React 19.
AI translation
Jeu de rôle sur table original et ses outils : moteur de combat TypeScript (planificateurs ou agents llm, tests Jest) et site de règles Next.js 16 / React 19.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Jeu de rôle sur table original, dans le monde d'Aeonir. Quadrature est un JdR maison construit autour d'un système de dés singulier (quatre dés numérotés 0–5, score final 0–20) et d'un univers à forte identité : une planète quasi-verrouillée à son étoile, dont le terminateur — la frontière jour/nuit — dérive lentement, façonnant quatre peuples. Ce dépôt regroupe à la fois les règles, le site de lecture, un simulateur de combat et les outils de worldbuilding. 🚧 En développement actif. Voir l'état du projet.Read the full README ↗
Jeu de rôle sur table original, dans le monde d'Aeonir.
Quadrature est un JdR maison construit autour d'un système de dés singulier (quatre dés numérotés 0–5, score final 0–20) et d'un univers à forte identité : une planète quasi-verrouillée à son étoile, dont le terminateur — la frontière jour/nuit — dérive lentement, façonnant quatre peuples. Ce dépôt regroupe à la fois les règles, le site de lecture, un simulateur de combat et les outils de worldbuilding.
🚧 En développement actif. Voir l'état du projet.
Ce dépôt mêle trois natures d'œuvre, qui n'appellent pas la même licence. La règle qui les départage est simple : la licence suit la provenance, pas l'emplacement du fichier.
| Ce qui est couvert | Où | Licence |
|---|---|---|
| Code — site, moteur de combat, outils | web/, simulator/, tools/, geo/ | MIT |
| Contenu du jeu — règles, univers, données | rules/, data/ | CC BY-NC-SA 4.0 |
| Illustrations générées par IA | registre data/illustrations.yaml | CC0 1.0 |
Les fichiers situés hors de ces répertoires suivent la nature de leur contenu,
pas leur emplacement : le contenu de jeu sous web/public/ relève de la licence
du contenu, bien qu'il vive dans un dossier de code. Pour les images, c'est le
registre qui fait foi, image par image — ni le dossier ni l'extension.
Concrètement : réutilisez le code comme bon vous semble, y compris commercialement. Les illustrations générées sont dans le domaine public, sans condition ni attribution exigée — l'auteur ne revendique rien de ce qu'un modèle a produit. Pour le contenu du jeu, vous pouvez le partager et l'adapter — scénarios, aides de jeu, extensions — à condition de citer la source, de ne pas en faire un usage commercial et de partager vos adaptations sous la même licence. Jouer, en parler ou en diffuser des extraits dans le cadre d'une partie ou d'une critique n'a jamais demandé d'autorisation. Pour un usage commercial : [email protected].
Le raisonnement qui mène à ces trois régimes — et ce que l'IA fait, ou ne fait pas, dans la fabrication du jeu — est dans la charte d'usage de l'IA.
| Dossier | Rôle | Stack |
|---|---|---|
rules/ | Vault Obsidian — source de vérité des règles et de l'univers | Markdown / Obsidian |
web/ | Site de lecture (livre paginé + PDF), cartes d'action, feuille de personnage | Next.js 16 · React 19 · Tailwind v4 |
simulator/ | Moteur de combat avec agents (scriptés et LLM) | TypeScript · Jest |
tools/ | Calculateur astronomique + cladogramme du bestiaire | Python · Node |
1 meilleur 🟦 + 2 meilleurs 🟨 + 1 aléa, soit 0 à 20.Détail complet : ouvrir le vault rules/ (entrée fr/_index.md)
ou lire le site (web/).
Planète quasi-verrouillée (rotation ≈ période orbitale) : le Soleil se déplace
très lentement dans le ciel, et le terminateur mobile traverse les terres au fil
des siècles. Quatre peuples (Cimes, Neiges, Pluies, Vents) s'y sont adaptés. La
physique du monde n'est pas qu'évoquée : elle est calculée par tools/astronomy.py
(quasi-verrouillage, lune-horloge, saisons polaires asymétriques, gravité 0,75 g…).
Aeonir possède aussi une langue rituelle ancienne (rules/fr/univers/language.md) :
une phonologie à deux registres — voix de pierre (minérale, gutturale) et voix de sève
(vivante, chantante) — où l'inversion sonore encode les antonymes (un contre-sort renverse
l'incantation). Elle outille la génération de noms propres, toponymes, créatures et incantations,
et nomme les quatre peuples : Syldor (Cimes), Vaedor (Vents), Lumidor (Pluies), Sahgdor (Neiges).
Dépôt unique (monorepo) à la racine. Chaque sous-projet reste autonome mais partage le même historique git.
Quadrature/
├── rules/ # Vault Obsidian (core/, disciplines/, univers/, cartes/…) — SOURCE DE VÉRITÉ des règles
│ └── fr/ # entrée : _index.md
├── data/ # Données structurées — SOURCE DE VÉRITÉ des données de jeu
│ # actions, traits, gardes, équipement, disciplines,
│ # cladogramme, mutations, bestiaire — lues par web/, simulator/ & tools/
├── web/ # Site Next.js (lit rules/fr/ + data/ au build)
├── simulator/ # Moteur de combat TypeScript
├── tools/ # astronomy.py · cladogram.ts · consolidate-bestiary.ts
├── images/ # Illustrations et concept art
├── CHARTE-IA.md # Usage de l'IA dans le projet — et licence des images générées
├── README.md · Roadmap.md · CHANGELOG.md
└── rapport_avancement_*.md # revues d'avancement ponctuelles
La source de vérité des règles est
rules/fr/. Les exports legacy à la racine (Quadrature_latest.md…) sont conservés hors versionnement et ne font plus foi.
Prérequis : Node 20+ (web, simulator, tools/cladogram.ts), Python 3 (tools/astronomy.py), Obsidian (rules).
rules/)Ouvrir le dossier rules/ comme vault Obsidian ; commencer par
fr/_index.md. Aucune installation.
web/)cd web
npm install
npm run dev # serveur de dev sur http://localhost:3000
npm run build # build serveur (.next/) ; servir via `npm run start`
npm run generate-pdf # génère le PDF du livre (Puppeteer + pdf-lib)
Rubriques notables : /fr (accueil), /fr/volumen/<livre> (lecture paginée),
/fr/cartes (cartes d'action imprimables), /fr/traits (traits de compétence),
/fr/equipement (catalogue d'objets), /fr/adversaires (fiches de bestiaire),
/fr/evolution (cladogramme), /fr/personnage (feuille de personnage interactive :
édition, sauvegarde locale multi-personnages, export/import JSON, impression PDF).
Les rubriques /fr/traits et /fr/equipement lisent data/*.yaml — la même
source que le simulateur — et affichent donc l'état réel du branchement
moteur, trous compris : une mécanique décrite dans les règles mais que le moteur
n'applique pas encore y est signalée comme telle.
Toutes les rubriques partagent le même chrome (components/TopBar.tsx puis
components/ToolBar.tsx) : la TopBar dit où l'on est — identité, rubrique,
retour à l'accueil, langue — et la ToolBar ce qu'on peut y faire — filtrer,
rechercher, zoomer. Une barre d'outils ne porte donc ni titre de page ni lien de
retour, et le sélecteur de langue est toujours le dernier élément de la TopBar.
Chaque rubrique suit le même gabarit de mise en page : hauteur figée, barres
fixes, un seul bloc défilant en dessous.
/fr/encounters est un outil local de mise au point : il rejoue un rapport du
simulateur manche par manche (plateau et trajectoires, log par bandes façon
chat, dés et effets, vitaux physique/mental). Les rapports vivant dans
simulator/combatReports/ (non versionné), la rubrique reste vide sur un build
déployé et n'apparaît pas dans la navigation publique.
simulator/)cd simulator
npm install
npx jest --no-coverage # suite de tests
npx ts-node src/simulate.ts encounters/duel-arme.yaml 400 --quiet
npx ts-node src/simulate.ts encounters/approche-faucheur.yaml # 1 run AVEC plateau (approche + charge)
npx ts-node src/simulate.ts encounters/tir-vs-faucheur.yaml 100 --quiet # tirailleur qui kite (recul + tir)
npx ts-node src/optimize.ts # équilibrage (grid search)
Un run unique écrit un rapport rejouable dans combatReports/ (rejouable dans
/fr/combat) ; un run multiple (… 400) écrit un rapport agrégé *.batch.json
réservé aux statistiques. Une rencontre peut déclarer un board et des pos
de départ : le combat se joue alors sur une grille (déplacements, portées,
attaques à distance). Les agents scriptés décident par espérance d'utilité
(actions, garde, positionnement — approche, kiting, tenir).
Les agents pilotés par LLM utilisent l'API Mistral — renseigner MISTRAL_API_KEY
dans un .env (cf. .env.example). Les agents scriptés n'en ont pas besoin.
tools/)Astronomie — modèle physique d'Aeonir :
python tools/astronomy.py # régénère tools/aeonir_astronomy.md
Cladogramme du bestiaire — data/cladogram.yaml (l'arbre) et
data/mutations.yaml (les mutations : label, description, kit de combat)
sont la source de vérité de l'arbre phylogénétique de la faune d'Aeonir (clades, mutations,
biomes, statut). On les édite via l'utilitaire tools/cladogram.ts plutôt qu'à la main : il
préserve le style de l'arbre et valide après chaque opération.
# nécessite js-yaml — lancer `npm install` dans web/ au préalable
node tools/cladogram.ts validate # contrôle (clés inconnues, mutations non placées)
node tools/cladogram.ts print # arbre indenté + label de chaque mutation
node tools/cladogram.ts node-mut "Faucheurs" sickleClaws # pose une mutation (référencée par CLÉ)
node tools/cladogram.ts node-status "Faucheurs" done # marque une espèce comme peuplée
node tools/cladogram.ts mut-add maCle "Label fr" "Description fr"
# autres : node-cd · node-ref · node-rename · node-clear-mut · mut-relabel · mut-describe
Les mutations (data/mutations.yaml) forment un dictionnaire clé → { label, description, kit? }
(chaînes Locale) ; les nœuds de l'arbre y réfèrent par clé (champ mut) et chacun porte un
uid stable. Le kit décrit la brique de fiche d'adversaire conférée par la mutation
(cf. rules/fr/adversaires/). La numérotation d'affichage est calculée côté front. Une
insertion de nœud (qui ré-indente le sous-arbre) se fait en important la lib
(import { loadRaw, save, findAny } from "./cladogram.ts") dans un petit script ponctuel.
Bestiaire d'adversaires — data/bestiary/ relie le cladogramme aux fiches de monstres :
les sources species/<id>.yaml (stats propres + from: = uid d'une espèce du cladogramme) sont
consolidées en fiches cards/<id>.card.yaml par tools/consolidate-bestiary.ts.
Chaque mutation de l'ascendance apporte sa brique (kit : parties du corps, cartes, traits ;
Speed/Fatigue dérivés) → ce que la créature EST découle de ses mutations. Les fiches (anglais + Locale)
alimentent la rubrique web /adversaires.
node tools/consolidate-bestiary.ts # régénère data/bestiary/cards/*.card.yaml
Système jouable et chaîne de publication fonctionnelle ; le projet a dépassé le prototype. Chantiers en cours côté cohérence des règles, resynchronisation du lore et complétion des disciplines.
rapport_avancement_2026-06-10.mdRoadmap.mdCHANGELOG.md{ fr: … }).feat:, fix:, chore:, refactor:…).rules/fr/ (pas les exports legacy de la racine).Œuvre originale d'Ewen Maréchal, sous double licence : code en MIT, contenu du jeu en CC BY-NC-SA 4.0. Détail en tête de ce fichier : Licence.