איך תיצרו משחק מחשב בעצמכם

את הפוסט הזה אני כותבת בעקבות פניות שלכם אלי דרך האתר – איך ליצור משחק מחשב בעצמכם.

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

במדריך הזה ניצור משחק באמצעות תוכנת Game Maker ולכן השלב הראשון יהיה להוריד את התוכנה למחשב שלכם.

למה דווקא Game Maker? ראשית ניתן להשתמש בתוכנה חינם ואפילו להפיץ את המשחקים שתפתחו איתה. שנית לא נדרש ידע בתכנות כדי ליצור משחק בסיסי. ולבסוף, לתוכנה יש שפת קוד GML, שמאפשרת לפתח משחקים יותר מורכבים עבור מי  שיודע ורוצה לכתוב קוד.

שימו לב, המדריך מיועד לפיתוח משחק במחשב שמותקנת עליו מערכת הפעלה של Windows. ועכשיו לעבודה.

הורדה והתקנה של תוכנת Game Maker

1. היכנסו לאתר Game Maker בכתובת: http://www.yoyogames.com/

2. בלשונית Game Maker לחצו על האפשרות Standard

game Make rSite

3. כעת יפתח מסך GameMaker for Windows ובו שתי אפשרויות: קנייה של גרסת ה- Standard או הורדה של גרסת  GameMaker 8.1 LITE. לחצו על הקישור של הורדת הגרסה החינמית. קובץ ההתקנה הוא מסוג exe. ושוקל 11.9 MB. שימו לב לאיזו ספרייה אתם מורידים את קובץ ההתקנה, כיוון שמשם תפעילו את ההתקנה.

4. לחצו על קובץ ההתקנה. יפתח חלון האזהרה הבא:

game Maker download

5. לחצו על Run

6.  כעת יפתח חלון הסכם רישוי. לחצו על I Agree.

game Maker Run

7.  בחלון בחירת מרכיבים להתקנה שיפתח לחצו על Next.

game Maker Run2

8. כעת יפתח חלון לבחירת המיקום בו יותקנו קבצי התוכנה:

game Maker Run3אין צורך לשנות את המיקום שנבחר ולכן פשוט לחצו על Install להתחלת ההתקנה.

9. ההתקנה אורכת מספר שניות בלבד, שימו לב בחלון התקדמות ההתקנה תקבלו בסיום ההתקנה את ההודעה Installation Complete:

game Maker Run4לחצו שוב על Next.

10. יפתח חלון סיום ההתקנה. שימו לב בחלון זה מסומנת האפשרות Start GameMaker, ולכן בלחיצה על Finish תיפתח התוכנה. אם אינם רוצים לפתוח את התוכנה בסיום ההתקנה, בטלו את הסימון:

game Maker Run5

במקביל לפתיחה של התוכנה ירוץ ברקע החלון הבא:

game Maker Installingאין צורך לבצע שום דבר, חלון זה יסגר לבד עם פתיחת התוכנה.

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

gameMaker

אין צורך ללחוץ על הקישורים בחלון זה. פשוט סגרו אותו ע"י לחיצה על X.

 אלו הם כל השלבים בהורדה והתקנה של תוכנת Game Maker.

בפוסט הבא – נכיר את סרגל הכלים ומאפייני התוכנה.

הגדרת עורך סאונד בתוכנת Game Maker

תוכנת Game Maker מאפשרת להגדיר תוכנות לעריכה של תמונות, קבצי קוד וסאונד. בשונה מתמונות וקוד, שאותם ניתן לערוך בתוך תוכנת Game Maker, כדי לערוך קבצי סאונד תהיו חייבים לעבור לתוכנה חיצונית.

Game Maker מאפשרת להגדיר את התוכנה שתהיה ברירת המחדל עבור עריכת קבצי סאונד ביצירת המשחק.

שלבי הגדרת עורך סאונד

1. בתפריט הראשי בחרו באפשרות Preferences שבלשונית File

preferences

2. בחלון המאפיינים שיפתח בחרו בלשונית האחרונה – Editors

Editors

שימו לב, לעריכת תמונות וקוד ברירת המחדל היא של העורכים המובנים בתוך Game Maker.
בצד שמאל מופיעות אפשרויות עריכת קבצי סאונד שבהם תומכת התוכנה: WAV, MIDI, MP3. תוכלו להגדיר את אותו עורך עבור שלושתם, או עורך שונה לכל אחד מהם.

3. לחצו על הכפתור לבחירת נתיב (הכפתור עם 3 הנקודות עליו) כדי להגדיר את נתיב התוכנה לעריכה. בד"כ התוכנות מותקנות בספריית Program files שבכונן C. שימו לב שסימנתם את קובץ ההפעלה של התוכנה שהוא בעלת סיומת exe ולא קיצור דרך כלשהו אם קיים אצלכם. במקרה זה בחרתי בתוכנת Audacity שהיא תוכנת חינמית לעריכת קבצי סאונד.

editors

4. חזרו על הפעולה לכל סוגי הקבצים

5. לסיום לחצו על OK

בפעם הבא שתפתחו קובץ סאונד בתוכנת Game Maker ותלחצו על Edit Sound הקובץ הנבחר יפתח בתוכנת העריכה שבחרתם:

edit Sound

פשוט וקל.

[fblike]

מעקב אחר דמות ב-Game Maker באמצעות Views

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

יצירת דמות

כרגיל, נתחיל ביצירת דמות שיכולה לנוע לצדדים. לא זוכרים איך? קראו שוב את הפוסט יצירת משחק בסיסי ב-Game Maker.

הגדרות החדר

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

בלשונית setting קבעו את רוחב החדר שיהיה גדול יותר מ-1000 פיקסלים. אני הגדרתי את הרוחב על 6400.

room View

בלשונית background הוסיפו רקע, וודאו שתמונת הרקע תתפרס לרוחב כל המסך ע"י סימון V באפשרות Tile Hor.

tile Hor

בלשונית View נגדיר את גודל המסך בפועל ואת המעקב אחר הדמות במסך:

הגדרת גודל המסך

  1. ראשית סמנו V באפשרויות: Enable the use of View ו- Visible when room starts.
  2. View in room – הגדירו איזה חלק מהחדר יראה ב-view, אני בחרתי רוחב של 300 פיקסלים. כמו כן הגדרתי את רוחב המסך כולו ל-300, כך שתהיה התאמה בין המראה למסך.

הסבר מפורט על מאפייני יצירת view תוכלו לקרוא בפוסט יצירת מפה מוקטנת של המסך.

הגדרת מעקב אחר הדמות

בחלק התחתון – Object following בחרו את הדמות שאחריה יתבצע המעקב.

Hbor, Vbor – קובעים את המרחק של גבול המראה מהאובייקט הנבחר, ניתן לבחור רק את המרחק מהצד השמאלי והצד העליון.
מרחק של אריח אחד= 32 , חצי = 16 . (אם לא שונו הגדרות ברירת המחדל של החדר)
המרחק מהצד הימני והצד התחתון תמיד=0.

Hsp, Vsp – קובעים את המהירות שהמראה עוקב אחר האובייקט
0 = ללא תזוזה. במקרה זה הדמות תיעלם מהמסך לאחר שתעבור את 300 הפיקסלים הראשונים
1 = עיכוב / delay. במקרה זה המסך נמצא תמיד צעד אחד אחרי הדמות
1 – = תואם את מהירות האובייקט. זה המצב שאנחנו רוצים – כלומר המסך תמיד עוקב אחר הדמות

כך יראה מסך הגדרות החדר בסיום הגדרת כל המאפיינים:

view Border
שימו לב שניתן לראות את גבול המראה, במקרה זה x=300.

לאחר שתמקמו את הדמות בחדר הריצו את המסך וראו כיצד המסך זז עם הדמות והרקע.

כרגיל, אני מצרפת את קובץ המשחק להורדה.

איך לתכנן ולאפיין משחק מחשב

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

אם יש לכם רעיון למשחק מחשב והחלטתם גם לאיזה פלטפורה או באיזו שפה לפתח אותו, עברתם את החלק הקל בפיתוח משחק מחשב.

עכשיו מתחיל החלק המורכב והקשה יותר והוא תכנון פיתוח המשחק עצמו.

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

 

מה צריך לדעת כשבאים לתכנן את פיתוח המשחק?

אם אתם יודעים לענות על השאלות הבאות – אתם בדרך הנכונה

1. סיפור המשחק

מה סיפור הרקע של המשחק? למשל, סיפור על שני שרברבים, שצריכים להציל נסיכה ממלך רשע שחטף אותה. נשמע לכם מוכר? זה הסיפור של המשחק סופר מריו. בסיפור המשחק אנחנו יודעים בד"כ מי הן הדמויות הראשיות במשחק, ואיזו דמות השחקן מפעיל. במקרה של סופר מריו, הדמות אותה מפעיל השחקן היא הדמות של מריו כמובן.

2. מטרת המשחק

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

3. דמויות

מי הדמויות במשחק? על איזה דמות השחקן שולט, איך מתבצעת השליטה בדמות?
שליטה בדמות הראשית יכולה להיות ע"י מקשי החצים, מקשי WASD, או באמצעות העכבר. (אפשר גם בדרכים אחרות).
תיאור הדמויות: איך הדמות נעה במשחק, מה היכולות שלה? למשל האם היא יכולה לירות? האם הדמות יכולה לקפוץ או להתכופף?  כמה חיים יש לכל דמות? אם לדמות יש 3 פסילות למשל, מה קורה לאחר כל פסילה? האם השלב מתחיל מחדש או ממשיך מאותה נקודה?
את השאלות האלו אתם צריכים לשאול לגבי כל אחת מהדמויות במשחק, בין אם היא דמות שנשלטת ע"י השחקן או לא.

4. שלבי המשחק

כמה שלבים יהיו במשחק? יש משחקים שהם שלב אחד ארוך ויש משחקים שכוללים הרבה שלבים ותתי שלבים.
אם יש במשחק יותר משלב אחד איך עוברים בין השלבים ? האם המעבר הוא לינארי, כלומר האם אפשר להגיע לשלב 2 רק אחרי סיום שלב 1, או שאפשר לעבור בין השלבים ללא סדר מסוים. האם אפשר לחזור לשלב שהסתיים, או רק להתקדם קדימה?

כשאתם מתכננים את השלבים, ציירו לכם סכימה של מבנה השלבים והקשרים בינהם. למשל סכימה של משחק בו המעבר בין השלבים הוא לינארי יראה כך:

Linear Game

סכימה של משחק בו המעבר בין השלבים אינו לינארי יכול להיראות כך:

Hyper Game

כלומר ממסך הפתיחה ניתן להגיע לשלב הראשון, אבל מהשלב הראשון אפשר להגיע לכל אחד מהשלבים האחרים.

או כך, כאשר יש מסך אפשרויות לפני המעבר למסך הראשון וניתן להגיע אליו מכל שלב:

Hyper Game 2

 

 

5. מסכים

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

6. ניקוד, חיים, בונוסים ועוד תוספות

אלו דברים שאפשר לתכנן אחרי שאנחנו יודעים לענות על השאלות בסעיף 3 – דמויות.
אם יש ניקוד במשחק – איך צוברים נקודות? האם אפשר לאבד נקודות או רק לצבור? האם יש חיים/פסילות? האם יש בריאות? (בריאות היא קו חיים שיורד/עולה בהדרגה) האם הנקודות או הבריאות נותנים לדמות הראשית יותר כוח או תכונות מיוחדות? האם הדמויות מופיעות ומתנהגות בצורה אקראית או באופן מוגדר מראש? למשל האם האויבים מגיעים תמיד מצד שמאל של המסך או בכל פעם ממקום אחר?
האם המשחק יהיה מוגבל בזמן? האם אפשר לבחור את הדמות הראשית? האם אפשר לבחור את המיקום שבו מתרחשת הפעילות במשחק?

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

מסמך תכנון הפרויקט ומסמך אפיון

אני ממליצה לכתוב מסמך תכנון, שיעזור לעשות סדר בדברים. לא חייבים מסמך מפורט ומורכב, אפשר להתחיל עם מסמך קצר, שממנו תיצרו מסמך יותר מפורט בהמשך. מה צריך להיות במסמך?  פירוט כל התשובות לשאלות בסעיפים 1-6 שציינתי למעלה.

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

אני מצרפת שני מסמכים – אחד לתכנון ראשוני של  של הפרויקט והשני – מסמך אפיון הכולל דוגמאות והסברים מה צריך להופיע בכל סעיף. את שני המסמכים הכנתי עבור התלמידים שלי, כמובן שתוכלו להכין מסמך דומה שיתאים למשחק שלכם או לחפש ברשת: Functional Design Document – FDD.

חדרים ב-Game Maker

חדרים הם הזירה בה מתרחשות כל הפעילויות במשחק ומשמשים גם כמסכים. אין משחק בלי חדר אחד לפחות.

בכל משחק כדאי שיהיו בנוסף לחדרים המהווים שלבים במשחק גם חדרים עבור מסכים, למשל חדר אחד עבור המסך הראשי – מסך אפשרויות.

במדריך זה הסבר קצר על יצירת חדרים ומעברים בין חדרים.

כדי ליצור חדר חדש לחצו על אייקון יצירת חדר בתפריט הכלים הראשי:

create Room

מאפייני החדר

לכל חדר 5 לשוניות עבור מאפיינים שונים:

background – בלשונית זו תוכלו לבחור רקע לחדר (תמונה או צבע)

view – בלשונית זו תוכלו להגדיר מראות שונים עבור החדר, כמו גם לקבוע האם המראה יעקוב אחר אוביקט מסוים.

objects – לשונית עבור הוספת האוביקטים לחדר

setting – מאפייני החדר עצמו כמו, גודל (רוחב וגובה), מהירות  ושם החדר.

tiles – לשונית עבור הוספת אריחים לחדר.

Room Properties

הגדרת כותרת החדר

כדי להגדיר כותרת לחדר, עברו ללשונית setting.

 

room Setting

שדה Name לא מוצג במשחק עצמו, זהו שם החדר שמופיע בסרגל עריכה ב-game maker תחת ספריית Rooms.

Caption for the room – המלל שתקלידו בשדה זה יופיע בכותרת המשחק לאחר הפעלתו.

caption
אם תרצו שתמיד יופיע אותו מלל בכותרת המשחק, גם אם אתם עוברים חדרים, הקפידו לרשום את אותו המלל בכל החדרים שתיצרו.

מעבר בין חדרים

כדי ליצור מעבר בין חדרים, יש ליצור יותר מחדר אחד, כמובן. בדוגמא למדריך זה יצרתי שלושה חדרים: Menu, room1, room2.

שימו לב – החדר הראשון שיפתח בהפעלת המשחק הוא החדר שמופיע ראשון ברשימת החדרים ללא קשר לשם החדר. לדוגמא, אם תיצרו שני חדרים שנקראים start ו- end , אבל end יופיע ברשימה לפני start, אז בהפעלת המשחק יפתח חדר end.
זה מצב שגורם בד"כ לטעויות, אבל יש לו גם יתרון, אם תרצו לנסות שלב מסוים, מבלי לעבור את כל השלבים שמופיעים לפניו, תוכלו פשוט לגרור אותו לראש הרשימה ולהריץ את המשחק.

כדי לבצע את המעבר בין החדרים יצרתי שלושה לחצנים: אחד עבור כל חדר ואחד ריק עבור הצגת כותרת החדר.

הוספת אירוע לחיצה

מעבר בין החדרים יתבצע בלחיצה עם הלחצן השמאלי בעכבר על אייקון החדר במסך הראשי ובשני החדרים האחרים.

לכל אחד מהלחצים הוסיפו אירוע Left Released ושייכו לו פעולה של מעבר חדר. התאימו לכל לחצן את המעבר לחדר המתאים (הבא והקודם).

לפעולת מעבר בין חדרים יש אפשרות של בחירת אפקט מעבר (transition), כאשר ברירת המחדל היא ללא אפקט.

next Room

פעולת מעבר בין חדרים נמצאת בלשונית main1, שימו לב, של-Game Maker יש פעולות שמורות עבור החדר הבא, החדר הקודם, הפעלה מחדש של אותו חדר ומעבר לחדר מוגדר.

כעת מקמו בכל אחד מהחדרים את הלחצנים המתאימים. שימו לב, בחדר הראשון אין לחצן עבור החדר הקודם, ובחדר האחרון אין לחצן עבור החדר הבא.

הצגת שם החדר

כדי להציג  את השם החדר, מבלי לכתוב אותו כל פעם מחדש ניצור אוביקט מנהל שיציג את המשתנה של שם החדר באמצעות אירוע draw.

1. צרו אובייקט חדש ללא ספרייט – textMngr

2. הוסיפו לאוביקט  אירוע draw

3. שייכו לאירוע זה את הפעולות עבור הצגת טקסט. אם אינכם זוכרים כיצד, קראו שוב את הפוסט להצגת טקסט במיקום מוגדר מראש.
שימו לב, כדי להציג את כותרת החדר, השתמשו במשתנה draw var וציינו בשדה variable את המשתנה room_caption. משתנה זה מציג את המלל שהקלדתם בשדה Caption for the room בלשונית setting של החדר. כך יראה חלון המאפיינים של אוביקט textMngr.

Drow Room

4. הוסיפו את האוביקט לחדר

אם הגדרתם לטקסט מיקום יחסי – הקפידו למקם את האוביקט במיקום המדויק, אם קבעתם מיקום מדויק (x,y), לא משנה היכן אתם ממקמים את האוביקט בחדר.

5. הריצו את המשחק.

כרגיל, אני מצרפת את קובץ המשחק להורדה.

Time Line ב- Game maker

Time Line ב-Game Maker מיועד עבור יצירת אירועים בזמן מוגדר מראש.

מה ההבדל בין  אירוע השעון המעורר – alarm ל- time line? הראשון מיועד עבור יצירת אירוע אחד בזמן נתון, ואילו time line מאפשר לנו לקבוע רצף של אירועים בזמן נתון. בנוסף נוכל להשתמש ברצף האירועים האלו בכל פעם שנרצה ע"י הפעלת ה-time line מבלי ליצור אותם שנית.

אז איך עובדים עם time line? בואו נתחיל.

ניצור משחק, שבו יש דמות ראשית (שליטה ע"י מקשי החצים) ודמות משנה, שהתנועות שלה מוגדרות מראש, אולם היא תתחיל לזוז, רק כאשר הדמות הראשית תיכנס לאיזור בו נמצאת הדמות המשנית. מתי כדאי ליצור אירועים כאלו? נניח שבמשחק שלנו יש שומר במבנה מסוים, ואנחנו רוצים שהשומר יתחיל לפטרל במבנה, רק כאשר הדמות שלנו תיכנס לתוכו. כמובן אפשר לגרום לעוד אירועים לקרות כאשר הדמות שלנו נכנסת , למשל להדליק אש שתחסום את הכניסה. הרעיון ב-time line שהוא תומך ביותר מאירוע אחד.

הגדרת התרחשות הפעולות

כאשר הדמות הראשית תתנגש עם אוביקט שנגדיר מראש שישמש כפתח כניסה לבניין (יכול להיות מוסתר), יקרו שני דברים:

  • אוביקט דמות השומר תתחיל לפטרל בחדר (תזוזה ימינה ושמאלה)
  • תידלק אש בכניסה

יצירת דמויות ואוביקטים

ניצור ספרייטים ואוביקטים עבור שתי הדמויות, עבור האש, עבור חומות החדר (אוביקט אחד) ועבור אוביקט פתח הכניסה. לא זוכרים איך ליצור דמויות ואוביקטים? הסבר על יצירת ספרייטים בפוסט יצירת משחק בסיסי ב-Game Maker.

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

הוספת time line

בסרגל הכלים לחצו על אייקון הוספת time line.

time Line
יפתח חלון המאפיינים של time line:

לחצו על Add +  להוספת אירוע

create time line

יפתח חלון הגדרת רגע (moment) עבור האירוע:

add moment

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

כעת הוסיפו את האירועים שיקרו באותו רגע. אני הגדרתי תנועה של הדמות המשנית לרוחב המסך, ויצירה של 3 מופעים של אוביקט האש במיקום מדויק (מעל פתח הכניסה למבנה). המסך יראה כך:

create time line

תוכלו להוסיף עוד אירועים ועוד רגעים (step) שיקרו באותו time line.

מאפיינים נוספים:
Merge – ממזג את הפעולות של הזמנים שנבחרו.
Shift – מוסיף מספר צעדים לכל הזמנים שנבחרו.

לאחר הגדרת Time Line ניתן להקצות אותו למופע של אובייקט כלשהו ע"י הפעולה Set time line.

הוספת אירועי התנגשות

במשחק זה נגדיר התנגשות של הדמות הראשית עם הדלת ועם החומה ואירוע התנגשות של הדמות המשנית עם החומה.

1. התנגשות של הדמות הראשית עם החומה – תגרום לעצירת התנועה של הדמות, ואירוע התנגשות של הדמות המשנית תגרום לשינוי התנועה שלה לכיוון הנגדי.

2. הוסיפו אירוע התנגשות לדמות הראשית עם החומה, לאירוע זה שייכו פעולת Start moving in a direction וקבעו את התנועה לעצירה (סימון הריבוע האמצעי ומהירות 0).

stop

הוסיפו אירוע התנגשות לדמות המשנית עם החומה, לאירוע זה שייכו פעולת Revers horizontal.

3. כעת נוסיף אירוע התנגשות של הדמות הראשית עם הדלת, ובמקום לשייך לה את כל רצף הפעולות שאנחנו רוצים (תזוזה של הדמות המשנית, יצירת מופעים של אוביקט האש) נוסיף רק שתי פעולות: הריסת המופע של הדלת (כדי שהדמות תוכל להיכנס למבנה) והפעלת רצף הפעולות שב-time line שהגדרנו קודם. אירוע ה-time line נמצא בלשונית main2.

שימו לב שניתן להגדיר מאפיינים נוספים ל-time line, כמו למשל אם יתחיל מיד או יתבצע בלופ.

time Line5

יצירת החדר

צרו את החדר לפי המבנה הבא: (לא חייב להיות זהה לחלוטין, אבל חשוב להגדיר את הדמות הראשית מחוץ למבנה, ואת הדמות המשנית בתוך המבנה)

room

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

כמו תמיד אני מצרפת את קובץ המשחק להורדה.

בדיקה של ביטוי ב- Game Maker

בפוסט הזה, מדריך קצר לבדיקה של ביטוי במשחק.

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

אז איך עושים את זה?

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

יצירת האוביקטים

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

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

הוספת משתנה עבור הבדיקה

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

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

  1. הוסיפו אירוע יצירה לדמות הראשית
  2. הוסיפו פעולה של הגדרת משתנה checkNo. פעולת הגדרת משתנה נמצאת בלשונית control.
  3. השאירו את הערך של המשתנה על 0 (כיוון שאנחנו מתחילים לספור כאשר לדמות אין מטבעות בכלל).

כך יראה חלון מאפיינים של הגדרת המשתנה:

check No Var

אירוע התנגשות עם מטבע

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

נוסיף אירוע התנגשות ונשייך לו את הפעולות הבאות:

  1. השמדה של אוביקט המטבע
  2. הוספה של בדיקת ביטוי – Test Expression עבור המשתנה checkNo.
    הבדיקה היא עבור הביטוי: checkNo < 4 כלומר תבצע את הפעולות הבאות, כל עוד checkNo קטן מ-4:
  • הוספה של 1 למשתנה checkNo, שימו לב, יש לסמן V בשדה Relative בהוספה של 1 לערך הקיים במשתנה.
  • אחרת (כלומר כאשר checkNo גדול מ-4) – צור מופע של אוביקט מטיל זהב, ע"י הוספת הפעולה create instance וקבעו את ה-X וה-Y ל-0, כך שהמופע של אוביקט מטיל הזהב יופיע בקצה השמאלי העליון של החדר.

כך יראה חלון אפשרויות הגדלת ערך המשתנה ב-[1]:

add 1 to checkNo

וכך יראה חלון מאפייני הדמות בהתנגשות עם מטבע

test expression

יצירת חדר והוספת האוביקטים

כעת צרו חדר, הוסיפו לו מופע של אוביקט הדמות ומספר מופעים של מטבע (לפחות 5 מופעים כדי לבדוק את הביטוי).
שימו לב, אין צורך להוסיף מופע של אוביקט מטיל הזהב, הוא יווצר אוטומטית אם הדמות תאסוף 5 מטבעות.

הריצו את המשחק.

כרגיל, אני מצרפת את קובץ המשחק להורדה.

יצירת משחק פלטפורמה ב-Game Maker

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

כמה דברים שחשוב לדעת על פלטפורמה במשחק:

  • פלטפורה היא אוביקט Solid
  • יש לבצע בדיקה בכל רגע נתון האם יש פלטפורמה (משטח) מתחת לדמות
  • אם אין פלטפורמה הדמות נופלת במהירות שהולכת ומואצת, כלומר לאט בהתחלה ובהמשך מהר יותר, עד אשר היא מתנגשת שוב בפלטפורמה.

יצירת האובייקטים

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

כעת ניצור שני אובייקטים:

1. אוביקט platform עבור הפלטפורמה, נשייך לו את הספרייט שיצרנו כמשטח, שימו לב, לא לשכוח לסמן V בשדה Solid במאפייני האוביקט.

platform

2. אוביקט Player עבור הדמות, ונשייך לה את הספרייט שיצרנו עבורה.

בדיקה אם יש פלטפורמה

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

פעולות לאירוע step

1. בדיקה האם מתחת לדמות האוביקט אין כלום (פלטפורמה). אם אין פלטפורמה נוסיף לדמות פעולה של משיכה כלפי מטה, אם יש פלטפורמה, נעצור את המשיכה של הדמות כלפי מטה.
ל-game maker יש פעולה מיוחדת לבדוק אם יש מתחת לאוביקט והיא Check Empty שנמצאת בלשונית control של הפעולות.

הבדיקה היא בין האוביקט שלנו לכל אוביקט אחר שנמצא מתחתיה וגם מוגדר solid.

check Empty

2. הוספת פעולה Set Gravity

אם אין אוביקט solid מתחת לדמות נוסיף פעולת set gravity ובשדה direction נגדיר את הכיוון כלפי מטה, כלומר 270. כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

בשדה gravity נציין ערך נמוך מ-1, בד"כ 0.5 מספיק ליצירת משיכה של הדמות כלפי מטה.

gravity

3. כעת נגדיר מה קורה אם מתחת לדמות יש אוביקט שהוא solid.

שוב נוסיף את פעולת Set Gravity אבל הפעם נציין בשדה gravity את הערך 0. כך נגרום לעצירה של הדמות.

התנגשות עם פלטפורמה

כדי שהדמות שלנו תעמוד על פלטפורמה, אנחנו צריכים לבדוק התנגשות עם אוביקט הפלטפורמה.

נוסיף לדמות אירוע התנגשות עם פלטפורמה ואת הפעולות הבאות:

1. move to contact

  • בשדה direction נציין 270, כלומר כלפי מטה
  • בשדה maximum נגדיר את המהירות המקסימלית שבה האוביקט ינוע כלפי מטה, אני ציינתי 12, אבל גם 5 זו מהירות מספיקה, והערך תלוי במרחק שיש לדמות לעבור בדרך למטה.
  • והדבר האחרון – לציין את התנועה לאוביקטים שהם מסוג solid.

כך יראה חלון האפשרויות של הפעולה move to contact:

move to contact

2. Vertical Speed

הפעולה האחרונה שנוסיף לאירוע ההתנגשות היא Set Vertical Speed עם הערך 0. כך נגרום לעמוד על הפלטפורמה ולא להמשיך ליפול כלפי מטה.

תנועה של הדמות לצדדים

יש יותר מדרך אחת להזיז את הדמות ע"י מקשי החצים, אני מעדיפה את האירועים key press ו-key release

1. הוסיפו אירוע key press right והוסיפו לו את הפעולות:

  • move free קבעו את הכיוון לימין ואת המהירות ל-5
  • change sprite פעולה של שינוי הספרייט לספרייט שפונה לכיוון ימין.

2. חזרו על אותן פעולות לאירוע key press left (כמובן קבעו את הכיוון והספרייט לצד שמאל הפעם).

3. הוסיפו אירוע key release right והוסיפו לו פעולה של move free. כדי שהדמות תעצור, לחצו על הריבוע האמצעי וקבעו את המהירות ל-0.

כך יראה חלון האפשרויות:

stop

4. גם לאירוע key release left הוסיפו את הפעולה move free עם אותם מאפיינים כמו בסעיף 3.

קפיצה

כדי ליצור קפיצה של הדמות נוסיף אירוע keyboard ונשייך לו את הפעולה set vertical speed.

בשדה vert speed ציינו ערך שלילי (כדי שהדמות תקפוץ כלפי מעלה). קפיצה של 10 היא גבוהה מספיק.

חלון המאפיינים של הדמות יראה כך:

platform

מה שנותר לעשות הוא ליצור חדר, למקם בו מופעים של הפלטפורמה ומופע אחד של הדמות.

כרגיל, אני מצרפת קובץ של המשחק להורדה.

יצירת משחק ב-Game Maker הוספת ירי

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

בפוסט הזה אני אסביר איך ליצור משחק ב-Game Maker שבו הדמות הראשית יכולה לירות.

כמה דברים שחשוב לדעת לגבי אוביקט ירי במשחק

  • ירייה היא בעצם מופע של אוביקט שנע במהירות במסך, האוביקט אינו מוצב בחדר, הוא יופיע בפעולה יזומה של השחקן.
  • כיוון הירי צריך להשתנות לפי הכיוון אליו פונה האוביקט היורה
  • ירי לא מתבצע באופן רציף (כמו הליכה, או ריצה), אלא בהפסקות זמן קבועות.
  • בעת פגיעה באוביקט אחר או מחוץ לחדר יש להרוס את המופע של הירי.
  • כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

לפני הכל כמו תמיד, ניצור ספרייט ואוביקט לירייה.

הגדרת משתנה עבור ירי

לפני שניצור את הפעולות עבור אירוע ירי, צריך להגדיר מצב בו לא ניתן לבצע פעולת ירי. מה שנדרש לנו הוא משתנה שיקבע מתי אפשר לירות ומתי לא. בין ירייה אחת לשנייה נקבע זמן מוגדר שבו לא ניתן לירות. את המשתנה נשייך לאוביקט הדמות הראשית באירוע יצירה.

  1. הוסיפו אירוע יצירה לדמות הראשית
  2. הוסיפו פעולה של הגדרת משתנה can_shoot שערכו יהיה=1 (1 פירושו יכול לירות ו-0 פירושו לא יכול לירות). הגדרת משתנה נמצא בלשונית control של הפעולות.

can shoot

הגדרת משתנה עבור כיוון

כדי שהירייה תהיה תמיד לכיוון אליו פונה הדמות הראשית, נוסיף לכל כיוון של הדמות משתנה עם ערך ייחודי.
איך עושים את זה? עברו לדמות הראשית ופעלו לפי השלבים הבאים: באירוע יצירה של הדמות נוסיף פעולה של הגדרת משתנה dir וניתן לו ערך [1], שיסמל את הכיוון ימינה (זה כיוון שהדמות בהתחלה פונה ימינה).
באירועים של הקשה על מקשי החצים, נוסיף פעולה של שינוי המשתנה dir. למשל, כאשר הדמות פונה למטה נגדיר את dir=2 וכך הלאה, עד שנגדיר את כל הכיוונים. בשלב זה חלון מאפייני הדמות יראה כך:

direction

כעת נוסיף את אירוע הירי.

יצירת אירוע ירי

במשחק הזה פעולת הירי תתבצע כאשר השחקן לוחץ על מקש הרווח כדי ליצור אירוע ירי נבצע שתי בדיקות, אחת – האם ניתן לבצע פעולת ירי, שתיים – לאיזה כיוון הדמות פונה.
הוסיפו אירוע לחיצה על מקש הרווח לדמות הראשית לאירוע זה הוסיפו פעולה של בדיקת המשתנה can_shoot לערך 1  (כלומר הפעולות הבאות יתבצעו אם המשתנה can_shoot=1).
מיד אח"כ הוסיפו בדיקה של המשתנה dir. אם dir=1 הוסיפו את הפעולות הבאות לאירוע ירי, כיוון שמדובר במספר פעולות נתחום אותן בבלוק פעולות:

create moving instance של אוביקט הירי

  1. בשדה object בחרו את אוביקט הירייה
  2. הגדירו את ה-X וה-Y ל16 ו-16, כיוון שהדמות שלנו בגודל 32X32 והכדור יצא ממרכז הדמות.
  3. סמנו V בשדה Relative אחרת הכדור יצא מנקודת 16X16 של החדר ולא של הדמות הראשית.
  4. בשדה speed הגדירו מהירות 30 לפחות ובשדה direction את הספרה 0, שהיא כאמור מסמלת את הכיוון ימין.

כך יראה חלון המאפיינים של הפעולה create moving:

create moving

שינוי המשתנה can_shoot ל-0 והוספת שעון מעורר

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

  1. שינוי ערך המשתנה can_shoot ל-0.
  2. הוספת פעולת שעון מעורר ל-5 צעדים, הגדירו את Alarm 0 ל-5 צעדים.
    alarm

יותר מאוחר נוסיף אירוע שעון מעורר שמטרתו להחזיר את ערך המשתנה can_shoot ל-1.

את הבדיקה של משתנה dir נבצע עבור כל אחד מהכיוונים ונחזור על הפעולות הבאות:

  • הוספת אוביקט הירי כולל ארבעת השלבים המפורטים למעלה, כאשר השינוי היחיד הוא הכיוון של אוביקט shot.
  • שינוי המשתנה can_shoot
  • הוספת שעון מעורר Alarm 0

הוספת אירוע שעון מעורר

כדי שפעולת Alarm 0 תתבצע, צריך שיהיה לה אירוע מקביל, לכן נוסיף אירוע Alarm 0 לדמות הראשית, שימו לב שמספר ה-Alarm בפעולה, צריך להיות זהה לזה של האירוע לו אליו היא משויכת.

לאירוע זה הוסיפו פעולת הגדרת ערך המשתנה can_shoot בחזרה ל-1.

כך יראה חלון הפעולות של אירוע הקשה על מקש הרווח לאחר יצירת כל הפעולות של אירוע לחיצה על מקש הרווח:

shoot to direction

כדי שפעולת הירי תהיה אפקטיבית, צריך להוסיף אירוע התנגשות בין אוביקט הירי לבין אוביקט דמות האויב.

שימו לב, לאוביקט הירי חשוב להוסיף אירוע של outside room בו נשמיד את המופע של אוביקט הירי, כמו כן בעת התנגשות בין שני האוביקטים (ירי ואויב), יש להרוס את המופע של שני האוביקטים.

כדי לשפר את אפקט הירי, הוסיפו סאונד לפעולת הירייה וסאונד לפעולת ההתנגשות.

כמו תמיד אני מצרפת את קובץ המשחק להורדה.

יצירת משחק בסיסי ב-Game Maker חלק 3

בפוסטים הקודמים יצרנו משחק שבו דמות ראשית, דמות אויב, חיים ואירוע התנגשות.

בפוסט הזה נוסיף בונוסים וניקוד.

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

  1. השמעת סאונד מתאים
  2. מחיקת המופע של הבונוס מהחדר
  3. הוספת ניקוד

הוספת ניקוד

ל-Game Maker יש פעולות מוגדרות עבור ניקוד בלשונית Score. את פעולות  הניקוד נוסיף לאוביקט המנהל שיצרנו בפוסט הקודם.

לאירוע Game Start נוסיף פעולת Set score ונשאיר את הערך של הניקוד על 0, כיוון שזה הניקוד לתחילת המשחק.

בפעולה של Set the score caption נשנה את האפשרות של show score מ-don't show ל-show.

כעת יש להגדיר מתי הניקוד משתנה וזה קורה כאשר יש אירוע התנגשות בין הדמות הראשית לאוביקט הבונוס.
נעבור לאוביקט הדמות הראשית ונוסיף לו אירוע התנגשות עם אוביקט הבונוס.

הוספת סאונד

בחרו את הסאונד שיצרתם בחלק 1 עבור איסוף בונוס.

מחיקת המופע של הבונוס

כיוון שהוספנו את האירוע לדמות הראשית, יש לשנות את התייחסות פעולה זו לאוביקט הבונוס, כלומר בחרו באפשרות של Destroy Instance את other.

שינוי ערך הניקוד

בהוספת הפעולה Set Score יש להגדיר את ערך new score ל[+10] וחשוב לסמן V באפשרות Relative כיוון שהוספת הניקוד היא תמיד יחסית לניקוד שהיה קודם.

set score

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

קובץ המשחק המעודכן להורדה

יצירת משחק בסיסי ב-Game Maker חלק 2

כמו שהבטחתי הפוסט הזה הוא חלק 2 של יצירת משחק בסיסי ב-Game Maker.

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

ועכשיו – התנגשות עם דמות אויב.

מה צריך בשביל ליצור התנגשות עם דמות אויב? דמות אויב, מן הסתם (ואותה יצרנו כבר בחלק הראשון), הגדרת חיים (כדי שנוכל להוריד 1 חיים בכל התנגשות) ואירוע התנגשות.

הגדרת חיים

את החיים נגדיר באוביקט מנהל באירוע של התחלת המשחק (game start).

לאירוע זה נוסיף פעולה של הצגת החיים. פעולה זו נמצאת בלשונית score. בחלון האפשרויות של score caption נבחר הצגת החיים, בשלב זה אין לנו ניקוד ובריאות ולכן איו צורך להציג אותם.

score

אוביקט מנהל לא צריך ייצוג גרפי ולכן לא יהיה לו sprite.

ל-Game Maker יש אירוע עבור מצב שבו אין יותר חיים, גם הוא נמצא באירועים תחת הקטגוריה other ונקרא no more lives. אם לא נגדיר מה קורה כשאין יותר החיים, החיים ימשיכו לרדת ב-1 בכל פעם שיתרחש אירוע התנגשות אפילו מתחת לאפס.
אנחנו לא רוצים שמצב כזה יקרה, לכן נוסיף לאוביקט מנהל אירוע no more lives ונשייך לו פעולה של סוף המשחק End Game שנמצא בלשונית main2.

כך יראה האוביקט ובו הגדרת החיים:

manager object

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

הוספת אירוע התנגשות

עכשיו שיש לנו חיים אפשר להוסיף את אירוע ההתנגשות לדמות הראשית (למרות שעקרונית ניתן להוסיף את אירוע ההתנגשות גם לדמות האויב). אירוע ההתנגשות

לאירוע זה נוסיף את הפעולות הבאות:

1. הקפצה של הדמות הראשית לנקודת ההתחלה

2. השמעת סאונד, ביחרו את הסאונד שהגדרתם עבור ההתנגשות

3. הורדה של החיים ב-1. שימו לב, יש לסמן V בשדה Relative, אחרת ערך החיים יוגדר מחדש ל-1, במקום להוריד מכמות החיים 1.

כך יראה המסך של הדמות הראשית באירוע ההתנגשות:

collision

הגדרת תנועה לדמות האויב

דמות האויב במשחק, צריכה לנוע בכוחות עצמה, ללא קשר למה שעושה השחקן.

נוסיף לדמות האויב אירוע יצירה (create) ובו פעולה של תנועה. כדי שהדמות תנוע בכל הפעלה של המשחק לכיוון אחר, נגדיר בפעולה Move Fixed את כל הכיוונים (אופקי ואנכי) ומהירות שתהיה גבוהה יותר מהמהירות שהגדרנו לדמות הראשית.

אירוע נוסף שנגדיר לדמות האויב הוא outside room, ע"מ להחזיר את האוביקט לחדר מצידו השני, כל פעם שהוא יוצא מהחדר.

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

קובץ המשחק עד שלב זה להורדה

בפוסט הבא – הוספת בונוסים וניקוד.

יצירת משחק בסיסי ב-Game Maker

בפוסט הזה ובאלו שאחריו אני אתמקד ביצירת משחק ב-Game Maker, כאשר כל פעם נוסיף למשחק תכונות ואלמנטים אחרים. כל האלמנטים שאשתמש בהם נמצאים בספריית Game Maker 8, תוכלו למצוא אותה בספריית program files לאחר שתתקינו את התוכנה.

יצירת בסיס למשחק

במשחק הבסיסי יהיו האלמנטים הבאים:

דמות ראשית

הדמות הראשית תנוע ע"י מקשי החצים (בשליטה של השחקן, כמובן)

דמות אויב

דמות האויב תנוע באופן עצמאי בחדר, התנגשות של הדמות הראשית עם דמות האויב תגרום לשלושה דברים:

  • השמעת סאונד
  • הקפצת הדמות הראשית לנקודת ההתחלה
  • הורדת החיים ב-1

חיים

מן הסתם נצטרך גם חיים, במשחק יהיו 3 חיים, כאשר אין עוד חיים – המשחק נגמר.

בונוסים

כל בונוס שהדמות הראשית אוספת, תזכה ב-10 נקודות וישמע סאונד מתאים

ניקוד

ולכן אנחנו צריכים גם ניקוד, שמתחיל ב-0.

המשחק מסתיים כאשר אין עוד בונוסים לאסוף.
נשמע פשוט, לא? אז בואו נראה איך בונים את המשחק שלב אחרי שלב.

יצירת ספרייטים

אני מתחילה תמיד ביצירת הספרייטים עבור האוביקטים במשחק. במשחק הבסיסי נצטרך עבור הדמות שלנו 4 ספרייטים לפחות (תנועה לכל אחד מהכיוונים).
לא זוכרים איך יוצרים ספרייטים בתנועה? קראו שוב את הפוסט בנושא הסרת רקע בעורך התמונות, הוא כולל הסבר מפורט.

אז כמה ספרייטים אנחנו צריכים?

4 לדמות הראשית (הקפידו לשמור אותם בתיקייה נפרדת)

1 לדמות האויב (כמובן שאפשר יותר, אבל אנחנו נתחיל בזה)

1 לבונוס

טיפ חשוב שיעזור לכם בהמשך – לכל ספרייט ואוביקט, וגם לסאונדים, לפונטים ולחדרים תנו שם שמתאר אותם, אל תשאירו את השם שהוא ברירת המחדל, למשל, sprite0, אלא שנו את השם, למשל, לboyRight כאשר מדובר בדמות הראשית כאשר היא פונה ימינה.

יצירת אוביקטים

כעת ניצור 3 אוביקטים עבור: דמות ראשית, דמות אויב והבונוס.

create an Objectלחיצה על אייקון יצירת אוביקט בסרגל העליון תיצור אוביקט חדש.

לכל אוביקט נשייך את הספרייט שלו, במקרה של הדמות הראשית, נבחר את הספרייט שפונה ימינה.

יצירת סאונד

לחצו על אייקון יצירת סאונד ואח"כ על Load sound. במסך שיפתח בחרו אחד מקבצי הסאונד, אני בחרתי את beep1 וקראתי לו coin1, כיוון שהוא יהיה הסאונד שישמע כאשר הדמות תאסוף מטבע, ואת הסאונד boomshot עבור ההתקלות עם האויב.

בשלב הזה, אלו האלמנטים שצריכים להיות במשחק שלכם מסודרים בתיקיות

my First Game screen1

הוספת אירועים ופעולות לאוביקטים

נתחיל עם אירועים עבור הדמות הראשית.

האירועים הראשונים שנגדיר הם אירועי לחיצה על מקשי החצים, שבאמצעותם נזיז את הדמות הראשית.

1. תנועה

כדי שהדמות תזוז שמאלה, נוסיף אירוע לחיצה key press left ונשייך לו את הפעולה move fixed ע"י גרירה של האייקון לחלון ה-actions. (פעולה זו נמצאת בלשונית move של הפעולות). במאפייני התנועה נציין תנועה שמאלה ומהירות 3.

move left

2. שינוי ספרייט

עוד פעולה שנשייך לאירוע זה, הוא שינוי הספרייט לספרייט שבו הדמות פונה שמאלה.
פעולת שינוי ספרייט נמצאת בלשונית main1. נגרור אותה לחלון ה- actions ובאפשרויות נבחר את הספרייט שבו הדמות פונה שמאלה. אין צורך לשנות את יתר המאפיינים.

כך יראה חלון האפשרויות:

change sprite

3. פעולת עצירה

כדי שהדמות לא תמשיך לזוז כאשר אנחנו מפסיקים ללחוץ על מקש החץ במקלדת, אנחנו צריכים פעולת עצירה. נוסיף אירוע key release left ונשייך לו פעולה move fixed. הפעם במאפיינים נבחר את הריבוע המרכזי, שמסמל עצירה ונשאיר את המהירות על 0.

חלון האפשרויות יראה כך:

stop

יש לבצע את כל הפעולות בסעיפים 1-3 עבור כל הכיוונים.

כך אמור להיראות חלון המאפיינים של הדמות הראשית בשלב הזה:

main character

עכשיו נוסיף אירוע עבור מצב בו הדמות שלנו מחוץ לחדר.
למה צריך אירוע כזה? כדי שכל פעם שהדמות שלנו תצא מגבולות החדר, היא לא תמשיך ללכת עד אין קץ, אלא תיכנס שוב מהצד הנגדי. כמו בפקמן.
צריך לזכור שגם כאשר האוביקט מחוץ לחדר, עדיין המשחק שומר עבורו משאבים (זיכרון), שכדי שנרצה להשתמש בו שוב נוכל לעשות זאת. גם אם אנחנו נשכח את זה, game maker לא שוכח, וכל אוביקט כזה גם אם אינו מופיע בחדר, משפיע על משקל המשחק.

נחזור לפעולות. מה צריך כדי להחזיר את הדמות הראשית מהצד השני?

4. אירוע outside room

נוסיף את האירוע outside room שנמצא בקטגוריה other של האירועים ונשייך לו את הפעולה wrap screen שנמצאת בלשונית move. שימו לב, יש לבחור באפשרות in both directions, כיוון שאנחנו רוצים שהדמות תוכל להיכנס חזרה לחדר מכל הצדדים.

סיימנו עם החלק הראשון של יצירת הדמות הראשית, תנועה ע"י מקשי החצים ושינוי הספרייט בהתאם.

הרצה של המשחק

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

קובץ gmk הכולל את כל השלבים להורדה.

בפוסט הבא – התנגשות עם דמות אויב.

הצגת הניקוד במסך במיקום מוגדר

בתוכנת Game Maker יש פעולה שמורה להצגת ניקוד בשורת הכותרת של החלון, אבל הרבה פעמים אנחנו רוצים להציג את הניקוד במיקום אחר בתוך המסך, כולל האפשרות לקבוע מה יהיה הגודל או הגופן שבו הוא יוצג.

איך עושים את זה? לשם כך נשתמש בפקודה draw.

הגדרת פונט

חשוב לפני ביצוע הפעולות ליצור פונט חדש – קליק ימני על תיקיית הפונטים ובחירה ב – Create Font.

בחלון האפשרויות של הפונט יש לבחור את סוג הפונט וגודל הפונט.

כדאי לתת שם לפונט שיתאר את מטרתו, למשל ScoreFont, או תיאור של הפונט עצמו, למשל ArialBold12, זה תמיד עוזר לי לדעת איך הפונט יראה.

יצירת אוביקט

יש ליצור אוביקט (ללא sprite) עבור הניקוד.

1. בתיקיית objects ניצור אוביקט חדש בשם: "objectScore"

2. לאוביקט יש להוסיף אירוע מסוג Draw

3. לאירוע יש להוסיף את הפעולות (actions) הבאות:

set font – נמצא בלשונית Draw ולבחור את הפונט שיצרנו קודם ScoreFont

set the color – גם נמצא בלשונית Draw ולבחור את הצבע, שימו לב, שיהיה צבע ניגודי לרקע עליו ימוקם הטקסט.

Draw score בלשונית Score עדכנו את האפשרויות לפי:

X= מיקום על ציר הרוחב Y= מיקום על ציר הרוחב, למשל אם נרצה שהניקוד יופיע בקצה השמאלי העליון של החדר נציין עבור X=0, Y=0

שדה caption הוא הטקסט שיופיע עבור הניקוד, כדאי להשאיר את ברירת המחדל "Score:".
אם אפשרות Relative מסומנת, אז המיקום של האוביקט יהיה יחסית להכין שתמקמו את האוביקט בחדר בפועל, אם האפשרות לא תהיה מסומנת מיקום האוביקט יהיה בדיוק ב-X, Y שציינתם.

score

מיקום האוביקט בחדר

1. פתחו את החדר שבו אתם רוצים להציג את הניקוד ובלשונית objects בחרו את אוביקט הניקוד, objectScore.

2. מקמו את האוביקט בחדר. שימו לב, כדי לא למחוק אוביקט אחר שמופיע בחדר, וודאו שהאפשרות delete underline אינה מסומנת.
שימו לב לאוביקט אין ייצוג גרפי (sprite) ולכן הוא יראה בחדר כעיגול כחול עם סימן שאלה ורוד עליו.

ולאלו מכם שרוצים לראות איך זה מיושם בקובץ עצמו, אני מצרפת דוגמא – אוביקט score שהוספתי למשחק treasure (קובץ gmk).

יצירת אוביקט שזז על המסך באמצעות העכבר

בפוסט הזה אני אסביר איך ליצור ב-Game Maker אוביקט שניתן להזיז אותו על המסך באמצעות העכבר, כלומר להקפיץ את האוביקט לנקודה בה לחצנו על המסך עם העכבר.

שלב ראשון – יצירת sprite לאוביקט

לחצו על אייקון יצירת ספרייט בסרגל העליון create a Sprite

בחלון מאפייני sprite לחצו על Load Sprite וטענו תמונה. אני בחרתי בתמונה burger.

שלב שני – יצירת אוביקט

create an Objectלחצו על איקון יצירת אוביקט בסרגל העליון

בחלון אפשרויות של האוביקט הגדירו את ה-sprite שיצרתם בשלב הראשון לאוביקט, במקרה הזה, את burger.

object

שלב שלישי – הגדרת אירוע ופעולות

הגדרת אירוע step

כעת מגיע השלב בו אנחנו מגדירים את האירוע שיגרום להזזת האוביקט והוא אירוע מסוג צעדים (step). אירוע צעדים מתרחש בכל שלב (צעד) של המשחק, כיוון שאנחנו רוצים שבכל שלב של המשחק נוכל להזיז את האוביקט באמצעות העכבר, ללא קשר לפעולות אחרות, נשתמש באירוע זה.

הגדרת פעולות

הפעולה שנבצע תלויה בלחיצה של עכבר, לכן נבצע בדיקה אם נלחץ העכבר ולשם כך נתשמש בפעולה Check Mouse שנמצאת בלשונית control של הפעולות.

הבדיקה שנבצע היא האם נלחץ הכפתור השמאלי של העכבר

object Actions

כעת נוסיף את הפעולה שתקפיץ את האוביקט לנקודה בה נלחץ העכבר. פעולה מסוג jump to position  ונגדיר עבורה את מיקום ה-X ו-Y.

עבור מיקום ה-X נציין: mouse_x, עבור מיקום ה-Y נציין: mouse_y. אלו פרמטרים קבועים עבור מיקום לחיצה של העכבר במסך.

כעת מה שנותר לנו לעשות זה להוסיף את האוביקט לחדר ולהריץ את המשחק.

קובץ דוגמא להורדה.