הסיבה היא שראיתי במספר מקומות שאנשים עדיין משתמשים ב-AS2, והם לא יודעים מה הם מפסידים.
יצא לי קצת לעבוד עם פלאש ואפילו ליצור משחק די פשוט ולפרסם אותו.
אחת משפות התכנות (לדקדקנים מביניכם - שפת סקריפט) הראשונות שלמדתי היתה Action Script 2 או בקיצור AS2.
די אהבתי את השפה הזאת מפני שקל להבין אותה ובעיקר מפני שלא הכרתי הרבה שפות מעבר לה.
את הבסיס למדתי מחוג שלקחתי כשהייתי די צעיר ואת השאר למדתי לבד.
לאחר כמה שנים טובות שבהן עבדתי עם תוכנות אחרות (בעיקר Game Maker שהיה מאוד קל לעבור אליה מהסיבה שאופן העבודה ב-AS2 מזכיר את אופן העבודה בה), משתמש מהפורום החל לעבוד ב-AS3 והמליץ על שפת התכנות הזאת.
עד אז די פחדתי מ-AS3 מהסיבה שיצא לי לראות את הפרקים הראשונים של ספר ללימוד AS3 והדבר הראשון שחשבתי עליו הוא "WTF? למה אי אפשר לכתוב לאובייקט את הקוד שהוא אמור לבצע וצריכים לעשות הכל דרך הפריים?!?!".
עם זאת די רציתי לבדוק מה השיפורים מאז AS2, שאלתי את מי שהמליץ לי על AS3 מאיפה הוא לומד והוא הפנה אותי למדריך הזה: לינק.
במדריך יש הסבר על הבסיס וגם מעבר, בהחלט ממליץ עליו.
למדתי המון מהמדריך, עם הזמן יצא לי לפרסם משחק שכתבתי ב-AS3 ואף יצא לי לפרסם מדריך בעברית שדי מזכיר את המדריך שלמדתי ממנו.
(את המדריך אפרסם בבלוג כשאמצא דרך ליצור ספריית מדריכים נורמלית).
למה Action Script 2?
פשטות - כשאני מנסה להזכר למה אהבתי את AS2 זה היה בגלל הפשטות.
כל מה שהייתי צריך למשחקים שאני יוצר היה שליטה על המיקום (X, Y), בדיקת התנגשות ובדיקה של מצב המקלדת (כלומר איזה כפתורים נלחצו).
התחביר לא היה נוקשה במיוחד, בעיקר בגלל שהיה ניתן ליצור אובייקט ולגשת אליו בקלות.
לדוגמא:
duplicateMovieClip(_root.MyObject, "MyObject1", this - 1);
_root.MyObject1._x = _root._xmouse;
ברוב השפות הקומפיילר היה מנסה להרוג אותי בגלל השורה השנייה, מפני שלא הגדרתי משתנה בשם MyObject1, עם זאת זה מאוד אינטואיטיבי לעבוד ככה ולא ראיתי עם זה שום בעיה לפני שהכרתי צורות תכנות אחרות.
ברוב המקרים גם אין צורך ללמוד על מחלקות או תכנות מונחה עצמים, דבר שמפשט גם הוא את העבודה.
זמן פיתוח בפרוייקטים קטנים - בפרוייקטים קטנים אין צורך להשתמש בקוד מסודר במיוחד, במחלקות לכל דבר וכו'.
ב-AS2 ניתן להצמיד לאובייקט הרצוי קוד מסויים כך שיתנהג כמו שציפינו וזהו, לא צריך להתעסק בפרוייקט מעבר לזה.
אז למה בכל זאת Action Script 3?
מהירות - חיפוש קצר באינטרנט מראה שהרצת קוד AS3 מהירה יותר מ-AS2 פי כמה ברוב המקרים, בחלק מהמקומות תמצאו שזה פי 10-15 ובחלקם פי 2.
זה שיפור משמעותי שצריך לקחת בחשבון כשמפתחים משחק פלאש.
נוחות - AS3 היא שפה OOP, כלומר מונחית עצמים. אופן העבודה איתה הרבה יותר נוח ומסודר בפרוייקטים גדולים, במיוחד כאשר עובדים בצוות וכל אחד אחראי על מחלקה משלו.
בנוסף, למתכנתים בשפות עיליות כגון C#, C++, JAVA וכו' יהיה הרבה יותר קל להתרגל ל-AS3, מפני שאופן העבודה בהן כמעט זהה.
תמיכה - אני מניח שבתור השפה העדכנית ביותר, AS3 זוכה לתמיכה המירבית כרגע. זה אומר שמתפרסמים הרבה מדריכים, תוכלו לקבל עזרה וכמובן שהפיתוח של פלאש יתבטא בין היתר בהרחבה של AS3.
דוגמא טובה היא תמיכה בהאצת חומרה ו-3D ב-AS3.
כמובן שכל זה בגדר השערה אך סביר מאוד שזאת גם המציאות.
לסיכום, AS2 שפה פשוטה. אם אתה גרפיקאי שמעצב בפלאש ורוצה להוסיף מעט סקריפטים לסרטון, AS2 עשויה להתאים לך.
AS3 שפה מורכבת, נוחה, מסודרת ועדכנית. אם אתה מתכנת שמתכנן ליצור פרוייקט גדול בפלאש, משחק מורכב או תוכנה אז כמובן ש-AS3 זאת השפה בשבילך.
אם אין לך רקע קודם בפלאש אני ממליץ בכל מקרה ללמוד AS3.
עד כאן הפוסט אבל כמובן מוזיקה!
באפריל Megadeth באים לארץ! כבר יומיים שאני שומע שירים שלהם ביוטיוב.
אז כמו שכבר אמרתי בפוסט הקודם, בפוסט הזה אני אספר על הכנס Global Game Jam.
השנה יצא לי להשתתף בכנס וזאת חוויה כיפית ששווה את הזמן והמאמץ.
הכל התחיל לפני חודש וחצי בערך.
בזמן האחרון אני עובד על משחק עם צוות קטן שיצא לי להכיר דרך האינטרנט, את הצוות לא יצא לי לפגוש ואחד מחברי הצוות הציע לי שאבוא לכנס כדי שנוכל להפגש.
אז לאחר הרבה התלבטויות החלטתי ללכת על זה ולהגיע לכנס.
ביום של הכנס התעוררתי מאוחר (אבא שלי לא העיר אותי בזמן) והגעתי באיחור של 3 שעות כך שהפסדתי את החלק של הצגת הרעיונות והחלוקה לקבוצות.
די מהר מצאתי את מי שהציע לי לבוא לכנס (שלא פגשתי אותו עד אותו יום) ואת שאר הצוות שלי (הצוות שאני מפתח איתו משחק בלי קשר לכנס), לבסוף הצטרפתי לקבוצה בה היו 2 מחברי הצוות.
הייתה לנו קבוצה ענקית שכללה מתכנתים וגרפיקאים מאוד מוכשרים ולכן היינו צריכים ליצור חלוקת עבודה מסודרת.
בשלב הזה אני אסביר על איזה משחק הקבוצה שלי עבדה, הרעיון של המשחק הוא שיש ארנבים שכל הזמן מתרבים (סביר להניח שגרמנו לפיבונאצ'י להתהפך בקברו), אתה צריך לנסות להשמיד אותם לפני שהם יתרבו יותר מדי ע"י הרעלת הגזרים שהם אוכלים, את הרעל ניתן לאסוף מהרצפה.
הצוות החליט ליצור את המשחק ב-Unity3D, שאני עובד איתו די הרבה זמן. למי שלא מכיר זה מנוע משחק מקצועי המציע גם גרסה חינמית שכוללת המון אפשרויות. עוד על Unity3D תוכלו לקרוא באתר שלהם וגם ב-FAQ שכתבתי: לינק ל-FAQ .
את המשחק ייצאנו ל-Web Player כך שניתן להריץ אותו מהדפדפן (ממש כמו משחקי פלאש).
לאחר שחילקנו את התפקידים (אני הייתי אחראי על השחקן) ולאחר שהתגברתי על קשיים טכניים רבים (חוסר במחשבים, והמחשבים שהיו לא הפעילו טוב את התוכנות) התחלתי לעבוד.
מאותו רגע עבדתי כמעט ברציפות (מלבד שינה ואוכל) עד 8 בערב למחרת, בזמן הזה הספקתי לעבוד על מערכת תזוזה עם מצלמה (ואז גיליתי שהסקריפטים של יוניטי יותר טובים אז החלפתי את הסקריפטים שלי), אינטרקציה של השחקן עם אובייקטים אחרים (גזרים וערכות רעל), אנימציה לשחקן, הצגת מספר ערכות הרעל על המסך וטקסט זז כאשר נמצאים בטווח של גזר שניתן להרעיל ואפילו על משגר טילים.
משגר הטילים לא הוכנס לבסוף למשחק, כאשר יצרתי את הטילים השתמשתי בקפסולה והכל עבד טוב אבל לאחר שהחלפתי את הקפסולה למודל השתבשו צירי הסיבוב של הטיל והוא התחיל להתנהג מאוד מוזר. הצלחתי לסדר את הבעיה הזאת בסוף אבל כבר היה מאוחר מדי והגיע הזמן להציג את המשחקים.
המשחקים שנוצרו בכנס היו ממש מגניבים. רוב הקבוצות הגיעו למצב כמו הקבוצה שלנו, משחק כיפי שאפשר לשחק בו אבל הוא לא מושלם. בנוגע לכלי הפיתוח, הרבה משחקים נוצרו ב-Unity וב-Flash, היו כמה שנוצרו ב-HTML5, משחק אחד שנוצר לאנדרואיד (מבוסס על חיישני תנועה) ומשחק לאייפון (מבוסס מיקום וקורא ברקודים), זה מה שאני זוכר.
אז לסיכום, היה ממש כיף ואני מקווה להשתתף בשנה הבאה (למרות שאני חושב שאני אהיה בצבא עד אז).
למדתי איך לעבוד בצוות, למדתי דברים חדשים על יוניטי, עבדתי עם אנשים נחמדים וזה העביר לי סוף שבוע שלם בכיף.
כמובן שגם יצאתי משם עם משחק!
תמונה מהמשחק (הארנב הירוק זה זומבי שנוצר כתוצאה מאכילה של גזר מורעל, הוא אוכל את שאר הארנבים):
תכננתי לכתוב על Global Game Jam 2011 בישראל אבל ברגע האחרון החלטתי להחליף נושא.
היום דיברתי עם חבר שלי במסן על שההורים שלי החליטו להעיר אותי כשנרדמתי אחרי שחזרתי מבית הספר ואז אמרתי לו שלא הצלחתי לחזור להרדם.
הוא אמר שזה מזכיר לו את אפקט הפרפר ותורת הכאוס (אל תשאלו אותי איזה ספרים הילד קורא...), ואז הוא שלח לי לינק לויקיפדיה על כאוס ולאחר מכן על קבוצת מנדלברוט.
קבוצת מנדלברוט היא אוסף של נקודות המהוות פרקטל (פרקטל - צורה החוזרת על עצמה בקני מידה שונים, בחלק מהפרקטלים משתנה מעט הצורה).
הגדרת הקבוצה היא כל הנקודות שעבורן הסדרה: zn+1 = zn2 + c חסומה (כלומר - יש ערך כלשהו שהיא לעולם לא תעבור אותו). z הוא מספר מרוכב, כלומר הוא כולל חלק ממשי וחלק לא ממשי וכך גם C. ממש לא בא לי להכנס לכל ההסבר המתמטי של מספרים מרוכבים, אז מי שלא הבין שיעבור למתמטיקה 5 יחידות או שייאלץ ללמוד לבד. :)
הדבר שכל כך יפה בקבוצה הזאת הוא שאם משחקים טיפה עם הפונקציה ניתן לקבל תמונות מדהימות.
לקריאה נוספת תוכלו למצוא מידע בויקיפדיה: לינק לערך בויקיפדיה . (בסוף העמוד יש גם מחולל שיוצר תמונה המציגה את קבוצת מנדלברוט אונליין, מומלץ ביותר!)
ולכל אלה שמתעצלים לקרוא, תמונה מרהיבה שתוכלו למצוא גם בעמוד של הערך: התמונה.
ועוד תמונה:
אז נחזור לשיחה שלי במסן, חבר שלי שלח לי קוד פסאודו שהוא מצא איפשהו ורציתי לבדוק האם הקוד יצור את הצורה הרצויה.
פתחתי פרוייקט XNA חדש והתחלתי לכתוב, בהתחלה התמונה הייתה קטנה ולא ברורה (6 פיקסלים בצבעים מוזרים) אבל לאחר שסידרתי קצת את ההגדרות של המיקום, קנה המידה והגדרת הצבעים ראיתי את התמונה הבאה:
נחמד, נכון?
שיחקתי עוד קצת עם ההגדרות והגעתי לתוצאה הזאת:
נראה מוכר, לא?
אז יש עוד מקום לשיפור, בעיקר בנוגע לצבעים שנראים בכלל לא אחידים כאשר עושים מספיק זום.