11th מרץ2015

סביבות פיתוח משחקים

by יעל חקשוריאן

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

 

Game Salad

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

לאתר התוכנה

שפת הממשק: אנגלית

יתרונות הסביבה:

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


Adventure game studio

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

לאתר התוכנה

שפת ממשק: אנגלית

יתרונות הסביבה:

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


Construct 2

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

לאתר התוכנה

שפת ממשק: אנגלית

יתרונות הסביבה:

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

 

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

 

29th יונ2014

משחקים דורות תשעד

by יעל חקשוריאן

בתאריך 17/6/2014 התקיים אירוע הסיום של תכנית משחקולוגיה בחט"ב דורות בראשון לציון.

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

הנה כמה מהמשחקים להורדה (בפורמט exe). כל המשחקים פותחו באמצעות Game Maker

מתקפת החיידקים

משחק זה זכה במקום הראשון (!)

מפתחות המשחק: הילה קריספין ושירי סמוך

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

קובץ המשחק להורדה (6.6MB)

מתקפת החיידקים

 

שולימאוס

משחק זה זכה במקום השני

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

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

קובץ המשחק להורדה (16MB)

shoolymousepicturestart

 

Square the Revenge

מפתחי המשחק: שחר משה, ליאור יעקובי ויונתן טרייבוס

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

קובץ המשחק להורדה (8.6MB)

swag logo

לצפייה בתמונות מהאירוע

27th אוג2013

מפתחים משחקים בכיתה

by יעל חקשוריאן

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

מה לומדים בתכנית?

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

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

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

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

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

תוכנות להורדה:

Game Maker (שימו לב, לא ניתן להוריד גרסאות קודמות, רק את גרסת סטודיו החינמית)

Paint.Net

לצפייה בפרויקטים של הבוגרים מתשע"ג.

15th יונ2013

אירוע סיום – משחקולוגיה דורות תשע"ג

by יעל חקשוריאן

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

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

האירוע יתקיים ביום רביעי ה-19/6/2013  בשעה 19:00 באשכול פיס "רביבים" בראשון לציון.

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

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

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

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

DOORS – חברי הצוות: ניתאי+בירן

Surdine Run – חברי הצוות: איתי + אוהד

Sardine Run

Deadly Ever After – חברי הצוות: מיקול + טל + יותם

Deadly Ever After1

DOORS – חברי הצוות: ניתאי+בירן

DOORS

Math Error – חברי הצוות: יואב+רביד

Math Error

Mirrors – חברי הצוות: יובל+שחר

Mirrors

Optimism is the Name of the Game – חברי הצוות: מיקול+יותם+טל

Optimism

Piramid – חברי הצוות: הדר+נעם

Piramid

love and freedom – חברי הצוות: מיכל+גיא+איתמר

love and freedom

17th אפר2012

שימוש במשחקי מחשב בתכנית הלימודים

by יעל חקשוריאן

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

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

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

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

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

שימוש במשחקי מחשב כחלק מהפעילות הלימודית

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

81% סבורים כי בדרך זו הם ייהנו יותר מהלמידה.
80% סבורים שבדרך זו יהיה מעניין יותר לתרגל בעיות.
73% חושבים שבדרך זו יהיה להם קל יותר להבין רעיונות מורכבים.
70% מאמינים כי בדרך זו הם יוכלו לקבל משוב מיידי על התקדמותם בלימודים ועל תוצאות המאמץ שהם משקיעים בפתרון בעיות.
70% חושבים שבדרך זו הם יוכלו להיות מעורבים יותר בנושא הנלמד.
67% מאמינים שבדרך זו הם ילמדו יותר על הנושא הנלמד.
66% חושבים שבדרך זו יהיה להם קל יותר לקשר בין הנושא הנלמד לעולם המציאות.
59% מהתלמידים הציעו סימולציות ומשחקים לימודיים ברשת כדי לתרום לסביבת הלמידה.

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

אך כך, למה לא משלבים משחקי מחשב בתכנית הלימודים?

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

כמה זמן ילדים משקיעים במשחקי מחשב?

לפי סקר של קרן קייזר בארה"ב שהתפרסם ב-20 בינואר 2010 ושנערך בקרב ילדים בגילאים 8-18 נמצא שילדים משקיעים כשעה ו-13 דקות ביום על משחקי מחשב. (שזה 24 דקות יותר ממה שנמצא בסקר קודם שנערך ב-2004)

Total media exposure

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

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

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

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

 

איך לשלב משחקי מחשב בחינוך?

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

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

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

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

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

 

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

 

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

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

29th פבר2012

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

by יעל חקשוריאן

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

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

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

כללי יסוד בעיצוב ממשק ותפריטי מידע

בכל עיצוב של ממשק משתמש/מסך חשוב שהמשתמש ידע תמיד לענות על 3 השאלות הבאות:

  • איפה אני?
  • לאן אני הולך/ מה אני רוצה לעשות?
  • איך אני עושה את זה?

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

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

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

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

שליטה – אפשרו לשחקן שליטה טובה בדמויות ובתפריטים. גם כאן עדיף להשתמש במוסכמות, למשל שליטה בדמות באמצעות מקשי החצים או ע"י המקשים AWSD. אנשים רוצים להתחיל לשחק בלי להתחיל ללמוד קודם איזה מקש משמש עבור איזה פעולה. השתמשו גם במקשים: רווח, Ctrl, Enter, Shift עבור פעולות כמו ירי, קפיצה, פתיחה וכו'. השחקן צריך להרגיש בכל שלב שהוא שולט במשחק ולא ההפך.

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

נוחות – אם המשחק שלכם מאפשר – תנו לשחקן אפשרות לבחור אם לשחק עם העכבר או עם המקלדת. אל תגדירו כמה מקשים לביצוע פעולה פשוטה (למשל לחיצה על Ctrl+Alt כדי לבצע קפיצה, הרבה יותר פשוט להשתמש במקש אחד). אל תכניסו כל מיני "הפתעות" לשחקן, גם אם אתכם זה ממש מצחיק. לבטל את האפשרות של סגירת חלון המשחק ע"י לחיצה על ה- X בחלון או ע"י לחיצה על Esc לא ממש תצחיק את השחקן. להפך, זה די יעצבן אותו.

 

עכשיו אפשר להתחיל לתכנן את המסך.

למה בכלל צריך לתכנן את המסך?

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

השתכנעתם? אז אפשר להתחיל.

 איך מתחילים לתכנן?

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

רשמו לעצמכם את התשובות לשאלות הבאות:

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

עכשיו תוכלו להתחיל לשרטט תרשים כללי של המסך.

 הגדרת מיקום האובייקטים במסך

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

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

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

תכנון מסך במשחק

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

ייצוג של המרכיבים במסך/עיבוי התרשים

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

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

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

 

תכנון מסך שלב 2

הצגת אובייקטים במסך

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

כך למשל:

תכנון מסך חלק 3

הערכה ושינויים

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

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

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

שינויים ותיקונים

אם אתם לא מצליחים להכניס את כל האובייקטים יש 3 אפשרויות:

1. להקטין את הגודל של התפריטים

2. להגדיל את הגודל של כל המסך. (למשל, במקום 600X800, אפשר לשנות ל 800X1280)

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

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

 

אהבתם את הפוסט? אל תשכחו לעשות לייק

15th פבר2012

איך ליצור משחק מחשב פשוט – חלק ב'

by יעל חקשוריאן

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

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

אוביקט המטוס

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

לאוביקט המטוס נשייך אירוע אחד ופעולה אחת – כאשר המטוס מחוץ לחדר (אירוע outside room) נהרוס את המופע של האוביקט (destroy the instance).

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

אוביקט מנהל

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

לאוביקט זה נשייך שני אירועים: אירוע יצירה ואירוע alarm.

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

1. נבחר את האוביקט המתאים, במקרה זה airplaneObj

2. נגדיר את נקודת ה-X בה יופיע האוביקט. כדי להגדיר נקודה אקראית, נשתמש בפונקציה random ובסגריים נגדיר את התחום ממנו המחשב יחשב נקודה אקראית.
כדי שהמטוס לא יופיע מחוץ למסך נגדיר את רוחב המסך (כלומר רוחב החדר) פחות רוחב האוביקט של המטוס.
לדוגמא, רוחב החדר במקרה זה הוא 640 ורוחב המטוס הוא 128, ולכן הנקודה המקסימלית שהאוביקט יכול להופיע בו על ציר ה-X מבלי שהמטוס יחתך היא 512. אני הגדרתי 510. את הרוחב נגדיר בתוך סגריים אחרי שם הפונקציה, כך:

create airplane

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

ערך המהירות צריך להיות בערך כמו המהירות של תנועת הציפור והכיוון כלפי מטה. כדי להגדיר את הכיוון למטה הגדירו 270. למה? כיוונים מוגדרים כמו זויות במעגל נגד כיוון השעון, ולכן ימינה=0, למטה=270, שמאלה=180 ולמעלה=90.

 הוספת אירוע עבור יצירת מופעים נוספים של אוביקט המטוס

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

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

אירוע שעון מעורר

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

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

manager object

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

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

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

הגדרת חיים – אני הגדרתי 3, תוכלו להגדיר כמות אחרת אם תרצו. – set lives

הגדרת ניקוד – מתחיל ב- 0 – set the score

הצגת הניקוד והחיים בחלון המשחק – set the score caption info

 

אירוע No more lives

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

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

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

bird object

 הרצת המשחק

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

בפוסט הבא – המשך המדריך: הוספת אוביקט גוזל עם אירועים ופעולות מתאימים.

 

אהבתם את הפוסט? אל תשכחו לעשות לייק 

17th יונ2011

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

by יעל חקשוריאן

ביום רביעי האחרון (15-6-2011) הציגו תלמידי כיתה ח4 בחטיבת הביניים "דורות" בראשון לציון את פרויקט הסיום שלהם לאחר שנה שלמדו פיתוח משחקי מחשב. במסגרת התכנית, התלמידים לומדים לפתח משחק באמצעות תוכנת Game Maker ופרויקט הגמר הוא משחק מלא שאותו הם מציגים באירוע מיוחד בסוף השנה.

חלק מהמשחקים תוכלו להוריד כאן ולשחק. (משחקים מעל 15 MB לא הועלו לאתר).

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

 

Mcdoodle

פיתוח המשחק: יקיר אלימלך, איתי אפרת, יובל בן שושן, טליה ספיר ולילך שמעונוב

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

mcdoodle

להורדת המשחק ( 13.6M)

 

The Crazy Rabbit

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

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

The Crazy Rabbit

להורדת המשחק ( 3.5M)

 

New born's journey

פיתוח: רון פיטרו

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

New borns journey

להורדת המשחק (5.2M)

 

איזה משחק אתם הכי אהבתם? הגיבו ודרגו.

31st מרץ2011

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

by יעל חקשוריאן

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

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

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

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

 

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

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

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

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

2. מטרת המשחק

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

3. דמויות

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

4. שלבי המשחק

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

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

Linear Game

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

Hyper Game

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

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

Hyper Game 2

 

 

5. מסכים

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

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

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

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

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

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

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

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

04th פבר2011

איך לפתח משחק מחשב בשלושה חודשים

by יעל חקשוריאן

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

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

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

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

28th דצמ2010

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

by יעל חקשוריאן

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

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

  • פלטפורה היא אוביקט 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

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

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

07th דצמ2010

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

by יעל חקשוריאן

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

בפוסט הזה אני אסביר איך ליצור משחק ב-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 בו נשמיד את המופע של אוביקט הירי, כמו כן בעת התנגשות בין שני האוביקטים (ירי ואויב), יש להרוס את המופע של שני האוביקטים.

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

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

03rd דצמ2010

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

by יעל חקשוריאן

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

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

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

  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

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

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

27th נוב2010

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

by יעל חקשוריאן

כמו שהבטחתי הפוסט הזה הוא חלק 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, הדמות קפצה לנקודת ההתחלה וגם נשמע הסאונד המתאים, סימן שעשיתם את זה נכון.

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

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

עמודים:12»