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,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Dieses Projekt ist ein kleines Spiel im Browser: eine Private-Equity-Simulation auf Deutsch. Man spielt einen Investmentfonds gegen vier computergesteuerte Fonds über mehrere Spieljahre. Damit das Spiel im Internet aufrufbar ist (z. B. über Vercel), steckt es in einem sogenannten "Next.js-Projekt". Das ist im Grunde nur ein Ordnergerüst, das dafür sorgt, dass eine Webseite daraus gebaut werden kann.查看完整 README ↗
Dieses Projekt ist ein kleines Spiel im Browser: eine Private-Equity-Simulation auf Deutsch. Man spielt einen Investmentfonds gegen vier computergesteuerte Fonds über mehrere Spieljahre.
Damit das Spiel im Internet aufrufbar ist (z. B. über Vercel), steckt es in einem sogenannten "Next.js-Projekt". Das ist im Grunde nur ein Ordnergerüst, das dafür sorgt, dass eine Webseite daraus gebaut werden kann.
components/PeLeagues.tsx
Das ist das eigentliche Spiel. Die komplette Spiellogik, alle Formeln,
Zahlen und die Oberfläche stecken in dieser einen Datei. Sie wurde 1:1 aus
der ursprünglichen Datei pe-leagues-mvp7.tsx übernommen — an der Logik
wurde nichts verändert.
components/pel/battle.tsx
Die visuelle Identität der Unternehmenskarten in Dealflow und Portfolio
("Battle Cards"), auf zwei Ebenen. Der Sektor trägt eine Farbe (SECCOLOR
in lib/engine/engine.ts), ein Wappen und eine Bildszene — Serverreihe für
Software, Doppelhelix für Healthcare, Roboterarm für Industrials, Flasche mit
Botanik für Consumer, Standortnetz für Services. Das einzelne Unternehmen
bekommt daraus
eine eigene Ausprägung: Farbton innerhalb der Sektorfamilie, Bildvariante und
Hintergrundmuster, alles aus dem Firmennamen abgeleitet und damit über die ganze Partie stabil — zwei Ziele desselben
Sektors sehen verwandt aus, aber nicht gleich. Dazu die Bausteine der Karte
(Kopfbereich, Kopfzahlen, Kennzahlenzeile, Abschnitte, Messbalken,
Netzdiagramm) und ihre Stilregeln. Die Datei enthält ausschließlich
Darstellung; welche Zahl wann sichtbar ist, entscheidet weiterhin
components/pel/ui.tsx, gerechnet wird in lib/engine/.
public/sektoren/
Die Fotos, die der Kartenkopf im Dealflow und im Portfolio zeigt. Der Ordner
ist leer ausgeliefert: Solange für einen Sektor kein Motiv hinterlegt und in
PHOTO_VARIANTS gezählt ist, zeichnet die Karte ihre Szene selbst. Wie ein
Motiv beschaffen sein muss und wie man es einhängt, steht in
public/sektoren/README.md.
docs/prompts/kartenbilder.md
Die Bildprompts für die fünf Sektormotive — Claude erzeugt keine
Rasterbilder, sie entstehen in einem Bildmodell — samt der technischen
Vorgaben, ohne die ein Motiv in der Karte nicht funktioniert (dunkel,
Lichtquelle oben rechts, Motiv in der rechten Bildhälfte). Im zweiten Teil
der Arbeitsauftrag für die gezeichneten Szenen, die zu sehen sind, solange
kein Foto hinterlegt ist.
public/kulisse/
Das Motiv hinter Startseite und Anmeldung — eine einzelne Datei,
eingang.webp (941 × 1672, 113 KB). Fehlt sie, bleiben die beiden Verläufe
über dem Grundton stehen, die Seite sieht dann gewollt aus und nicht nach
einem kaputten Bild. Anleitung in public/kulisse/README.md, der Bildprompt
in docs/prompts/eingangsbild.md.
docs/reality-checks.md
Der Fragenkatalog aus der Durchsicht durch einen Corporate-Finance- und
PE-Praktiker: achtzehn Prüfungen an der Spiellogik (Covenant-Basis, IRR,
Value Bridges, Carry-Wasserfall, Gebühren, Managementbeteiligung,
Zinsschranke …), je mit Befund im Code und der Korrektur, die daraus folgte.
Jeder Punkt ist in lib/engine/__tests__/realityChecks.test.ts festgehalten.
app/access/page.tsx, app/onboarding/, lib/access/context.ts
Die Zugangskontrolle. Wer sich neu registriert, beantragt unter
/onboarding einen Zugang (Anzeigename + optionale Nachricht) und wartet
danach auf /access, bis ein Administrator ihn freigibt und ihm ein oder
mehrere Universen zuteilt. Erst dann führt die Anmeldung ins Spiel;
lib/access/context.ts ist die gemeinsame Schranke aller Spielseiten.
Ausführlich beschrieben ist das in supabase/README.md.
app/confirm-email/
Hilfeseite für den Fall, dass der Bestätigungslink aus der Registriermail
nicht mehr greift (er gilt nur einmal und wird von manchen Mail-Programmen
schon beim Anzeigen verbraucht). Sie erklärt, dass das Konto in aller Regel
trotzdem bestätigt ist, führt zur normalen Anmeldung und verschickt auf
Wunsch einen neuen Link.
app/admin/
Der Admin-Bereich: Partien, Nutzer samt Freigaben und Universen. Universen
sind voneinander getrennte Spielwelten (zu Beginn Test und Live, beliebig
erweiterbar) — Partien und Ranglisten des einen sind im anderen
unsichtbar.
app/page.tsx
Die Startseite. Sie macht nichts anderes, als das Spiel aus
components/PeLeagues.tsx anzuzeigen. Wer die Webseite öffnet, landet
hier.
app/layout.tsx
Das "Grundgerüst" jeder Seite (z. B. der <html>-Rahmen und der
Seitentitel im Browser-Tab).
app/globals.css
Ein paar ganz grundlegende Stil-Einstellungen (z. B. dass die Seite die
volle Bildschirmhöhe nutzt). Die eigentliche Gestaltung des Spiels
(Farben, Schriftarten, Layout) steckt direkt in components/PeLeagues.tsx
und wird von dort geladen — inklusive der Schriftarten, die sich das Spiel
selbst aus dem Internet lädt (Google Fonts).
public/
Ordner für Dateien, die direkt und unverändert ausgeliefert werden (aktuell
nur das Browser-Icon "favicon.ico").
package.json
Liste aller Zusatz-Bausteine ("Abhängigkeiten"), die das Projekt braucht,
z. B. Next.js selbst, React und lucide-react (eine kleine Bibliothek für
die Icons, die im Spiel verwendet werden).
tsconfig.json, next.config.ts, eslint.config.mjs
Technische Einstellungsdateien für das Projekt-Gerüst. Da die
Original-Spieldatei nicht durchgehend "typisiert" ist (ein Merkmal der
Programmiersprache TypeScript), wurde die Typprüfung bewusst locker
eingestellt, damit sie den Bau der Seite nicht blockiert.
.gitignore
Liste von Dateien und Ordnern, die nicht mit ins Projekt-Archiv (Git)
aufgenommen werden sollen — vor allem automatisch erzeugte Dateien, z. B.
aus node_modules (heruntergeladene Zusatz-Bausteine) oder .next
(Bau-Ergebnisse).
Falls jemand das Spiel auf dem eigenen Rechner ausprobieren möchte:
npm install
npm run dev
Danach ist die Seite unter http://localhost:3000 erreichbar.
Das Projekt ist so aufgebaut, dass Vercel (ein Anbieter zum Veröffentlichen von Webseiten) es ohne weitere Einstellungen erkennt und bauen kann. Es reicht, das Repository dort zu verbinden.