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
翻译准备中
"Ce soir je joue à..." : une web app qui se connecte à ta bibliothèque Steam et utilise l'IA pour te recommander exactement 3 jeux selon ton humeur, ta fatigue et le temps dont tu disposes. Résultats affichés sous forme de podium (or, argent, bronze), avec des cartes qui se retournent pour révéler la justification IA. Vue 3 + Node/TS, open source G
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Ce soir je joue à... Un petit site qui répond à une question toute simple : "j'ai envie de jouer, mais à quoi ?" Plus une bibliothèque Steam grossit, plus choisir un jeu devient une corvée : on finit par relancer toujours les 2-3 mêmes, ou par ne rien lancer du tout. Ce site regarde ta vraie bibliothèque Steam et te propose seulement 3 jeux, choisis pour correspondre à ton état du moment.查看完整 README ↗
Un petit site qui répond à une question toute simple : "j'ai envie de jouer, mais à quoi ?"
Plus une bibliothèque Steam grossit, plus choisir un jeu devient une corvée : on finit par relancer toujours les 2-3 mêmes, ou par ne rien lancer du tout. Ce site regarde ta vraie bibliothèque Steam et te propose seulement 3 jeux, choisis pour correspondre à ton état du moment.
ministral-8b-latest) ; le détail du prompt envoyé est documenté dans docs/02-architecture-logicielle.md.Si ta bibliothèque Steam est vide, le site te propose à la place une petite sélection de jeux gratuits sur Steam.
Pas besoin de comprendre ce détail pour utiliser le site — c'est juste pour les curieux. Le site envoie à l'IA ta bibliothèque (nom du jeu, temps joué, dernière session) et ton état du moment, en langage à peu près comme ça :
Jeux candidats (bibliotheque Steam du joueur) :
- appid 413150 : "Stardew Valley", 80.3h joues au total, derniere session : il y a 3 jours
Etat du joueur ce soir :
- Humeur(s) : detente, nostalgie
- Niveau de fatigue : fatigue
- Temps disponible : 60 minutes
- Moment de la journee : soiree
Et elle répond avec exactement 3 jeux choisis parmi cette liste (jamais un jeu inventé), classés, chacun avec une explication en français :
{"suggestions": [
{"appid": 413150, "rank": 1, "matchPercent": 87,
"whyThisGame": "Vous etes fatigue et vous avez une heure...",
"whyThisRank": "..."}
]}
Le texte que tu lis en retournant une carte, c'est directement cette explication de l'IA — le site ne le réécrit pas.
front/back/ et api/docs/Pas besoin d'aller plus loin dans le détail technique pour utiliser ou faire évoluer le site à haut niveau : les documents dans docs/ sont là si tu veux creuser un point précis.
Éditeur, hébergement, code source et traitement des données personnelles sont détaillés sur une page dédiée du site, accessible depuis le pied de page (/mentions-legales) une fois le site lancé.
Ce projet est distribué sous licence GNU GPL v3 (ou, à ton choix, toute version ultérieure). Tu peux réutiliser, modifier et redistribuer le code, à condition que toute version modifiée ou redistribuée reste elle aussi sous GPL v3 et fournisse son code source.
pnpm (npm install -g pnpm si tu ne l'as pas).| Variable | À quoi ça sert | Où l'obtenir |
|---|---|---|
STEAM_API_KEY | Lire ta bibliothèque Steam | steamcommunity.com/dev/apikey |
MISTRAL_API_KEY | Le choix des 3 jeux par l'IA | console.mistral.ai |
STEAMGRIDDB_API_KEY | Les affiches des jeux | steamgriddb.com/profile/preferences/api |
Installer les dépendances, à la racine du projet :
pnpm install
Créer ton fichier .env en copiant l'exemple fourni, puis en remplissant les valeurs :
cp .env.example .env
En plus des 3 clés ci-dessus, il faut aussi remplir :
SESSION_SECRET : une phrase secrète aléatoire d'au moins 32 caractères (sert à sécuriser la connexion). Tu peux en générer une avec openssl rand -base64 32.DATABASE_URL : l'adresse de ta base Postgres.PUBLIC_BASE_URL : l'adresse que ton navigateur utilise pour ouvrir le site en local (celle
qui gère le retour de connexion Steam), normalement http://localhost:5173 — pas le port 3000
de l'API, que le navigateur ne contacte jamais directement.VITE_GA_MEASUREMENT_ID : optionnel, mesure d'audience Google Analytics 4. Laisse vide pour
développer sans analytics. Voir "Mesure d'audience" ci-dessous pour l'obtenir.Préparer la base de données, une seule fois (crée les tables nécessaires) :
psql "$DATABASE_URL" -f back/src/db/schema.sql
Lancer le site. Il y a deux parties qui tournent séparément : la partie visible (le site, servi par Vite sur le port 5173) et la partie serveur (connexion Steam, IA..., servie par un petit serveur local sur le port 3000). Vite redirige automatiquement les appels serveur vers le port 3000, donc dans ton navigateur tu ouvres toujours http://localhost:5173, jamais le 3000 directement.
Tout lancer d'un coup (le cas normal, pour utiliser le site en entier) :
pnpm dev:full
Ouvre ensuite http://localhost:5173 dans ton navigateur.
Lancer seulement la partie visible (pratique pour retoucher juste l'affichage sans toucher au serveur) :
pnpm dev
⚠️ Sans la partie serveur en face, tous les boutons qui parlent au serveur (connexion Steam, recherche de jeux...) donneront une erreur de connexion.
Lancer seulement la partie serveur (pratique pour tester une route ou regarder ses logs sans le site) :
pnpm dev:api
Les routes sont alors disponibles directement sur http://localhost:3000/api/....
Pour savoir combien de personnes visitent le site et quelles pages elles consultent. Complètement optionnel : sans VITE_GA_MEASUREMENT_ID, le site fonctionne normalement, juste sans statistiques. Le script n'est de toute façon jamais chargé sans l'accord de la personne qui visite le site (bandeau de consentement, voir docs/01-cahier-des-charges.md section RGPD).
https://cesoirjejouea.vercel.app).G-XXXXXXXXXX. C'est la seule valeur à récupérer.VITE_GA_MEASUREMENT_ID de ton .env (en local) et dans les variables d'environnement du projet Vercel (Project Settings → Environment Variables), pour qu'il soit aussi disponible en production/preview.pnpm typecheck
pnpm build
Ces deux commandes vérifient que le code est valide et que le site se construit correctement, sans avoir besoin des clés d'API ni de la base de données.