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。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Bewegungsspiele für den Fernseher (Kurvenflitzer gratis, weitere Spiele kostenpflichtig). Das Handy ist die Kamera, der Körper ist der Controller – ohne App, ohne eigenen Server.
| Pfad | Inhalt |
|---|---|
/ | Startseite: Start, Spiele, So funktioniert’s, Deine Bewegung (Seiten über die Leiste links) |
/kurvenflitzer/ | 🏎️ Kurvenflitzer – Go-Kart-Rennen (1–4 Spieler am gleichen TV) |
/boxring/ | 🥊 Boxring – Boxen & Kickboxen (1–2 Spieler, allein gegen die KI) |
/skicross/ | ⛷️ Skicross – Ski-Rennen mit Schanzen (1–4 Spieler, KI füllt auf 4 auf) |
/controller.html?g=… | Handy-Seite für alle Spiele (Kamera, Körpererkennung, Spieler-Karten) |
js/, css/ | Gemeinsamer Plattform-Code (siehe unten) |
Gemeinsam für alle Spiele (nichts davon ist an ein Spiel gebunden):
| Datei | Aufgabe |
|---|---|
controller.html, js/controller.js, css/controller.css | Handy: Kamera, MediaPipe, mehrere Personen, Name/Figur, «Bereit». Texte je Spiel in GAMES |
js/tracker.js | Mehrere Personen in einem Kamerabild unterscheiden, Glättung, Tiefe (z) |
js/character.js, js/avatar2d.js, js/avatar3d.js | Figuren-Daten, Editor, gezeichnete Figur (2D), Chibi-Figur (3D) |
js/net.js, js/audio.js | Verbindung (PeerJS), Klänge |
css/tv.css, css/game.css | Grundstil TV, Lobby mit Spielerplätzen, Banner, Resultate |
index.html | Startseite; Spiele-Liste + Statistik je Spiel in GAMES |
Neues Spiel: eigener Ordner mit index.html + Spiel-Code, Eintrag in GAMES (Handy-Texte in js/controller.js, Statistik in index.html), Kachel auf der Startseite.
Die Verbindung läuft direkt zwischen Handy und TV (WebRTC über den kostenlosen PeerJS-Vermittlungsserver). Das Kamerabild verlässt das Handy nie.
Repo → Settings → Pages → Deploy from a branch → main / (root). Danach läuft alles unter https://<name>.github.io/<repo>/. HTTPS ist Pflicht, sonst gibt der Handy-Browser die Kamera nicht frei.
kurvenflitzer/Go-Kart-Rennen in der Ich-Perspektive. Du hältst ein unsichtbares Lenkrad vor der Brust und drehst es: Der Winkel zwischen deinen Händen ist der Lenkeinschlag. Gas gibt das Kart von selbst.
Auf der Strecke stehen vier Reihen ?-Boxen. Wer durchfährt, bekommt ein Item – aber nur 1 Item pro Runde; ab der Ziellinie gibt es wieder eins (höchstens 2 auf Vorrat, links oben angezeigt).
| Item | Wirkung beim Getroffenen |
|---|---|
| 🔀 Spiegel-Lenkung | links und rechts vertauscht (7 s) |
| ↩️ Rückwärtsgang | Kart dreht sich um, fährt rückwärts in Fahrtrichtung, Blick nach hinten, oben ein Rückspiegel zeigt die Strecke vor dir (6 s) |
| ⛔ Vollbremse | sofortiger Stillstand (ca. 2,5 s) |
| 🔧 Motorausfall | Motor aus, bis die getroffene Person 3× beide Arme über den Kopf hebt (Tastatur: ← → abwechselnd) |
Wer getroffen wurde, ist 20 Sekunden geschützt (im Menü ausgegraut; ein Wurf in dieser Zeit prallt ab und das Item kommt zurück). Über getroffenen Karts schwebt das Symbol, damit alle sehen, wen es erwischt hat. KI-Gegner sammeln und werfen auch.
Zwei Wege, auch gemischt:
Fahrer & Name: Jede erkannte Person bekommt einen Namensvorschlag und fährt sofort mit. Ändern auf dem Kamera-Handy unter Spieler: pro Person eine Karte mit Namensfeld, Fahrer-Auswahl und «Charakter genau einstellen». Wer allein spielt, wird beim nächsten Mal mit gespeichertem Namen übernommen.
Der Bildschirm teilt sich automatisch (2 = nebeneinander, 3–4 = Viertel). Wer während eines Rennens dazukommt, fährt ab dem nächsten Rennen mit.
boxring/Kampf im Ring. Die Figur folgt deinem Körper; was du Richtung Kamera machst, geht in der Figur nach vorne zum Gegner (MediaPipe liefert dafür die Tiefe).
Q/E Gerade, Z Haken, C Uppercut, W Deckung, A/D ausweichen, S Tritt, Pfeile laufen · P2 U/, , , , /, , /// laufen · bereit · / Boxen/Kickboxen · Ansichtskicross/Vier am Start, eine Piste (ca. 1,2 km) mit Steilkurven, Wellen und drei Schanzen. Kamera hinter der eigenen Figur; zu zweit geteilter Bildschirm, zu dritt/viert in Vierteln. Leere Startplätze fährt die KI.
←/→ lenken, ↓ Hocke, ↑ springen/anschieben · P2 A/D, S, W · Leertaste bereitskicross (Sekunden), skiRaces, skiWins, skiBest, Verlauf mit g: 'ski'| Teil | Wo |
|---|---|
| Kurvenflitzer gratis, Boxring und Skicross je CHF 2, Pass CHF 9 (alle Spiele + 300 Juwelen), Juwelen-Pakete | Tabelle products (Preise in Rappen), Gratis-Spiele: games.free |
| Schalter «Kaufen» (aus = alles gratis) | Admin-Seite → Verkäufe, Tabelle app_settings |
| Sperre für nicht gekaufte Spiele | js/gate.js → has_access(game), sonst kaufen.html?p=<spiel> |
| Bezahlseite | kaufen.html → Edge Function create-checkout → Stripe Checkout (TWINT, Karte, Apple/Google Pay) |
| Gutschrift | Stripe → Edge Function stripe-webhook (Signatur geprüft) → grant_purchase() |
| Rückerstattung | In Stripe ganz zurückerstatten → Webhook (charge.refunded) → revoke_purchase() entfernt Freischaltung bzw. Juwelen. Teilrückerstattungen ändern nichts. |
| Münzen | automatisch pro gespeicherter Runde (Trigger award_coins): 1 pro 30 s, max. 20 pro Runde, +10 Sieg, +5 Podest, max. 200 pro Tag |
| Münzen und Juwelen anzeigen | Profil → «Münzen und Juwelen» |
Datenbank-Änderungen liegen in supabase/migrations/, die Funktionen in supabase/functions/.
Einrichten (einmalig): In Supabase unter Edge Functions → Secrets STRIPE_SECRET_KEY und STRIPE_WEBHOOK_SECRET setzen. In Stripe einen Webhook auf https://viqonxeoaaffqigpwami.supabase.co/functions/v1/stripe-webhook mit den Ereignissen checkout.session.completed, checkout.session.async_payment_succeeded und charge.refunded anlegen und TWINT aktivieren.
Handy und TV verbinden sich direkt (WebRTC). Am zuverlässigsten ist es, wenn beide im gleichen WLAN sind.
npx serve . # oder: python3 -m http.server 8080
Am Laptop http://localhost:8080 öffnen und ein Spiel wählen. Ohne Handy: im Kurvenflitzer «⌨️ Tastatur». Für den Handy-Test braucht es HTTPS, also am einfachsten direkt über GitHub Pages.
| Teil | Bibliothek |
|---|---|
| 3D | Three.js 0.170 (CDN) |
| Körpererkennung | MediaPipe Pose Landmarker 0.10.14, Modell full (Fallback lite), läuft auf dem Handy |
| Verbindung | PeerJS 1.5.4 (WebRTC) |
| QR-Code | qrcode-generator 1.4.4 |
| Sound | eigene WebAudio-Synth (js/audio.js), keine Dateien |
Performance: Die TV-Seite reduziert automatisch Auflösung und Schatten, wenn das Gerät ruckelt. Eingebaute Smart-TV-Browser sind oft schwach. Am flüssigsten läuft es auf einem Laptop, Chromecast/Google TV oder Fire-TV-Stick.
Datenschutz: Das Kamerabild verlässt das Handy nie. Übertragen werden nur 15 Körperpunkte (x/y-Koordinaten) pro Bild.
.glb laden)?peer=host:port)OHNIJLK8456LeertasteBXV