פיתוח משחק ציפור פרחונית

Jul 31, 2024

# GD50 הרצאה אחת: ציפור פרחונית

## מבוא  
- מרצה: קולטן אוגדן  
- דגש על פיתוח משחק ציפור פרחונית.  
- הרצאה קודמת: כיסינו פונג תוך שימוש בצורות וצבעים בסיסיים.

## נושאים מכוסים  
1. **תמונות וספרייטים**  
   - טעינת תמונות מהזיכרון וציורן על המסך.  
   - מעבר מריבועים לספרייטים.
2. **גלילה אינסופית**  
   - יישום צינורות שגוללים ברציפות מימין לשמאל.
3. **אשליות בתכנון משחק**  
   - ההיקף הנתפס של משחקים מושג לעיתים קרובות דרך תעלול מצלמה בגלל חומרה מוגבלת.
4. **יצירה פרוצדורלית**  
   - משמשת ליצירת צינורות בגבהים שונים כדי ליצור שלבים אינסופיים.  
   - נדונה לאורך הקורס.
5. **מכונות מצבים**  
   - מעבר מניהול מצבים מופשט לגישה מבוססת מחלקות.
6. **קלט עכבר וצליל**  
   - טיפול בקלט משתמש והוספת מוזיקה כמגע מבריק.

## משאבים  
- מאגר GitHub לקוד הדמו: **GitHub/games50/fiftybirds**.  
- קריאה מומלצת:  
   - *איך ליצור RPG* מאת דן שולר (מבוסס על Lua).
   - *תבניות תכנות משחקים* מאת רוברט ניסטורם (פיתוח משחקים כללי).

## מכניקת משחק  
- מטרה: למנוע מהציפור לפגוע בצינורות או בקרקע.  
- ניקוד: הנקד כשעוברים דרך צינורות.
- הסוף המשחק: נגיעה בצינור או בקרקע מסיימת את המשחק.

## סשן תכנות חי  
1. **הגדרת הסביבה**  
   - יצירת קובץ `main.lua` חדש לפיתוח.
   - הגדרת מידות חלון פיזיות ורזולוציה וירטואלית לצורך קנה מידה.
2. **ציור תמונות**  
   - טעינת רקע ותמונות קרקע באמצעות `love.graphics.newImage`.
   - יישום רינדור בסיסי ב-`love.load`.
3. **גלילה פרלקסית**  
   - יישום מהירויות גלילה שונות לרקע ולפורגרונד כדי ליצור אשליית עומק.

## תכונות משחק  
- הצגת אינטראקטיביות משתמש באמצעות קלט עכבר או מקלדת לצורך קפיצה.  
- הדגמת גילוי התנגשויות באמצעות תיבה מוערכת (AABB).
- דיון ביצירה פרוצדורלית של צינורות ליצירת משחקיות דינמית.

## נושאים מתקדמים  
- יישום מכונות מצבים לניהול מצבי משחק (כותרת, ספירה לאחור, משחק, ניקוד).
- הוספת אפקטי צליל לקפיצות, ניקוד ומצבי סוף משחק.
- שימוש במחלקות לניהול עצמים במשחק (ציפור, צינורות).

## סקירת מטלות  
- ליצור פערים צינורות אקראיים ומרווחי יצירה משתנים.  
- יישום פרסי מדליות לפי ביצועים.
- הוספת תכונת עצירה, המאפשרת למשתמשים לעצור/להמשיך את המשחק.

## סיכום  
- הרצאה הבאה: מושגי יריעות ספרייטים, פריסות פרוצדורליות, בריאות ועוד.
- דגש על מינוף אשליית העומק ומתן חווית משתמש מעוררת באמצעות צליל ופידבק ויזואלי.