Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证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.
翻译准备中
取自仓库 README
正在加载完整 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.查看完整 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.