تتريس المثالي الخاص بي
ما هذا
تتريس هي لعبة أسطورية وأستمتع بها كثيرًا. أنا أحب اللعبة حقًا وأستمتع بلعبها. إنها ممتازة لتخفيف التوتر. لمشروع عطلة نهاية أسبوع ممتع، قررت بناء اللعبة كلعبة/تطبيق ويب مصمم لكل من سطح المكتب والهاتف المحمول، باستخدام مبادئ البرمجة على المزاج (vibe coding). الجانب المحمول من هذه النسخة استلهمته من Play-Tetris، الذي يملك إعدادًا محمولًا رائعًا مع عناصر تحكم قائمة على السحب. تحقق ولعب تنفيذي لتتريس هنا، إنه ما أعتقد أنه النسخة الأكثر “مثالية” من تتريس.
ما وراء الشفرة
لم أبدأ ببناء نسخة من تتريس كمشروع لمحفظة الأعمال أو لتعلم شيء جديد. بنيتها لأنني كنت بحاجة لها فعلًا. عندما أكون متوترًا، سواء كان أسبوعًا صعبًا في العمل أو مجرد تكدس الحياة، تتريس هي واحدة من الأشياء القليلة الصحية التي تساعدني فعلاً على إعادة التوازن. عندما أكون متوترًا أميل إلى الأكل كثيرًا، مما يتراكم مع الوقت، لذا وجود شيء يعمل دون أي آثار جانبية يعد أمرًا مهمًا لي. مجرد 10 إلى 30 دقيقة من إسقاط القطع تجعل عقلي يشعر وكأنه قد تم تنظيفه قليلًا. ليست مجرد استرخاء عابر بالنسبة لي، بل وسيلة للحصول على شيء بسيط ومركز لأفرغ فيه ذلك التوتر. هناك أيضًا بعض الأبحاث الرائعة التي تُظهر أن تتريس يمكن أن يؤثر على كيفية تعامل الدماغ مع الذكريات التدخلية والتوتر، على سبيل المثال في تجارب أفلام الصدمة، عند أشخاص عولجوا بعد حوادث حقيقية، وكمكمل للعلاج مع تغييرات دماغية قابلة للقياس. لست أحاول تحويل هذه اللعبة إلى علاج طبي، لكن من الرائع رؤية أن هناك علمًا حقيقيًا قد يدعم ما أشعر به بالفعل، بأن تتريس يمكن أن يساعد الناس فعليًا في التعامل مع التوتر.
لذلك بحثت عن نسخة جيدة من تتريس لألعبها، والمشكلة كانت أنه لا شيء هناك يناسب حقًا طريقة لعبي. تطبيقات الهاتف على متجر iOS مليئة بالإعلانات والمعاملات الصغيرة. نسخ الويب كانت متأخرة أو تشعر بالسوء على الهاتف. النسخة الكلاسيكية على NES رائعة لكنها تحتاج إلى محاكي وأجهزة إضافية. حتى أنني اشتريت Miyoo Mini معتقدًا أنها ستحل المشكلة، وكل ما انتهى بي الأمر إليه هو حمل جهاز ثانٍ فقط للعب تتريس. في مرحلة ما أدركت أنني أمضيت وقتًا في البحث عن النسخة المناسبة أكثر مما سيستغرقه بناء واحدة بنفسي.
مع المتصفحات الحديثة، وأدوات LLM مثل Claude Code، وسير العمل مثل البرمجة على المزاج، شعر الأمر أخيرًا أنه الوقت المناسب لبناء التتريس الذي أردته بنفسي. سريع، بسيط، بدون إعلانات، بدون حسابات، لا متجر تطبيقات. مجرد لعبة متصفح تعمل على هاتفي وحاسوبي المحمول وأتحكم بها بالكامل. خلال حوالي يوم كان لدي نسخة عاملة، وبعد حوالي أسبوع من العمل المتقطع لجعلها متينة والحصول على الإحساس الصحيح على كل من سطح المكتب والمحمول، كنت راضيًا عنها.
أشاركها لأنه إذا ساعدت حتى شخصًا واحدًا آخر على التخلص من التوتر بالطريقة التي تساعدني، فسيجعلني ذلك سعيدًا جدًا. إنها شيء صغير، لكن أحيانًا الشيء الصغير هو بالضبط ما تحتاجه.
الميزات
- لوحة تتريس كلاسيكية بحجم 10x20
- عناصر تحكم كاملة عبر لوحة المفاتيح على سطح المكتب وعناصر تحكم بالإيماءات باللمس على المحمول
- مولد قطع عشوائي بنظام الحقيبة السباعية القياسي
- احتفاظ بالقطعة ومعاينات القطع القادمة
- إسقاط ظِلّي للقطعة يظهر أين ستهبط القطع
- منحنى سرعة معتمد على المستوى مع تأخير قفل ديناميكي
- تتبع النقاط، الأسطر، المستوى، وأعلى نتيجة محفوظة في التخزين المحلي
- تسجيل نقاط للهبوط الناعم والهبوط الفوري
- قائمة داخل اللعبة مع استئناف، إعادة تشغيل، خروج، كتم الموسيقى/التأثيرات الصوتية، ورابط شفرة المصدر
- حركة وميض عند مسح السطر مع تأثير صوتي
- دعم مناطق الأمان في iOS (الجزيرة الديناميكية، الشق، مؤشر العودة)
- دعم بدون اتصال عبر Service Worker (يعمل بدون إنترنت بعد الزيارة الأولى)
- قابل للتثبيت كتطبيق ويب تقدمي (أضف إلى الشاشة الرئيسية على iOS/Android لتجربة تشبه التطبيق)
عناصر التحكم
سطح المكتب (لوحة المفاتيح)
| الإجراء | المفاتيح |
|---|---|
| تحريك | ← → أو A D |
| هبوط ناعم | ↓ أو S |
| هبوط فوري | Space |
| تدوير باتجاه عقارب الساعة | ↑ W X |
| تدوير عكس عقارب الساعة | Z |
| احتفاظ | C أو LShift |
| القائمة | Esc أو M |
| رمز المصدر | G (شاشة العنوان) |
المحمول (اللمس)
| الإجراء | الإيماءة |
|---|---|
| تحريك | مرر يسار / يمين |
| هبوط ناعم | اضغط مع السحب لأسفل |
| هبوط فوري | دفعة سريعة لأسفل |
| تدوير باتجاه عقارب الساعة | اضغط |
| احتفاظ | دفعة سريعة لأعلى |
منحنى الصعوبة
تم ضبط منحنى السرعة وتأخير القفل في هذه النسخة باستخدام أبحاث حول كيفية تعامل ألعاب تتريس الكلاسيكية والحديثة مع تقدم الصعوبة. في تتريس على NES الأصلي, تصل الجاذبية إلى صف واحد لكل إطار عند المستوى 29، مما أصبح ما يُعرف بـ“شاشة القتل” حيث تصبح اللعبة غير قابلة للّعب فعليًا لمعظم البشر. لم يكن ذلك حقًا نهاية مصممة، بل كان أكثر نتيجة جانبية للعتاد وطريقة عمل DAS (التزحزح التلقائي المؤجل) الذي كان بطيئًا جدًا لمجاراة سرعة الهبوط. أثبت ويليس جيبسون ذلك في 2024 عندما تخطى ذلك وحطم اللعبة عند المستوى 157.
الألعاب الحديثة مثل TGM (Tetris: The Grand Master) حلت هذا بشكل مختلف. بدلًا من جعل القطع تسقط بشكل أسرع حتى تنهار اللعبة، يحدد TGM الجاذبية عند 20G (هبوط فوري) ثم يشد نوافذ التوقيت الأخرى مثل تأخير القفل وDAS لزيادة الصعوبة. معيار إرشادات تتريس يستخدم تأخير قفل 500ms مع ما يصل إلى 15 إعادة تعيين للحركة، وهو ما تتبعه هذه النسخة. أظهرت الأبحاث في وضع الموت في TGM2 وTGM3 Shirase أن الحد العملي للعب التنافسي هو حوالي 250ms من تأخير القفل مع DAS سريع، بينما أي شيء أقل من 133ms يكون لمتخصصين محددين.
بناءً على كل هذا، يحدد منحنى السرعة هنا الجاذبية عند 33ms لكل صف (مماثل لمستويات NES من 19 إلى 28) بدلًا من الوصول إلى الهبوط الفوري، ويتدرج DAS من 170ms إلى 100ms على المستويات العليا حتى تتمكن من التجول في اللوحة أثناء تأخير القفل. الهدف كان جعل المستويات العالية تبدو سريعة بشدة لكن عادلة، أقرب إلى كيف تتعامل Tetris 99 وTGM مع صعوبة نهاية اللعبة بدلاً من منهج NES الأصلي القائم على السماح للسرعة الخام بتجاوز مدخلاتك.
تحت الغطاء
- تصميم متجاوب محسّن لكل من سطح المكتب والمحمول (الوضع الرأسي)
- سبرايتات قطع وخلفية شبكة مُعدة مسبقًا للأداء
- يستخدم نظام التدوير الفائق (SRS) لنوافذ ارتداد الحائط عند تدوير القطع
- كشف إيماءات اللمس قائم على السرعة لتمييز موثوق بين الدفعة والجرّ
- نظام توقيت معتمد على المستويات لسرعة الجاذبية وتأخير القفل
- أعلى النتائج وإعدادات الصوت محفوظة في
localStorage - مصدر الموسيقى الخلفية NmCCQxVBfyM
- مصدر تأثير صوت مسح السطر UMViM2tHrOk
- المشروع مفتوح المصدر بالكامل بموجب ترخيص MIT
- بُني باستخدام أدوات الذكاء الاصطناعي التالية:
- Claude Code CLI - البرمجة/التطوير
- Gemini CLI - البرمجة/التطوير
- Cha CLI - البرمجة والكتابة
- xAI Grok - الشعارات والرموز
- Perplexity - البحث عن الأخطاء
- بحث جوجل - العثور على SVGs وأصول أخرى
- YouTube + yt-dlp - الحصول على مقاطع صوتية
- FFmpeg - تحرير ملفات الصوت
أفكار ختامية
كان هذا أحد تلك المشاريع التي لم يكن الدافع لها تقنياً، بل كان شخصياً. كنت أريد فقط نسخة من تتريس تعمل بالطريقة التي أريدها، بدون إعلانات، وبدون أجهزة إضافية، وبدون الاعتماد على تطبيق شخص آخر قد يختفي أو يتغير في أي وقت. حقيقة أنني تمكنت من الانتقال من فكرة إلى لعبة مصقولة في حوالي أسبوع من العمل المتقطع باستخدام أدوات الذكاء الاصطناعي الحديثة وبرمجة الإحساس تقول الكثير عن المكان الذي وصلنا إليه الآن في تطوير البرمجيات.
لقد كنت أستخدم هذه النسخة تقريباً يومياً منذ أن أنشأتها، ولا تزال تفعل بالضبط ما أحتاجه أن تفعله. تساعدني على الابتعاد عن أي شيء يسبب لي التوتر، والتركيز على شيء بسيط لبضع دقائق، والعودة بذهن أكثر صفاءً. إذا جربتها وفعلت الشيء نفسه معك، فذلك أفضل نتيجة يمكن أن أطلبها. وإذا أردت استنساخها، أو تعديل منحنى السرعة، أو تغيير عناصر التحكم، أو البناء فوقها، افعل ذلك. إذا وجدت خطأً أو كان لديك اقتراح، فلا تتردد في فتح مشكلة على مستودع جيت هاب. هذه هي الفكرة كلها من جعلها مفتوحة المصدر.