تتعلّم أساسيات صناعة لعبة ثنائية الأبعاد بمحرك Godot المجاني — حلقة اللعبة، الشخصيات، الحركة، التصادم، النقاط، الواجهة، الصوت، واللمسات الأخيرة — وتخرج بلعبة مصغّرة جاهزة للنشر على itch.io.
كيف تدرس هذا المسار؟
حمّل Godot المجاني وافتح المشروع التجريبي.
اقرأ كل درس وطبّق الكود في المحرر.
نفّذ المهمة — كل درس يقربك من لعبتك.
أكمل الاختبار — التقدّم يُحفظ على جهازك.
محتوى أصلي من Mesue Learn — عملي ومناسب لسن +12 وما فوق.
1. حلقة اللعبة — كيف «تفكر» اللعبة كل ثانية
الهدف: تفهم Input → Update → Render قبل فتح المحرك.
كل لعبة — حتى البسيطة — تعيد نفس الدورة مراراً:
1) Input — اللاعب يضغط زراً أو يحرّك الماوس
2) Update — الكود يحدّث المواقع والنقاط والحالة
3) Render — الشاشة ترسم الإطار الجديد
هذه هي Game Loop. بسرعة 60 إطاراً في الثانية (FPS) تبدو الحركة سلسة.
في Godot:
• المشهد (Scene) = ملف يصف جزءاً من اللعبة (لاعب، عدو، قائمة)
• العقدة (Node) = قطعة بناء — Sprite2D، CharacterBody2D، Label...
• السكربت (GDScript) = منطق اللعبة بلغة تشبه Python
Godot مجاني ومفتوح المصدر — حمّله من godotengine.org. اختر Standard (ليس .NET) للمبتدئين.
Game Loop = إدخال → تحديث → رسم — بلا توقف
FPS أعلى = حركة أنعم (هدف شائع: 60)
Scene + Node = طريقة Godot لتنظيم اللعبة
GDScript سهل للمبتدئين 12+
صورة ذهنية
[Input]
|
v
[Update] ← GDScript
|
v
[Render] → الشاشة
|
└── (تكرار كل إطار)
مختبر: حلقة على الورق
ارسم 3 إطارات متتالية: أين اللاعب؟ أين العملة؟ ماذا يتغيّر في كل إطار؟
مهمة عملية
اشرح لصديق في 4 جمل: ما الفرق بين Update و Render؟
اختبر فهمك
حلقة اللعبة (Game Loop) تعني أساساً...
2. الرسوم والمشاهد — Sprite2D وأول مشهد
الهدف: تنشئ مشروع Godot وتعرض صورة 2D على الشاشة.
1) New Project → اسم: mesue-mini-game
2) Renderer: Forward+ أو Mobile حسب جهازك
3) احفظ المشروع في مجلد واضح
أول مشهد:
• Scene → 2D Scene → سمِّ الجذر Player
• Add Child → Sprite2D
• في Inspector: Texture → اسحب صورة PNG (32×32 أو 64×64 للبداية)
مصادر رسوم مجانية:
• kenney.nl (حزم CC0)
• opengameart.org
• ارسم بنفسك في Piskel (مجاني)
اجمع عملة — هل يتحدث الرقم فوراً؟ أضف شريط وقت 60 ثانية.
مهمة عملية
ابنِ HUD يعرض النقاط والحياة — يتحدث عند كل تغيير في GameState.
اختبر فهمك
أي عقدة تضمن أن الواجهة فوق رسوم اللعبة؟
7. الصوت — مؤثرات وإحساس اللعب
الهدف: تضيف جمع عملة، خسارة حياة، وموسيقى خلفية اختيارية.
مؤثر قصير (SFX):
• AudioStreamPlayer على اللاعب أو المشهد
• Import ملف .ogg أو .wav (صغير < 100KB للمؤثر)
• عند جمع عملة:
.play()
موسيقى خلفية:
• AudioStreamPlayer موسيقى — Autoplay — يمكن Loop من Import
• مسار منفصل للصوت: Master → Music و SFX في Audio Bus (اختياري متقدم)
مصادر مجانية:
• freesound.org (تحقق من الترخيص)
• kenney.nl/audio
لا ترفع الصوت فجأة — اختبر سماعات وسماعة الجوال. زر كتم في القائمة لاحقاً يقدّر اللاعبون.
AudioStreamPlayer للمؤثرات والموسيقى
play() في لحظة الحدث — تصادم، قفز، فوز
ملفات OGG أخف للموسيقى الطويلة
الصوت نصف تجربة اللعب — لا تهمله
صورة ذهنية
[Coin collected]
|
v
[AudioStreamPlayer.play()]
|
v
سماعة اللاعب
مختبر: صوتان
مؤثر جمع + مؤثر game over — هل يتداخلان؟ خفّض Music Bus إن لزم.
مهمة عملية
أضف صوت جمع عملة وصوت خسارة حياة — شغّلهما في اللحظة الصحيحة.
اختبر فهمك
متى تشغّل مؤثر الصوت في Godot؟
8. اللمسات — جزيئات، اهتزاز، وإحساس «لعبة حقيقية»
الهدف: تضيف game juice بسيط: وميض، جزيئات، شاشة هزّ عند الضرر.
Game Juice = تغذية راجعة صغيرة تجعل اللعب ممتعاً:
• عند جمع عملة: كبّر Sprite مؤقتاً (Tween scale 1.0 → 1.2 → 1.0)
• GPUParticles2D عند الاختفاء — نجوم صفراء قليلة
• Camera2D + shake: حرّك offset عشوائياً 0.1 ثانية عند الضرر
• Tween (Godot 4): create_tween().tween_property(sprite, "scale", Vector2(1.1,1.1), 0.05)
شاشة البداية:
• مشهد menu.tscn — زر Play → change_scene_to_file("main.tscn")
اختبر مع صديق 5 دقائق — راقب أين يمل أو يضحك. اللمسات الصغيرة فرق كبير.
Tween لحركات سلسة بدون تعقيد
جزيئات بسيطة = احتفال عند الجمع
قائمة بداية تجعل المشروع «لعبة» لا مجرد مشهد
اختبر مع لاعب حقيقي
صورة ذهنية
[حدث: جمع]
|
+---+---+
v v
Tween Particles
|
v
«حسّيت بالجائزة!»
مختبر: juice واحد
اختر: اهتزاز كاميرا أو جزيئات عملة — نفّذ واحداً كاملاً قبل إضافة الثاني.
مهمة عملية
أضف قائمة بداية + تأثير بصري عند جمع العملة (Tween أو Particles).
اختبر فهمك
«Game juice» يعني غالباً...
9. التصدير والنشر — itch.io للعالم
الهدف: تصدّر لعبتك لـ HTML5 أو Windows وتنشر صفحة itch.io.
تصدير Godot:
• Project → Export → Add → Windows Desktop أو Web
• للويب: Export HTML5 — قد تحتاج قالب export templates من الموقع
• Export Project → مجلد build/
itch.io (مجاني):
1) حساب على itch.io
2) Create new project
3) Kind: HTML أو Windows
4) ارفع ملف ZIP للويب (index.html + .pck + .wasm) أو .exe
5) اختر Embed في الصفحة للـ HTML5
6) صورة غلاف 630×500 + وصف عربي/إنجليزي قصير
7) Visibility: Public أو Draft للاختبار
اكتب في الوصف: «صُنعت مع Godot — مسار Mesue Learn»
تحذير: لا ترفع مشروعاً فيه أصول بدون ترخيص.
صدّر إلى مجلد build نظيف
itch.io منصة مجانية مناسبة للألعاب المصغّرة
HTML5 يعمل في المتصفح — سهل المشاركة
غلاف ووصف يزيدان النقرات
صورة ذهنية
[Godot Project]
|
Export
|
v
[build/ zip]
|
v
[itch.io page] → رابط للعالم
مختبر: رفع Draft
ارفع كـ Draft أولاً — افتح الرابط من جوال وكمبيوتر — هل تعمل؟
مهمة عملية
صدّر اللعبة وارفعها itch.io (Draft أو Public) مع غلاف ووصف.
اختبر فهمك
لنشر لعبة Godot في المتصفح غالباً تصدّر إلى...
10. المشروع النهائي — لعبة مصغّرة كاملة
الهدف: تسلّم لعبة 2D playable مع نقاط، حياة، واجهة، صوت، ونشر itch.io.
المطلوب: لعبة جمع أو هروب بزمن محدود (60–90 ثانية)
الحد الأدنى:
• لاعب يتحرك بـ WASD/أسهم
• 5+ عملات أو أهداف قابلة للجمع
• عائق أو عدو واحد على الأقل
• GameState: score + lives (أو وقت)
• HUD: نقاط + حياة أو مؤقت
• صوتان: جمع + خسارة/فوز
• قائمة بداية + شاشة Game Over
• لمسة polish واحدة (Tween/جزيئات/اهتزاز)
• رابط itch.io يعمل
معيار النجاح:
✓ صديق يلعب دقيقتين دون شرح مطوّل
✓ لا أخطاء حمراء في Output
✓ README.txt: كيف تلعب + أصول مستخدمة
✓ فخور بمشاركة الرابط
لعبة كاملة > مشهد تجريبي
README يوثّق الأصول والتراخيص
رابط itch.io جزء من التسليم
اللعب أولاً — زينة ثانياً
صورة ذهنية
Menu → Main → Game Over
| | |
Play score++ Retry
HUD
SFX
|
v
[itch.io link]
مختبر: عرض نهائي
سجّل فيديو 30 ثانية gameplay — شاركه مع صديق واسأل: هل فهمت الهدف فوراً؟
مهمة عملية
سلّم لعبة مصغّرة كاملة + رابط itch.io + README — أعلّق برابط Mesue Learn إن رغبت.
اختبر فهمك
أفضل معيار نجاح للمشروع النهائي؟
لعبتك الأولى جاهزة للنشر
ارفع لعبتك على itch.io وشارك الرابط — أو تابع مسار JavaScript لألعاب الويب.