יום רביעי, 1 בפברואר 2012

מחשבות על GGJ2012 בירושלים


בדיוק כמו המעבר של הומר סימפסון בין 5 שלבי האבל:





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

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

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

אז מה אפשר ללמוד מה GGJ?


1.  brainstorming - חושבים על רעיון למשחק. 


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

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

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

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

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

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

אז מה המחשבות שלי בנושא.

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

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



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


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

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

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

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


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

2. concept art ן - פרוטוטייפ.
תמונה קשורה

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

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

למשחק שעשינו בסופו של דבר היו הרבה פיצ'רים.

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


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

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

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

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

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

אז מה המסקנות שלי לגבי השלב הזה של העבודה:

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

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

3.  הסעיף הזה הוא בעצם שילוב של 1+2 - לעשות משחק פשוט. אין טעם לעשות משהו גרנדיוזי, ולא להספיק אותו. גם אם רוצים להוסיף wish list של דברים נוספים, ללכת על משהו ממש פשוט, שגם קל יחסית לבנות, וקל יחסית להבין. יש 48 שעות, כולל שינה (או שלא), קפה, עוגיות, והפסקות שרותים (תתקלחו אחרי זה!!!) . אז ללכת על משהו פשוט, שעומד בפני עצמו, ויכול להחשב כמשחק בפני עצמו.

3. משלבים ביחד,

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

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

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


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

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


זה סרטון שמציג מה יצא לנו (עם frame rate לא משהו):





הסיכום 

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




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

בכל מקרה הכל נעשה בטווח של 48 שעות, ונטו  עבדנו על המשחק פחות מ 24 שעות.

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

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

אני אשמח לדעת מה דעתכם.




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

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

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

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

פה אתם יכולים למצוא את המשחק באתר של GGJ

הערה חשובה: המשחק פותח עם פלאש ( CS5.5 ) ו box2d זו הזדמנות מצוינת למי שרצה לראות פרויקט שלם עם box2d בפלאש, לראות וללמוד קצת על אייך אני עובד עם זה. 

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