عن المشروع

singedTerra هي لعبة مدفعية تعتمد على الأدوار وتعمل عبر المتصفح، مكتوبة من الصفر بلغة TypeScript، وتقدم كتكريم للعبة Scorched Earth (1991) التي صممها Wendell Hicken. تحافظ اللعبة على الحلقة الكلاسيكية: اختر الزاوية، اقرأ الرياح، حدد قوة الإطلاق، ثم أطلق النار، بينما تسجل التضاريس النتائج. يمكن لعبها كمباراة hot-seat لـ 2-4 لاعبين في متصفح واحد أو عبر الإنترنت من خلال غرف Supabase العامة والخاصة. الميكانيكيات الأساسية: التضاريس عبارة عن bitmap لكل بكسل؛ حيث تحفر الانفجارات ثقوباً حقيقية، وتنهار الأرض غير المدعومة، وتستقر الدبابات في الفوهات، ويمكن للأسلحة من نوع التربة بناء غطاء جديد. يتم تحديد كل جولة ببذرة (seed) وتتلقى كل دورة متجه رياح حتمي (deterministic wind vector)، لذا يحل كل عميل نفس مسار الرحلة. تغطي ستة عشر سلاحاً الإطلاق المباشر، والانفجارات الجوية، والمتفجرات المرتدة، والنابالم، وبناء التضاريس، وحفر الأنفاق والدفاع. يستهلك التحرك الوقود، وتكسب الأضرار أرصدة يجب تقسيمها بين الذخيرة والدروع والبطاريات والوقود عبر مباريات متعددة الجولات. يتضمن العرض دبابات مصممة، وساحة معركة وقت الغسق، وأدوات باليستية، وإضاءة تأثيرات الاصطدام، واهتزاز الشاشة وصوتاً تركيبياً. مرآب الدبابات: يمتلك كل لاعب مرآباً (Garage)؛ حيث يبدأ اللاعبون من هياكل Foundry أو Ranger أو Bulwark أو Jackal ويجمعون بين أجزاء الحركة والهيكل والبرج والسبطانة لإنشاء مظهر مخصص، يظهر في معاينة القائمة وينتقل إلى المباراة. الأنماط وشبكة الاتصال: تستخدم المقاعد التي يتحكم فيها الكمبيوتر نفس الفيزياء الحتمية التي يستخدمها اللاعبون البشر، ولا تستخدم أنماط hot-seat واللعب عبر الإنترنت فيزياء مختلفة. يعمل نمط hot-seat المحرك المشترك مباشرة في المتصفح عبر HotSeatClient. أما بالنسبة للعب عبر الإنترنت، فيقوم كل متصفح بتشغيل نسخته الخاصة من نفس المحرك: يقوم Supabase بالتحقق من إجراءات الغرفة، وتعيين أرقام التسلسل، وتخزين السجل المرتب وبث الصفوف المعتمدة عبر Realtime. المباراة عبر الإنترنت هي عبارة عن بذرة (seed) بالإضافة إلى سجل إجراءات مرتب؛ يتم إعادة بناء حالة اللعبة محلياً بدلاً من بثها من خادم تكتيكي، مما يجعل الخطوات الزمنية الثابتة والعشوائية المحددة ببذرة وتكافؤ الإعادة جزءاً من عقد التصميم. عناصر التحكم: تستخدم مفاتيح الأسهم لتوجيه السبطانة ورفع أو خفض القوة؛ ومفتاحا A و D للتحرك واستهلاك الوقود؛ ومفتاح Q للتنقل بين الأسلحة المختارة؛ ومفتاح Space أو Enter للإطلاق أو تفعيل الدرع المختار؛ ومفتاح G لتبديل توجيه المسار؛ ومفتاح M لكتم أو استعادة الصوت التركيبي؛ والضغط المطول على F لتسريع الطلقة الحالية محلياً. تستبدل تخطيطات اللمس لوحة المفاتيح بـ Command Deck مجمع يغطي التوجيه والقوة والقيادة، بينما تكون الأسلحة والقائمة أدوات مساعدة، وتبقى خيارات الإطلاق والتخزين والوقود والترسانة في السكة التكتيكية. على سطح المكتب، يؤدي السحب للخارج من الدبابة النشطة إلى تحديد الزاوية والقوة دون إطلاق النار. التشغيل والتحقق: يتطلب المشروع Node 24.15 أو أحدث ضمن خط Node 24 LTS، بالإضافة إلى npm؛ حيث يقوم الأمر npm install متبوعاً بـ npm run dev بتشغيل عميل Vite على localhost:5173، ولا يحتاج لعب hot-seat إلى تكوين خلفي. يتطلب اللعب عبر الإنترنت VITE_SUPABASE_URL و VITE_SUPABASE_ANON_KEY في ملف client/.env؛ ومن المتوقع أن يتم شحن المفتاح المجهول (anon key) في العميل العام، بينما تحمي Row-Level Security والتحقق من Edge Function البيانات على جانب الخادم. تشمل أوامر التحقق npm run check (التحقق من النوع بالإضافة إلى أحزمة المحرك الحتمي)، و npm run test:client (اختبارات Vitest للعميل و DOM)، و npm run check:edge (اختبارات Deno لـ Supabase Edge Functions)، و npm run test:e2e (فحوصات تخطيط Chromium وأسلوب اللعب في الإنتاج) و npm run build. تقوم CI بتشغيل نفس البوابات الأساسية في كل طلب سحب (pull request)، ويجب أن تحافظ التغييرات تحت shared/src/engine/ على إعادة التشغيل الحتمية. تخطيط المستودع والتوثيق: يحتوي مجلد client/ على تطبيق Vite، ومصيِّرات Canvas، و HTML HUD، والمدخلات والردهة؛ ويحتوي shared/ على المحرك الحتمي ومنطق إعادة التشغيل والأنواع المشتركة؛ ويحتوي supabase/ على ترحيلات Postgres ومحكمي Edge Function عديمي الحالة؛ ويحتوي scripts/checks/ على أحزمة المحرك الحتمي والعقود؛ ويحتوي e2e/ على ضمانات أسلوب اللعب والتخطيط في متصفح الإنتاج؛ ويحتوي docs/ على سجلات اللاعب والبنية والتطوير والمشروع. يغطي التوثيق اللعب والبنية والتطوير والعمليات ونظام واجهة المستخدم والمواصفات الحالية. المشروع مرخص بموجب رخصة MIT وغير تابع لمؤلفي Scorched Earth الأصليين أو مدعوم منهم.