תכנות לילדים באמצעות Game Maker/מריו/הדמות
דמות מריו
[עריכה]מריו הוא דמות בדיונית שנוצרה על ידי מפתח משחקי הווידאו היפני שיגרו מיאמוטו. מריו מככב בזיכיון שנקרא על שמו, ובפרט בסדרת משחקי הווידאו "סופר מריו" של חברת נינטנדו, לה הוא משמש קמע. מריו הוא שרברב איטלקי שמתגורר בממלכה בדיונית בשם "ממלכת הפטריות" יחד עם אחיו התאום לואיג'י. הרפתקאותיהם של מריו ולואיג'י בדרך כלל סובבות סביב הצלת הנסיכה פיץ' מהנבל באוזר.כרגיל, קודם כל ניצור את מה שיאפשר לנו לבדוק הכי טוב את המשחק: אובייקט למריו.
בחלון תכונות האובייקט אפשר לראות שדות חדשים ופעולות חדשות שלא ראינו לפני שעברנו למצב המתקדם. כרגע נתעלם מהם; בהמשך המשחק נכיר חלק מהם ובמשחקים הבאים נכיר את השאר.
ניצור דמות חדשה לאובייקט מריו. גם בחלון תכונות הדמות מופיעים דברים חדשים, וגם מהם נתעלם כרגע. עוד מעט נחזור אליהם.
את הדמות עצמה נוכל לקחת מהרצועה הבאה, שיצר אחד מאוהדי מריו הרבים:
את הרצועה הזאת צריך לשמור אצלך על המחשב (להקליק עליה בכפתור הימני של העכבר ואז לבחור מהתפריט שצץ "שמור תמונה בשם" או "Save Picture As"). נוכל ליצור ממנה דמויות שונות - לכל דמות נשתמש בחלקים אחרים ברצועה.
נתחיל בדמות של מריו הולך. נקרא לה mario_walk. בשביל ליצור את הדמות מהרצועה צריך:
- בחלון תכונות הדמות, להקליק על הכפתור לעריכת הדמות - Edit Sprite. ייפתח חלון עריכת דמות.
- להקליק על התפריט השמאלי - תפריט File ולבחור Create from Strip.
- לבחור את הקובץ שבו שמרת את התמונה שלמעלה. שימו לב - בחלק מן הגרסאות של game-maker אתה צריך לדאוג שיש V ליד remove backround כדי שgame maker יסיר את הצבע הכחול ויהפוך אותו לשקוף.
- מופיע חלון גדול שבו אפשר לבחור איזה חלקים מהרצועה ישמשו ליצירת הדמות. בשביל דמות מריו הולך צריך את שלוש התמונות שבשורה העליונה משמאל, לכן צריך להכניס לשדות הראשונים את הערכים האלה:
- number of images: 3.
- images per row: 3.
- image width: 80.
- image height: 80.
- אחרי שמקליקים OK, כדאי לסמן את תיבת הסימון Show Preview שמשמאל כדי לראות את הדמות המונפשת. את השדה speed שמתחתיה כדאי לשנות ל-10 או פחות כדי שהדמות תונפש לאט יותר.
- ההנפשה קצת קופצנית; כדאי לשכפל את את תמונה מספר 1 (האמצעית) כדי שההנפשה תהיה חלקה יותר. בשביל זה צריך לבחור אותה בהקלקה, להעתיק אותה ללוח בהקשה על Ctrl+C, להדביק עותק שלה בהקשה על Ctrl+V, ואז להזיז אותו לסוף באמצעות הקלקה בסרגל הכלים על הכפתור עם החץ הכחול ימינה.
- עכשיו הדמות של מריו ההולך מוכנה ואפשר להקליק על ה-וי הירוק.
לפני שנמשיך, צריך לבדוק את מה שעשינו: ליצור חדר ולשים בו מריו, ואז להפעיל את המשחק כדי לוודא שרואים בו את מריו הולך.
מריו אמור לעמוד בשקט עד שהמשתמש מזיז אותו, לכן נוסיף לו טיפול באירוע יצירה ובו נקבע את הערך של המשתנה image_speed ל-0 כדי שהוא לא יזוז.
תכונות דמות מתקדמות
[עריכה]נחזור לחלון תכונות הדמות. במצב המתקדם של Game Maker נוסף לו חלק חדש באמצע עם שדות חדשים ואפשרויות חדשות. בואו נסתכל עליו לרגע.
נעבור על האפשרויות החדשות מלמעלה למטה:
- Precise collision checking
באיזה מקרים יקרה אירוע התנגשות: האם רק כשאובייקט נוגע ממש בחלקים המצויירים של הדמות (כמו העיגול הכתום בתמונה) או שמספיק שהוא נוגע במלבן שמקיף אותה (כמו העיגול הירוק בתמונה). עד עכשיו השתמשנו רק באפשרות הראשונה, התנגשות מדוייקת: יש התנגשות רק אם אובייקט נוגע בדיוק בחלקים המצויירים של הדמות. אבל לפעמים יש יתרונות דווקא לדרך הלא-מדוייקת לבדוק התנגשות:
- זה דורש פחות עבודת חישוב מהמחשב, ולכן זה יכול להאיץ את המשחק אם יש הרבה מופעים.
- בדמויות מונפשות כמו מריו, בכל תת-תמונה של הדמות יש חלקים מצויירים שונים. ככה יכול לקרות שתת-תמונה אחת לא תתנגש באובייקט אבל התת-תמונה הבאה בהנפשה דווקא כן תתנגש בו. במצב כזה יכול לקרות שמריו יגיע למקום פנוי מהתנגשות, אבל כשההנפשה תתקדם הוא פתאום יתנגש במשהו למרות שהמשתמש לא הזיז אותו. אם מגדירים את ההתנגשות בדרך הלא-מדוייקת אז ההתנגשות לא תלויה בתת-תמונה אלא רק במלבן שמקיף את הדמות.
- כשהאובייקט צריך לנוע בשריג (כמו שעשינו במשחק פקמן) נוח שתהיה התנגשות בדיוק בגבולות השריג, ואז לא צריך ליישר אותו לשריג אחרי התנגשות.
היתרון השני חשוב למשחק מריו, לכן נוריד את הסימון מתיבת הסימון Precise collision checking.
גם בהמשך המשחק יהיו דמויות שעדיף להוריד להן את הסימון לבדיקת התנגשות מדוייקת. אז מעכשיו והלאה כל פעם שיוצרים דמות תנסו לחשוב אם הדמות הזו צריכה בדיקת התנגשות מדוייקת או שאפשר גם בלי.
- Smooth edges
האם לצייר את הקצוות של הדמות קצת שקופים, כדי שהם יראו יותר חלקים. זה לא משפיע על המשחק עצמו, אבל יכול לגרום לדמות להראות יותר טוב. בחלק מן הגרסאות של game maker אפשרות זו נמצאת בטעינת התמונה
נסו לסמן את האפשרות הזו ולראות אם מריו נראה כך טוב יותר. אני אשאיר לך את ההחלטה אם להחליק למריו את הקצוות או לא.
- Preload texture
האם לטעון את הדמות לזכרון מיד בתחילת המשחק או לחכות עד שיצטרכו אותה. כמעט תמיד כדאי לטעון את הדמות מראש. המקרה היחיד שלא כדאי זה אם יש דמות מאוד גדולה שלא משתמשים בה בשלבים הראשונים של המשחק. לכן נשאיר את התיבה הזאת מסומנת.
- Origin
מאיפה מתחילים לספור את הקורדינטות x ו-y של האובייקט. או במינוח רשמי: מהי ראשית הצירים שלו. זה אומר שני דברים:
- אם x של האובייקט הוא 7, אז ראשית הצירים שלו היא במרחק 7 פיקסלים מהקצה השמאלי של החדר. הנקודות האחרות בו יכולות להיות במרחק שונה, אבל מודדים את x מהנקודה שהיא ראשית הצירים.
- אם מדברים על מיקום של משהו ביחס לאובייקט (Relative), הכוונה היא למיקום שלו ביחס לראשית הצירים של האובייקט. למשל, אם יוצרים אובייקט של כדור אש במיקום 0,0 ביחס למריו (כדי להשליך אותו על אויבים) אז הוא יופיע בנקודה שהיא ראשית הצירים של מריו.
אם כותבים מספרים שונים בשדות X ו-Y כדי להזיז את ראשית הצירים, אפשר לראות מצד ימין של החלון איפה בדמות זה יוצא לפי הצלב שמסמן את ראשית הצירים. הכפתור Center מעביר את ראשית הצירים בדיוק למרכז הדמות. אפשר גם להקליק עם העכבר על הדמות בצד ימין כדי להעביר את ראשית הצירים לנקודה שבה מקליקים.
העבירו את מריו לפינה השמאלית-עליונה של החדר, ואז נסו לשנות את ראשית הצירים ולראות איך זה משפיע על המיקום של מריו בזמן המשחק.
כרגע המיקום המדויק של ראשית הצירים לא ממש חשוב לנו, אבל בהמשך נחזור ונשתמש בו.
- Bounding Box
המלבן המקיף את הדמות, לפיו Game Maker מחליט אם האובייקט מתנגש באובייקט אחר: קודם כל הוא בודק אם יש התנגשות בין המלבנים המקיפים של הדמויות. אם כן, ואם מסומן Precise collision checking, אז הוא בודק אם יש התנגשות גם בין החלקים הלא-שקופים שלהן.
אפשר לראות את המלבן המקיף בתמונה שבחלק הימני של החלון. בשביל לשנות אותו צריך לסמן את האפשרות Manual ואז אפשר לשנות את המספרים בשדות Left, Right, Top, ו-Bottom. נסו לשנות את השדות האלה ולראות איך זה משפיע על המלבן בתמונה מימין.
האפשרות Full image, קובעת שהמלבן המקיף יהיה הדמות כולה, כולל החלקים השקופים.
בדרך כלל כדאי להשאיר את המלבן המקיף ש-Game Maker קובע בצורה אוטומטית, כי הוא מכיל בדיוק את כל החלקים הלא-שקופים בכל התת-תמונות של הדמות. בשביל זה צריך לבחור באפשרות Automatic, וזה מה שגם אנחנו נעשה.
קיצוץ השוליים
[עריכה]למרות שהריבוע המקיף של הדמות מכיל רק את החלקים שצריך, אין סיבה שהדמות תכיל שוליים כל כך גדולים סביבו. זה אפילו יכול להפריע אם נרצה לחשב דברים שתלויים בגודל הדמות. לכן עדיף להקטין את הדמות לגודל של המלבן המקיף:
- להקליק על הכפתור Edit Sprite.
- ללכת לתפריט Images ולבחור Crop כדי לקצץ את השוליים הריקים של התמונה. בשדה Border לכתוב 0 כי אין צורך בשוליים סביב התמונה.
- להקליק על ה-וי הירוק.
- | הדמות תרגילים |
- |