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 ↗منصة ألعاب جماعية للجلسات: فريقين على جهاز واحد، ثمان ألعاب، وبطل واحد. اللعب يكون في نفس المكان، وصاحب الجلسة هو اللي يدير الجولات ويحكم.
| اللعبة | المعرّف في الكود | الملف |
|---|---|---|
| خمن الكلمة | word | src/components/match/WordGame.tsx |
| أسئلة وأجوبة | quiz | src/components/match/QuizGame.tsx |
| منهو ذا؟ | scramble | src/components/match/ScrambleGame.tsx |
| لف وخمن | wheel | src/components/match/WheelGame.tsx |
| إنسان حيوان نبات جماد بلاد | categories | src/components/match/CategoriesGame.tsx |
| خمن المثل | draw | src/components/match/ProverbGame.tsx |
| خمن الشعار | logo | src/components/match/LogoGame.tsx |
| خمن العلم | country | src/components/match/CountryGame.tsx |
npm install
npm run dev
بعدها افتح http://localhost:3000.
| الأمر | وش يسوي |
|---|---|
npm run dev | تشغيل نسخة التطوير |
npm run build | بناء نسخة الإنتاج |
npm test | تشغيل الاختبارات |
npm run lint | فحص الكود |
npm run format | تنسيق الكود تلقائيًا |
src/
app/
page.tsx الصفحة الرئيسية
guide/ طريقة اللعب
match/page.tsx إدارة الجلسة: الإعداد، الجولات، النتيجة
country/[id]/ صفحة العلم اللي تفتح من كود QR
person/[id]/ صفحة الشخصية اللي تفتح من كود QR
components/
SetupGame.tsx صفحة اختيار الألعاب والفرق
match/ الألعاب الثمان وواجهات الجلسة المشتركة
data/ محتوى الألعاب (أسئلة، كلمات، أمثال، شعارات...)
lib/ القواعد المشتركة
deck.ts عدم تكرار المحتوى خلال الجلسة
matchQueue.ts بناء جولات الجلسة
wordRules.ts قواعد خمن الكلمة
scoring.ts تحديد الفائز بالنقاط
qr.ts توليد أكواد QR داخل الموقع
savedMatch.ts حفظ الجلسة عند تحديث الصفحة
roundState.ts حفظ الجولة الحالية عند تحديث الصفحة
shareImage.ts صورة مشاركة النتيجة
tests/ الاختبارات
public/images/ صور الألعاب
| اللعبة | الملف | الصور | انتبه |
|---|---|---|---|
| الأسئلة | src/data/quiz/*.ts | public/images/ (اختياري) | الجواب لازم يكون مكتوب بنفس الشكل داخل الخيارات |
| خمن الكلمة | src/data/words.ts | 5 حروف، بدون همزة ولا ألف مقصورة، والتاء المربوطة عادي | |
| لف وخمن | src/data/wheel.ts | الحروف لازم تكون موجودة في كيبورد العجلة | |
| خمن المثل | src/data/proverbs.ts | public/images/proverbs/ | |
| خمن الشعار | src/data/logos.ts | public/images/logo/ | صورة مربعة بخلفية بيضاء والشعار في النص |
| منهو ذا؟ | src/data/scramble.ts | public/images/people/ | id جديد ما يتكرر |
| خمن العلم | src/data/countries.ts | public/images/flags/ | |
| إنسان حيوان | src/data/categories.ts | حرف واحد |
فئة أسئلة جديدة: أضف ملفها في src/data/quiz/، وسجّلها في meta.ts وindex.ts.
بعد أي إضافة شغّل npm test. الاختبارات تتأكد إن:
اللعبة تنباع بدفعة وحدة عن طريق ميسّر. بعد الدفع يطلع للعميل كود تفعيل
(KN-...) ينحفظ في جهازه، ويقدر يفعّل فيه أي جهاز ثاني من صفحة /unlock.
ما فيه قاعدة بيانات ولا حسابات: الكود موقّع، والموقع يتحقق منه بدون ما يحفظ شي.
القفل مطفي افتراضيًا، يعني الموقع مجاني لين تضبط المتغيرات وتشغّله.
| المتغير | وش هو |
|---|---|
PAYWALL_ENABLED | true يشغّل القفل على صفحة اللعب |
LICENSE_SECRET | سر توقيع أكواد الشراء، نص عشوائي طويل وما يتغير أبدًا |
GIFT_SECRET | سر أكواد الإهداء، تغييره يلغي كل أكواد الإهداء القديمة |
ADMIN_PASSWORD | كلمة مرور صفحة /admin/gifts |
MOYASAR_PUBLISHABLE_KEY | المفتاح العام من لوحة ميسّر (pk_...) |
MOYASAR_SECRET_KEY | المفتاح السري من لوحة ميسّر (sk_...)، ما ينشارك مع أحد |
RESEND_API_KEY | اختياري: لإرسال الكود بالإيميل |
EMAIL_FROM | اختياري: الإيميل اللي ينرسل منه الكود |
NEXT_PUBLIC_SITE_URL | اختياري: رابط الموقع الأساسي |
توليد سر عشوائي:
openssl rand -base64 32
السعر في src/lib/pricing.ts، ورابط الموقع وبيانات التواصل في src/data/site.ts.
أكواد الإهداء: افتح /admin/gifts، اكتب كلمة المرور، واختر المدة.
مع كل Pull Request وكل دمج في main، يشغّل GitHub بالترتيب:
فحص التنسيق، ثم الـlint، ثم الاختبارات، ثم البناء
(.github/workflows/ci.yml). لو فشل أي واحد منها يطلع ❌ قبل الدمج.
الموقع يشتغل على Vercel أو Cloudflare.
Vercel: أي دمج في main ينشر النسخة الجديدة تلقائيًا.
Cloudflare Workers: الإعدادات في wrangler.jsonc وopen-next.config.ts.
| الإعداد في Cloudflare | القيمة |
|---|---|
| Build command | npx opennextjs-cloudflare build |
| Deploy command | npx opennextjs-cloudflare deploy |
| Variables and Secrets | نفس متغيرات قسم الدفع والتفعيل |
تجربة نسخة Cloudflare محليًا: حط المتغيرات في .dev.vars وشغّل npm run cf:preview.