בתשובה לגדי אלכסנדרוביץ', 12/06/05 19:29
בקיצור 308263
"אגב, איפה מגישים כאלו דברים?"

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

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

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

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

אגב, במה המשחק כתוב? ויז'ואל בייסיק? זו לא שפה נוראית? והאם אתה מכיר את SDL? זה מה שאני משתמש בו (אם כי אני בשלבי היכרות איתו).

(ואיפה אפשר יהיה למצוא את המשחק אחרי ההגשה?)
בקיצור 308293
כאב הראש הוא כאשר אתה מעוניין להוסיף אלגוריתמים (של ב"מ למשל) שגוזלים זמן CPU ולוקח לך יותר זמן לסיים את החישוב מאשר שיש לך (לפני שאתה חייב לעדכן את המסך ולפני שנוצרת סיטואציה חדשה עמה הסוכנים השונים צריכים להתמודד‏1, אין לך את הפריבלגיה של להגיד לשחקן "פוס, המשחק יחזור בעוד מספר רגעים, עכשיו חושבים"). כמובן שיש לכך פתרונות די פשוטים (time slicing של חישובים, פתרונות חלקיים/מקורבים של בעיות או סתם אשליה של אינטליגנציה במקום חישובים מורכבים של ממש).

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

עוד בעיות - חשוב על משחק RTS עם טנק אחד שמשתמש באלגוריתם A* כדי למצוא את המסלול האופטימלי מנקודה א' לנקודה ב'. לא נשמע מסובך במיוחד (1/50 השניה זה המון זמן, אפילו כאשר המפה שלך די מורכבת). עכשיו תאר את אותו משחק עם 60 טנקים שקיבלו פקודה לעבור בין שתי נקודות על המפה (עם הרים, גאיות צרים ומכשולים זזים בדרך) וחשוב על הסיטואציות השונות והמשונות ש(אם לא חושבים איך לפתור אותן או למצוא להן מעקף)יכולות לגרום לשחקן הרגשה שהוא נתן פקודה לאוסף טנקיסטים עם תסמונת דאון (תופעות של התנהגות דבילית שכזו, ניתן למצוא אפילו במשחקים מסחריים).

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

על SDL אפילו לא שמעתי עד התגובה שלך, אז תודה. I'll have a looksee
_________
1 עשרות עדכונים לשניה.
לומדים משחקולוגיה בארץ הקודש 318962

חזרה לעמוד הראשי

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים