שקף שער - המשחק הראשון שלכם עם פיזיקה
חלק 1: ~5 דק'
שתף מסך עם משחק Pong מוכן - כדור זוהר עף במהירות, מתנגש בקירות ובמחבטים, חלקיקים מתפוצצים
"ערב טוב לכולם! תסתכלו על המסך. רואים את הכדור הזה? הוא עף. לא קופץ בין משבצות כמו הנחש שלנו - הוא ממש עף."
"הוא פוגע בקיר... קופץ. הוא פוגע במחבט... משנה כיוון. אתם רואים את הפיצוץ הקטן של החלקיקים? את הזוהר הניאון?"
"זה לא משחק של מספרים. זה לא משחק של משבצות. זה משחק של פיזיקה."
[השהייה - תנו למילה לחלחל]
"היום אנחנו בונים את Pong - אבא של כל משחקי המחשב בעולם. והפעם, אנחנו נעשה את זה בסגנון 2025: ניאון זוהר, פיצוצי חלקיקים, ויריב ממוחשב שמאתגר אותנו."
"אבל הכי חשוב? אפס תמונות מהאינטרנט. הכל ייווצר מקוד טהור - כדי שהמשחק יהיה חלק, מהיר, ומושלם."
סטטי מול דינמי - סוגי משחקים
משחקים דינמיים: המסך משתנה כל הזמן, 60 פעמים בשנייה, גם אם לא לוחצים כלום. Pong - הכדור עף בעצמו, היריב זז בעצמו. המשחק "חי" ברצף.
פתח את משחק הקליקר משיעור 2 - לחץ פעמיים ועצור
"תזכרו את הקליקר שבנינו? תראו. לוחץ - מספר עולה. לוחץ - מספר עולה. אבל ברגע שאני לא לוחץ? שום דבר לא קורה. המסך קפוא."
"גם הסנייק. כן, הנחש 'זז', אבל הוא קופץ משבצת למשבצת. זה לא תנועה חלקה - זה יותר כמו שחמט."
חתוך למשחק Pong - עזוב את העכבר
"עכשיו תראו את זה. אני מניח את העכבר. הכדור ממשיך לזוז. היריב ממשיך לנוע. המשחק חי בלעדיי."
"זה ההבדל בין סטטי לדינמי. משחק סטטי - עובד על תורות. משחק דינמי - עובד בזמן אמיתי."
Game Loop - הלב הפועם של המשחק
חלק 2: ~10 דק'כל "פעימה" של הלולאה: 1) עדכן את המיקומים (הזז את הכדור), 2) בדוק התנגשויות (האם פגע במשהו?), 3) צייר מחדש את המסך.
זה קורה כל כך מהר שהעין שלנו רואה תנועה חלקה, כמו בסרט קולנוע.
"אז איך המחשב יוצר את האשליה הזו? Game Loop - לולאת משחק."
"תחשבו על זה כמו ספר אנימציה שמעבירים מהר מאוד. כל עמוד הוא ציור קצת שונה, ומעבירים אותם כל כך מהר עד שנראה כמו תנועה."
"במשחק שלנו, 60 פעמים בשנייה, המחשב עושה את התהליך הזה:"
"1. עדכן: תזיז את הכדור קצת. תזיז את היריב קצת.
2. בדוק: האם הכדור פגע במשהו?
3. צייר: מחק את המסך וצייר הכל מחדש במיקומים החדשים."
"זה קורה כל כך מהר שהעין שלנו לא מזהה את הפעימות הנפרדות. אנחנו רואים תנועה חלקה."
"וזה בדיוק מה שה-AI יכתוב עבורנו בכמה שניות."
Prototype - גרסת הניסיון הראשונה
בפיתוח משחקים, תמיד מתחילים מפרוטוטייפ: בונים את המכניקה הבסיסית (כדור זז, מחבט מגיב) בלי להתעסק עם צבעים ואפקטים. רק אחרי שרואים שהרעיון עובד - מתחילים לייפות.
"לפני שנבנה משחק יפהפה עם ניאון וחלקיקים, צריך לדבר על Prototype - פרוטוטייפ, אב-טיפוס."
"זו הגרסה הראשונה המכוערת. זה כמו סקיצה של אדריכל לפני שהוא מצייר את התוכנית המפורטת."
"בפיתוח משחקים, תמיד מתחילים פשוט: האם הרעיון עובד? הכדור זז? המחבט מגיב? יש התנגשות?"
"רק אחרי שאנחנו רואים שהמכניקה עובדת - אז מתחילים לצבוע, להוסיף אפקטים, ולהפוך את זה למשהו יפה."
"אז אנחנו נעשה את זה בשני שלבים: קודם פרוטוטייפ בסיסי, ואז פוליש מלא."
הפרומפט הראשון - המנוע הבסיסי
חלק 3: ~10 דק'אנחנו לא מבקשים עיצוב בשלב הזה - רק שהמשחק יעבוד.
פתח פרויקט חדש ב-IDE
"כולם יוצרים פרויקט חדש. תקראו לו Pong או NeonPong."
"הפרומפט הראשון שלנו יבנה את המנוע הבסיסי. אנחנו מבקשים:"
"1. משחק Pong קלאסי - כדור, שני מחבטים.
2. השחקן שולט במחבט השמאלי עם העכבר (לא מקלדת!).
3. המחשב שולט במחבט הימני אוטומטית.
4. הכדור קופץ מקירות ומחבטים.
5. יש מערכת ניקוד עד 5 נקודות."
הדבק את הפרומפט, לחץ Enter, חכה שהקוד ייכתב
"תראו איך ה-AI חושב. הוא יודע שהוא צריך ליצור מנוע פיזיקלי. הוא כותב משתנים כמו ballX, ballY, velocityX, velocityY."
לחץ Preview כשהקוד מסתיים
"בואו נבדוק... הופ! יש לנו משחק. הכדור זז, המחבט שלי עוקב אחרי העכבר, היריב זז בעצמו."
"אבל תסתכלו טוב: זה מכוער. שחור-לבן, ריבועים פשוטים. זה הפרוטוטייפ. והוא עובד. זה מה שחשוב בשלב הזה."
Assets vs Procedural - תמונות או קוד?
Procedural Graphics (גרפיקה פרוצדורלית): הקוד מצייר הכל בעצמו. רוצים עיגול זוהר בציאן? הקוד מצייר. רוצים ניצוץ אדום? הקוד מצייר. אפס קבצים חיצוניים.
"אוקיי, המשחק עובד. עכשיו אנחנו רוצים שהוא יהיה יפה. וכאן יש שתי דרכים:"
"דרך 1 - Assets (נכסים): נלך לגוגל תמונות, נחפש 'pong ball PNG', נוריד תמונה, נדאג שיהיה לה רקע שקוף, נשנה את הגודל, נייבא אותה לקוד. זה עובד, אבל זה מייגע."
"דרך 2 - Procedural Graphics (גרפיקה פרוצדורלית): נבקש מה-AI לצייר הכל בקוד. רוצים כדור עגול עם זוהר ציאן? שורה אחת של קוד. רוצים מחבטים עם אפקט ניאון? שורה אחת."
"איזו דרך נבחר? פרוצדורלי. למה?"
"1. זה מהיר - לא צריך לחפש תמונות.
2. זה נקי - אין רקעים לבנים מעצבנים.
3. זה גמיש - רוצים לשנות צבע? מילה אחת בפרומפט."
"בואו נהפוך את הפרוטוטייפ שלנו למשחק ניאון מטורף."
Collision Detection - איך המשחק "מרגיש" התנגשויות
חלק 4: ~10 דק'אם כן - משהו קורה: הכדור קופץ, השחקן מקבל נקודה, או נשמע צליל.
בלי Collision Detection, הכדור היה עובר דרך הקירות כמו רוח. זה מה שהופך דברים דיגיטליים למורגשים.
שחק במשחק - הדגם את הרגע שהכדור פוגע במחבט
"תראו מה קורה עכשיו. הכדור בא לכיוון המחבט שלי... פגע! והוא קפץ בחזרה."
"איך המחשב יודע שהכדור פגע? Collision Detection - זיהוי התנגשויות."
"בכל פריים, הקוד שואל: 'איפה הכדור? איפה המחבט? הם באותו מקום?' אם כן - הכדור משנה כיוון."
"זה לא קסם. זה מתמטיקה פשוטה: אם המיקום X של הכדור שווה למיקום X של המחבט, והמיקום Y חופף - יש התנגשות."
"והנה החלק המדהים: ה-AI כותב את כל החישובים האלה בשבילנו. אנחנו רק מבקשים 'תגרום לכדור לקפוץ מהמחבט', והוא יודע איך לעשות את זה."
"עכשיו שהמשחק עובד, בואו נהפוך אותו לסייברפאנק."
הדבק את פרומפט העיצוב, הרץ
"אני מבקש: רקע שחור, מחבטים בציאן זוהר, כדור במג'נטה זוהר, ואפקט זוהר על הכל."
לחץ Preview
"בום! תראו את זה. אותו משחק בדיוק, אבל עכשיו הוא נראה כמו שהוא יצא מ-Tron."
"וזה הכוח של Procedural Graphics. שנינו את ארבע מילים בפרומפט, והמשחק השתנה לגמרי."
Juice & Polish - "תחושת המשחק"
Polish הוא הליטוש הסופי - הפרטים הקטנים שהופכים משחק טוב למשחק מעולה.
"המשחק שלנו עכשיו עובד והוא יפה. אבל יש עוד משהו שחסר לו."
שחק במשחק - הדגם פגיעה של הכדור
"תראו. הכדור פוגע במחבט... וזהו. זה קורה, אבל זה לא מרגיש מספיק."
"במשחקים מקצועיים, כל פעולה נותנת לך פידבק - משהו שאומר לך 'כן, זה קרה, והיה מעולה'."
"זה נקרא Juice - מיץ. זה מה שהופך משחק טכני למשחק כיפי."
"נוסיף למשחק שלנו שני דברים שייתנו לו Juice: רעידת מסך קלה בכל פגיעה, ומערכת חלקיקים שמתפוצצת."
Particle Systems - פיצוצי חלקיקים
חלק 5: ~10 דק'כל חלקיק הוא אובייקט קטן עם מיקום, כיוון, מהירות, וחיי-זמן. המנוע צריך לנהל את כולם במקביל - ולכן זה אתגר טכני, אבל עם AI זה פשוט.
"עכשיו אנחנו מגיעים לחלק המגניב ביותר: Particle System - מערכת חלקיקים."
"תארו לעצמכם שבכל פעם שהכדור פוגע במשהו, יש פיצוץ קטן של ניצוצות צבעוניים שמתפזרים לכל הכיוונים."
"זה נשמע מסובך לתכנת, נכון? לנהל 20 חלקיקים שכל אחד זז בכיוון אחר, נעלם בקצב שונה..."
"אבל בשביל ה-AI, זו שורת הוראה אחת."
הדבק את פרומפט החלקיקים, הרץ
"אני מבקש: כשהכדור פוגע, תייצר 20 חלקיקים קטנים שמתפוצצים החוצה ונעלמים."
לחץ Preview ושחק - הדגם את הפיצוץ
"תראו את זה! כל פגיעה עכשיו מלווה בפיצוץ קטן. זה לא משנה את החוקים של המשחק - אבל זה מרגיש פי 10 יותר טוב."
"זה בדיוק מה ש-Juice אומר: הוספנו תחושה, סיפוק, משוב ויזואלי. המשחק הפך ממשחק שעובד למשחק שמהנה לשחק בו."
AI Opponent - לימוד המחשב להיות יריב
אבל יריב מושלם הוא משעמם - אתם לא יכולים לנצח. לכן צריך להוסיף "טעויות מכוונות": עיכוב בתגובה, הגבלת מהירות, לפעמים החלטה רעה.
שחק נגד המחשב - נסה לנצח
"יש לנו בעיה קטנה. תראו, אני משחק נגד המחשב... הוא לא מפספס."
"למה? כי המחשב רואה את המיקום המדויק של הכדור ופשוט זז אליו. זה לא הוגן - המחשב מושלם."
"בעולם האמיתי, יריבים עושים טעויות. הם לא מושלמים. אם היריב שלנו מושלם, המשחק לא כיף."
"אז אנחנו הולכים ללמד את המחשב... להיות גרוע יותר. זה נשמע הפוך, נכון? אבל זה אחד המושגים החשובים בעיצוב משחקים."
Game Balance - איזון הקושי
חלק 6: ~10 דק'איזון נכון אומר: השחקן מרגיש שהוא יכול לנצח אם הוא משחק טוב, אבל צריך להתאמץ.
"אז איך נפתור את הבעיה? נוסיף למחשב חולשות מכוונות."
הדבק את פרומפט האיזון
"אני מבקש מה-AI לעשות שלושה דברים:"
"1. עיכוב בתגובה: המחשב לא מגיב מיידית. יש לו 150 מילישניות של 'חשיבה'.
2. הגבלת מהירות: המחבט שלו זז ב-70% מהמהירות שלי.
3. טעויות אקראיות: ב-10% מהמקרים, הוא פשוט זז למקום הלא נכון."
הרץ Preview ושחק - הפעם תנצח
"בואו נבדוק... הופ! ניצחתי! המחשב החמיץ כמה פעמים, הוא לא הגיע בזמן."
"המשחק עכשיו מאוזן. אם אשחק טוב, אני אנצח. אם אשחק רע, המחשב ינצח. וזה בדיוק מה שאנחנו רוצים."
"זה Game Balance: לא קל מדי, לא קשה מדי, בדיוק נכון."
סיכום ושיעורי בית
חלק 7: ~5 דק'Prototype - גרסה ראשונה פשוטה, פונקציונלית לפני היופי
Assets vs Procedural - תמונות מבחוץ מול יצירה מקוד
Collision Detection - זיהוי התנגשויות בין אובייקטים
Juice & Polish - תחושת המשחק והסיפוק שלו
Particle Systems - אפקטים של חלקיקים מתפוצצים
AI Opponent - יריב ממוחשב שמשחק נגדך
Game Balance - איזון הקושי שהמשחק נשאר כיף
FPS - Frames Per Second, כמה פעמים בשנייה המסך מצטייר
Real-time - משחק שממשיך לרוץ גם בלי קלט שחקן
עצור שיתוף מסך, חזור למצלמה מלא
"אז מה עשינו היום? בנינו משחק עם פיזיקה אמיתית - לא רק מספרים עולים, לא רק קפיצות במשבצות. משחק שממש חי."
"למדנו איך מתכננים משחק בשלבים: פרוטוטייפ קודם, עיצוב אחר כך."
"למדנו להשתמש בגרפיקה פרוצדורלית במקום להוריד תמונות מהאינטרנט."
"והכי חשוב - למדנו שאיזון זה הכל. משחק טוב הוא לא משחק מושלם, זה משחק שמאתגר בצורה הנכונה."
"שיעורי הבית שלכם: קחו את ה-Pong הזה ותשחקו עם הפרמטרים. נסו לשנות:"
"- את מהירות הכדור (יותר מהיר / יותר איטי)
- את גודל המחבטים (קשה יותר / קל יותר)
- את הצבעים (מה אם במקום ציאן ומג'נטה תשתמשו בירוק וזהב?)
- הוסיפו עוד אפקטים (רעידות מסך? צלילים?)"
"בשיעור הבא, אנחנו הולכים להעמיק עוד יותר בפיזיקה ולבנות משחק עם כוח משיכה ומהירות משתנה."
"תודה רבה לכולם, נתראה בשיעור הבא!"