الفصل 20 — حلقة اللعبة وFPS وdelta time
الجزء 2أ — أساسيات اللعبة ثنائية الأبعاد · الفصل 20 من 62 · 6 س
الفصل 20 — حلقة اللعبة وFPS وdelta time
المستوى: متوسط المدة المقدّرة: 6 س المتطلبات: الفصل 19 — Flutter بسرعة للألعاب (
runApp،StatefulWidget،setState،Ticker،CustomPainter) ما ستتمكن من فعله في النهاية: كتابة حلقة لعبة كاملة بـ Dart وFlutter خالص، قياس الـ FPS، وتحريك كائن بنفس السرعة الحقيقية على كل الأجهزة بفضل الـ delta time.
20.0 — أهداف الفصل
في نهاية هذا الفصل، ستكون قادرًا على:
- شرح ما يميّز تقنيًا لعبة عن تطبيق كلاسيكي؛
- وصف مخطط إدخالات → تحديث → رسم وإعادة رسمه من الذاكرة؛
- كتابة أول حلقة لعبة في Dart console؛
- شرح لماذا يجمّد
while (true)تطبيق Flutter؛ - تعريف صورة (frame) ومعدّل الإطارات في الثانية (FPS)؛
- تحويل عدد من FPS إلى مدة إطار بالميلي ثانية، والعكس؛
- إثبات خطأ تحريك مكتوب
x += 5لكل إطار؛ - تعريف الـ delta time وكتابة
x += vitesse * dt؛ - التفكير بـ بكسلات في الثانية بدل بكسلات لكل إطار؛
- حساب
dtانطلاقًا منStopwatch؛ - استخدام
TickerوSchedulerBindingلقيادة حلقة Flutter؛ - عرض عدّاد FPS وتنعيمه بمتوسط متحرّك؛
- التعرّف على
dtشاذ بعد ذروة تأخير وتسقيفه بـclamp؛ - تنفيذ خطوة زمنية ثابتة مع مركّم (accumulateur)؛
- مقارنة الخطوة الثابتة والمتغيّرة والاختيار عن علم؛
- فصل التحديث عن الرسم والاستيفاء بين حالتين؛
- إيقاف اللعبة مؤقتًا، أو إبطاؤها، أو تسريعها بعامل زمني؛
- تسمية ما سيفعله محرّك Flame مكانك بدقة ابتداءً من الفصل 27؛
- تجميع محرّك حلقة صغير قابل لإعادة الاستخدام لكل الفصول التالية.
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش