יום רביעי, 23 בפברואר 2011

מרכז מדריכים נסיוני

היי,

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

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

הפוסט הזה הוא רק עדכון קצר ולכן אין מוזיקה.
לילה טוב :)

יום שבת, 19 בפברואר 2011

Flash, האם כדאי לעבור מ-AS2 ל-AS3

היי,

נושא שלא התעסקתי בו המון זמן זה פלאש.
בפוסט הזה אני אכתוב על הסיבות לעבור מ-AS2 ל-AS3.
הסיבה היא שראיתי במספר מקומות שאנשים עדיין משתמשים ב-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 באים לארץ! כבר יומיים שאני שומע שירים שלהם ביוטיוב.
אחד השירים היפים זה Tornado of Souls:


שיהיה לנו שבוע מצויין! D:


יום ראשון, 6 בפברואר 2011

Global Game Jam 2011

היי,

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



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

בשלב הזה אני אסביר על איזה משחק הקבוצה שלי עבדה, הרעיון של המשחק הוא שיש ארנבים שכל הזמן מתרבים (סביר להניח שגרמנו לפיבונאצ'י להתהפך בקברו), אתה צריך לנסות להשמיד אותם לפני שהם יתרבו יותר מדי ע"י הרעלת הגזרים שהם אוכלים, את הרעל ניתן לאסוף מהרצפה.
הצוות החליט ליצור את המשחק ב-Unity3D, שאני עובד איתו די הרבה זמן. למי שלא מכיר זה מנוע משחק מקצועי המציע גם גרסה חינמית שכוללת המון אפשרויות. עוד על Unity3D תוכלו לקרוא באתר שלהם וגם ב-FAQ שכתבתי: לינק ל-FAQ .
את המשחק ייצאנו ל-Web Player כך שניתן להריץ אותו מהדפדפן (ממש כמו משחקי פלאש).

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

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

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

תמונה מהמשחק (הארנב הירוק זה זומבי שנוצר כתוצאה מאכילה של גזר מורעל, הוא אוכל את שאר הארנבים):

המשחק מופיע בעמוד באתר של Global Game Jam -

וכדי לשחק במשחק עצמו -

עד כאן הפוסט, אבל קודם כל מוזיקה! D:
שיר שממש אהבתי מהאלבום החדש של Disturbed, הלהקה האהובה עלי!

לילה טוב :)

יום חמישי, 3 בפברואר 2011

מי אמר שמתמטיקה לא יכולה להיות יפה?

היי,

זה הפוסט הראשון בבלוג שלי שיכיל תוכן.
תכננתי לכתוב על Global Game Jam 2011 בישראל אבל ברגע האחרון החלטתי להחליף נושא.

היום דיברתי עם חבר שלי במסן על שההורים שלי החליטו להעיר אותי כשנרדמתי אחרי שחזרתי מבית הספר ואז אמרתי לו שלא הצלחתי לחזור להרדם.
הוא אמר שזה מזכיר לו את אפקט הפרפר ותורת הכאוס (אל תשאלו אותי איזה ספרים הילד קורא...), ואז הוא שלח לי לינק לויקיפדיה על כאוס ולאחר מכן על קבוצת מנדלברוט.
קבוצת מנדלברוט היא אוסף של נקודות המהוות פרקטל (פרקטל - צורה החוזרת על עצמה בקני מידה שונים, בחלק מהפרקטלים משתנה מעט הצורה).
 הגדרת הקבוצה היא כל הנקודות שעבורן הסדרה: zn+1 = zn2 + c חסומה (כלומר - יש ערך כלשהו שהיא לעולם לא תעבור אותו). z הוא מספר מרוכב, כלומר הוא כולל חלק ממשי וחלק לא ממשי וכך גם C. ממש לא בא לי להכנס לכל ההסבר המתמטי של מספרים מרוכבים, אז מי שלא הבין שיעבור למתמטיקה 5 יחידות או שייאלץ ללמוד לבד. :)
הדבר שכל כך יפה בקבוצה הזאת הוא שאם משחקים טיפה עם הפונקציה ניתן לקבל תמונות מדהימות.

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

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

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

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

אז קוד הפסאודו למי שמעוניין:

והקוד שכתבתי ב-XNA (מכיל את יצירת התמונה בלבד, ללא הציור למסך):

כאן תם הפוסט השני בבלוג, מקווה שנהנתם.
בפוסט הבא אני מקווה שיצא לי לכתוב על Global Game Jam כמו שתכננתי.

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


 
אז שיהיה לכולנו לילה טוב! :)




יום רביעי, 2 בפברואר 2011

הגיע הזמן שגם לי יהיה בלוג :)

היי,

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

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

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

אם יהיה לי זמן יום אחד אני אפרט בדיוק איזה שפות אני יודע, באיזה שלב עברתי מתוכנה לתוכנה וכו'.. אבל השעה כבר 1 ומחר אני לומד (והרבה =\) אז...

לילה טוב :)


החלטתי שכל פוסט יסתיים בשיר מהפלייליסט שלי או סתם שיר שמצאתי ביוטיוב והתלהבתי ממנו.
השיר Evolution של Korn, שיר מצויין לכל שעה של היום ולכל מצב רוח!