יום שלישי, 29 בנובמבר 2011

בעיות גדולות, פתרונות קטנים



בעיות גדולות, פתרונות קטנים




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








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


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


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




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


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


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


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


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


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


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



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






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


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




"...מה שהפך את הבחירה ללא משמעותית, ולמעשה הרס את הרעיון של מורכבות טקטית במשחק."


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


"היה לנו רעיון למשחק פלטפורמה שמבוסס על המשחקיות של The Lost Vikings, משחק שיצא מהחברה Silicon & Synapse, שלימים הפכה ל Blizzard".


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


לדוגמה, לפני כמה וכמה שנים הייתי חבר בצוות קטן של מפתחים בחברה בשם Koplay. למעשה היינו קבוצת חברים שכולם למדו מדעי המחשב בזמנו. היה לנו רעיון למשחק פלטפורמה שמבוסס על המשחקיות של The Lost Vikings, משחק שיצא מהחברה Silicon & Synapse, שלימים הפכה ל Blizzard. וחשבנו שזה יהיה נחמד לבנות את המשחק הזה כמשחק פרסומי, וכך לגייס תקציב לפיתוח שלו. אז אני יצרתי בזמנו אנימציות לדמות התינוק של במבה, ולדמויות של ביסלי, ויצרנו דגם קטן של המשחקיות בפלאש, ואיתו ניגשנו לאסם.
בסופו של דבר מסיבות שונות (בעיקר חוסר הצלחה של משחק פירסומי קודם של במבה) לא קיבלנו מהם מימון, אבל ראש הצוות לקח על עצמו אחריות גייס כסף, ובסופו של דבר הרמנו את המשחק The Dudes, שאפילו שווק בזמנו על ידי אטרי בארץ. (לצערנו ההשקעה לא חזרה, אבל אפשר להגיד שכולנו עשינו שם את הצעד הראשון והמשמעותי שלנו בפיתוח משחקים).


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


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






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


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


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


"עדיין יש מצב שעוד שבוע, שבועיים או חודש, תצטרכו לחזור על התהליך"




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


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


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


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


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


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



2 תגובות:

  1. אבל למה לומר "פרוטוטיפ" כשאפשר לומר "אבטיפוס"?

    השבמחק
  2. לא יודע - יותר מתחבר לי בראש ללהקה הישראלית.

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

    אבל אם יותר מתאים לך, סבבה :).

    השבמחק