משחקים בפלאש

Ultra Spidey

New member
משחקים בפלאש

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

freak2100

New member
תראה....

קודם כל, עצם הרעיון של ללמד ילדים ישר action script הוא בעייתי מיסודו. מצד אחד, זאת שפת סקריפט, והיא עלולה "לשבש" להם את ההבנה של מה שבאמת קורה שם; מצד שני, היא מונחית עצמית, ולכן יהיה להם מאוד קשה להבין איך להשמש בה. קח את זה בחשבון. השיעור הראשון, לדעתי, צריך לא לעסוק בתכנות אלא סתם קצת להלהיב אותם עם פלאש בהתחלה, קצת גרפיקה, אנימציות, movie clips, פריימים, סצינות... הם צריכים את הידע הבסיסי הזה, וזה גם בטח ילהיב אותם בתור התחלה ולא יראה להם מאיים ומפחיד. אתה יכול לסיים את השיעור במבוא כללי כזה, באויר, לגבי תכנות ("מחשב זה כמו כלב - אתם אומרים לו מה לעשות והוא עוקב אחרי ההוראות במדויק" - ככה אני תמיד חושב שצריך להסביר לאנשים שמתחילים ללמוד תכנות...) השיעור הבא צריך לעסור בתכנות, אבל לא בפריימים, movieclips וכו'. תתחיל עם דברים פשוטים שכוללים רק תכנות בפריים הראשון:
trace("Hello world!");​
כמובן תהיה תוכנית נחמדה להתחיל איתה... אחרי זה:
trace("Hello"); trace("world");​
ואז:
var i:Number; i = 3; trace(i); i = 5; trace(i); i = 3 + 5; trace(i); i = i + 1; trace(i); i += 1; trace(i); i++; trace(i);​
ואז תגדיר כמה משתנים ותשחק איתם קצת, תתקדם ככה... מערכים, פונקציות וכו' וכו' לגבי מהלך השיעורים הבאים לדעתי בהתחלה אתה צריך לתת להם דוגמאות (שיבנו לבד, אבל על פי הסברים שלך... נו, השיטה השנייה שלך). מה שכן, תן להם לעצב את זה איך שבא להם, ולהוסיף כל מני אלמנטים משלהם, שירגישו שהם עשו את זה ולא אתה. הדבר הראשון יהיה מן טריוויה, לא עם שאלות רנדומליות או משהו - משהו קבוע. מעבר בין סצנות ע"י כפתורים. הדבר הבא יכול להיות טיפה יותר מסובך, למשל טריוויה שכן יש בה ניקוד, שאלות אקראיות, סדר אקראי בין התשובות (אה, כן, הכוונה הייתה לשאלות אמריקאיות כמובן) וכו'. אחרי זה אתה יכול לעשות איזה סוג של מונופול פשוט, אני חושב שזההמשחק הראשון שאני עשיתי בפלאש. בינתיים אנחנו מדברים על דברים סטטיים, בלי תזמונים וכאלה... כשתסיים את המשחקים הסטטיים, תוכל לעבור למשחקים עם תזמון זמנים. אבל שים לב להתחיל מדברים פשוטים. אני חושב שטטריס יהיה התחלה טובה - הכוונה היא שיש לך גריד קבוע והריבועים בו נצבעים או נעלמים, לא עצמים שיזוזו, כי זה מצריך גם פיסיקה, אל תסבך אותם עם זה ישר. הדבר הבא הוא breakout/pong. פה יש לך גם realtime וגם פיסיקה, זה גם יותר מלהיב וגם לומדים מזה הרבה. הרעיון הוא שתחשוב על כמה דוגמאות, שכל דוגמה תקדם אותם בשלב. אחרי שהם יתנסו בעצמם בדוגמאות האלה, אני חושב שהם כבר יוכלו לעבור ללבנות איזה משחק קטן כל אחד. שים לב שאתה צריך לדאוג שלא יקחו על עצמם פרוייקטים מטורפים - לא לבנות את GTA2 הדור הבא, דברים פשוטים... ותדאג להגיע עם בנק של רעיונות, אני בטוח שיהיו שיתקשו לחשוב על רעיון מקורי משלהם, ואתה לא רוצה שסתם ישבו בצד ויתבאסו שכולם עובדים ולהם פשוט אין רעיון... אבל אני כן חושב ששני השלבים חשובים, אם תתן להם ישר לבנות משחק כל אחד הם לא יסתדרו ולא ידעו מאיפה להתחיל ויתייאשו מהר מאוד, אם רק תתן להם לבנות דברים שאתה המצאת הם יתבאסו שהם ירגישו שהם לא עושים דברים משלהם ממש אלא לוקחים דברים שאתה המצאת וקצת משנים אותם, לא יותר מזה. בהצלחה
 

HackMachine

New member
בעיה שאני צופה

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

freak2100

New member
טטריס זה משחק די פשוט לתכנות...

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

HackMachine

New member
ממתי ב PONG יש פיסיקה? ../images/Emo6.gif

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

freak2100

New member
נכון... אבל...

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

HackMachine

New member
אני חושב

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

freak2100

New member
אולי

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

eynetane

New member
בברייקאאוט המקורי לא היתה פיזיקה

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

freak2100

New member
זאת דווקא הגירסה היותר מסובכת ../images/Emo3.gif

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

nomadbl

New member
גם אני האמת תיכנתתי משחק פונג

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

yoniBLA

New member
עוד אלמנט קטן בטטריס

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

freak2100

New member
זה נכון...

אבל זה שוב בעיקר עבודה שחורה, לשמור לכל צורה את כל אפשרויות הסיבוב שלה, ולבדוק כל פעם שהמשבצות ריקות... טוב, אולי באמת פונג יותר פשוט
אישית המשחק הראשון שעשיתי היה מונופול והשני היה פונג (King Pong 2, ליתר דיוק, אפשר למצוא אותו להורדה מכל מני מקומות באינטרנט (לא זה שמשחקים Online, זה king pong 2 אחר שלא ידענו על קיומו
יש אחד שמורידים למחשב, עם launcher (בC++) והוא פועל בfullscreen... עם יריות ומשחק נגד AI מטורף ומודים וכו')) טטריס אף פעם לא עשיתי
 

nomadbl

New member
המשחקים הכי פשוטים שאתה יכול לחשוב עליהם...

כי מישהו שרק התחיל לתכנת לא בשל לדברים רציניים. משחקים זה דבר טוב למתחילים לתכנת אחרי שהם יודעים מספיק כי זה מספק הרבה תרגול וזה עדיין כיף. ותלך עם האפשרות השניה, הם עדיין לא יודעים מה קל ומה קשה לתכנת... וגם ככה תוכל להשתמש במשחקים שונים בשביל להעביר נושאים שונים בתכנות. למשל אתה תוכל לתכנת משחק סנייק (דבר מאוד פשוט) וכך להדגים להם רשימה מקושרת... אה רגע, יש רשימות מקושרות בפלאש Oo? בכל מקרה, אני הייתי עושה איתם את הכל בC/C++/JAVA כי אולי פלאש יותר צבעוני ולא יודע מה אבל תן להם אפשרויות להתפתח... בC++ יש הרבה יותר מבפלאש, שלא לדבר מבחינה טכנית על ההבדלים הברורים ביכולות החישוביות. אם אתה מתעקש על צבעוניות/קלות שימוש ושימוש באינטרנט אתה חייב! לא כדאי לך... אתה חייב! ללמד אותם JAVA... שפה מצוינת, היא מלמדת כמעט מעצמה את התיכנות מובנה העצמים ומה בעצם אין לה?? אז במחשבה שניה, לך על JAVA. ואל תדאג, JAVA גם הרבה יותר קלה מC++ כי אין פוינטרים ובנוסף לכך יהיו לך את כל הAPI's המצויינים של SUN לצדך... קיצר כמו שאתה רואה אני יכול להמשיך ככה שעות... בהצלחה ;)
 

De-Panther

New member
../images/Emo9.gifכן אבל הוא רוצה לכיר להם משהו קליל וכיפי..

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

nomadbl

New member
בסדר קליל וכיפי...

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

freak2100

New member
תכנות מונחה עצמים זה לא משהו קשה,

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