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。 以下为已保存的摘录。
Selbst ausgedachte Spiele mit Freunden live spielen, am Handy oder Laptop. Jeder legt ein Konto an (Benutzername und Passwort), dann fügt ihr euch als Freunde hinzu. Jede Freundschaft hat ein eigenes Spielzimmer mit Punktestand und Verlauf, für mehr Leute gründet ihr eine Gruppe (bis zu sechs). Züge erscheinen sofort bei den anderen.查看完整 README ↗
Selbst ausgedachte Spiele mit Freunden live spielen, am Handy oder Laptop.
Jeder legt ein Konto an (Benutzername und Passwort), dann fügt ihr euch als Freunde hinzu. Jede Freundschaft hat ein eigenes Spielzimmer mit Punktestand und Verlauf, für mehr Leute gründet ihr eine Gruppe (bis zu sechs). Züge erscheinen sofort bei den anderen.
Dabei sind drei Beispielspiele:
| Spiel | Zeigt, wie man … |
|---|---|
| Tic-Tac-Toe | abwechselnd zieht |
| Schere, Stein, Papier | gleichzeitig und geheim wählt |
| Wie gut kennst du mich? | eigene Fragen stellt, rät und bewertet |
app/api/room).games/.vercel.json), und das macht die Züge schneller.[YOUR-PASSWORD] darin durch das Datenbank-Passwort des Projekts ersetzen. Damit legt der Deploy die Tabellen selbst an.Auf vercel.com mit GitHub anmelden: Add New → Project und dieses Repository importieren.
Unter Environment Variables eintragen:
| Name | Wert |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Project URL, z.B. https://abcd1234.supabase.co |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | Publishable key (sb_publishable_…) |
SUPABASE_SECRET_KEY | Secret key (sb_secret_…), niemals weitergeben |
DATABASE_URL | Verbindungsadresse aus Schritt 1.3 (postgresql://postgres.…@…pooler.supabase.com:5432/postgres), niemals weitergeben |
Deploy klicken. Danach habt ihr eine Adresse wie https://spielzimmer.vercel.app.
Wer Supabase über die Vercel-Integration verbindet, bekommt die Variablen automatisch. Die dort verwendeten älteren Namen (NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY) funktionieren ebenfalls, und statt DATABASE_URL wird dann POSTGRES_URL_NON_POOLING benutzt.
Jede Änderung auf dem Hauptzweig wird automatisch online gestellt. Andere Zweige bekommen eine eigene Vorschau-Adresse.
Die Tabellen entstehen aus den Dateien in supabase/migrations/, eine Datei pro Änderung, sortiert nach Datum im Dateinamen. Bei jedem Production-Deploy führt der Build die noch fehlenden Migrationen aus (scripts/migrate.js). Man muss also nie selbst SQL einfügen.
supabase_migrations.schema_migrations, derselben Tabelle, die die Supabase CLI benutzt. supabase db push funktioniert also auch.npm run migration -- kurze-beschreibung. Von Hand ausführen (mit DATABASE_URL in .env.local): npm run migrate.Hinweis: Kostenlose Supabase-Projekte werden nach etwa einer Woche ohne Nutzung pausiert. Dann im Supabase-Dashboard auf „Restore“ klicken. Die Daten bleiben erhalten.
Damit das Handy meldet „Du bist dran“, braucht der Server ein Schlüsselpaar (VAPID). Zusätzlich in Vercel eintragen:
| Name | Wert |
|---|---|
NEXT_PUBLIC_VAPID_PUBLIC_KEY | öffentlicher Schlüssel |
VAPID_PRIVATE_KEY | privater Schlüssel, niemals weitergeben |
Ein neues Paar erzeugt npx web-push generate-vapid-keys. Danach neu deployen.
Danach lässt sich das auf der Startseite unter Benachrichtigungen pro Gerät einschalten. Dort stellt jeder auch ein, worüber und von wem er benachrichtigt wird. Auf dem iPhone geht das nur in der App vom Home-Bildschirm (ab iOS 16.4). Benachrichtigt wird nur, wer die App gerade nicht offen hat.
Für das Tagesbild (neue Aufgabe um 10 Uhr, Erinnerung um 21 Uhr, Aufdecken um 23 Uhr) ruft Vercel täglich /api/cron auf (crons in vercel.json, geht auch im kostenlosen Tarif, dort irgendwann innerhalb der Stunde). Optional in Vercel CRON_SECRET eintragen (eine lange zufällige Zeichenkette): Dann nimmt /api/cron nur noch Aufrufe von Vercel an.
In Safari (oder einem anderen Browser) auf Teilen tippen und Zum Home-Bildschirm wählen. Das Spielzimmer startet dann mit eigenem Icon im Vollbild, ohne Browserleiste. Die Seite zeigt dazu auf dem iPhone selbst einen kurzen Hinweis.
Die App auf dem Home-Bildschirm hat einen eigenen Speicher, getrennt von Safari. Beim ersten Öffnen meldet man sich dort einmal an; Freunde und Punkte hängen am Konto.
Du brauchst Node.js (Version 20.9 oder neuer).
npm install
npm run dev
Dann http://localhost:3000 öffnen. Ohne Supabase-Zugangsdaten läuft ein Testmodus: Alles bleibt nur im Arbeitsspeicher, und die Browser fragen jede Sekunde nach dem neuen Stand. Zum Testen mit zwei Spielern ein zweites Browser-Fenster im privaten Modus öffnen (für Gruppen weitere Browser-Profile).
Mit echter Datenbank: .env.example nach .env.local kopieren und die Werte eintragen.
Jedes Spiel ist eine einzige Datei im Ordner games/. Mehr ist nicht nötig, die Lobby findet sie automatisch.
Weg 1, beschreiben lassen: Erzähl Claude einfach deine Idee, z.B.:
Bau ein neues Spiel: Jeder schreibt heimlich 3 Wörter auf, dann werden sie gemischt und der andere muss raten, welche von mir sind.
Die Datei CLAUDE.md erklärt Claude, wie Spiele hier aufgebaut sind, und verlangt für jedes Spiel hochwertige Animationen und eine ansprechende Optik.
Weg 2, selbst schreiben: Kopiere games/_vorlage.js nach z.B. games/mein-spiel.js und passe sie an. Die Vorlage ist ein kleines, fertiges Spiel mit Erklärungen zu jedem Teil. Mit npm run check prüfst du, ob alles passt. Nach dem Anlegen einer neuen Datei npm run dev einmal neu starten.