ב-Online
 
 
 
 
 
טעינה...
 
 
 
לפרק את הבייט 
איך כותבים משחק – Byteroids! 
 
 מסך הפתיחה לאחת מגרסאות אסטרואידס   
לפרק את הבייט |
 

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

 
 
 
 
 
 
פרסומת
 
לרגל ההשקה הרכה של אתר הבית החדש שלי, בחרתי לחנוך את דף התכנות בדלפי בפרויקט תכנות כיפי (בשאיפה) שירוץ במקביל כאן ב-nana10 ובאתר שלי עם תכנים משלימים. מטרת הפרויקט היא ליצור חיקוי (Clone) של משחק מחשב ותיק ומפורסם. כמקובל בטור זה, האיפיונים, הרעיונות והטכניקות יוצגו בצורה גנרית, כאשר כל מתכנת או מתכנתת מוזמנים להסתמך עליהם כרצונם וליצור את המשחק הסופי בשפת התכנות המועדפת עליהם – או סתם לשבת בצד, להסתכל וללמוד. קוד המקור בדלפי והתוכנה הסופית יוצעו להורדה בחינם באתר, ומשתתפים שיתרמו רעיונות טובים לעסק יזכו כמובן לתהילת עולם בצורת אזכורים ותודות בדף הפרויקט.
 
אך לפני הכל, הנה תוצאות הסקר שנערך כאן לפני שלושה שבועות, ושכותרתו היתה "באיזו שפה אתם מתכנתים?". מתוך 177 הקוראים שטרחו להשיב, 39 (כ-22%) מתכנתים ב-C# כשפה עיקרית ו-21 (12%) בג'אווה. כמעט 20% אינם מתכנתים אבל היו רוצים ללמוד – איזה יופי! – ואילו 9% אינם רוצים אף ללמוד, ונראה שהגיעו לכאן רק להיות עם המאגניבים.
 
תוצאות הסקר: באיזו שפה אתם מתכנתים? עיבוד: עידו גנדל
 תוצאות הסקר: באיזו שפה אתם מתכנתים? עיבוד: עידו גנדל 
 

מ-Asteroids ל-Byteroids!

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

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

כללי המשחק

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

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

קובץ PDF עם תיאור מפורט קצת יותר של המשחק אפשר להוריד מדף הפרויקט באתר שלי.
 

זהירות, מכשולים

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

הראשונה והבסיסית ביותר היא בעיית התזמון. הקשישים בינינו זוכרים בוודאי את המשחקים של ה-XT וה-AT, שעבדו נפלא עד שהגיעו המעבדים הזריזים 386, 486 וכמובן הפנטיום. המשחקים נכתבו עבור המעבדים האיטיים והנפוצים, ואילו במחשבים המהירים הם פשוט עבדו מהר מדי, כך שלא ניתן היה לשחק בהם כלל. כבר אז הובן הצורך בתזמון פעולות שאינו מסתמך על מהירות המעבד נטו אלא על שעון כלשהו. צורך זה קיים, כמובן, גם כיום וביתר שאת לנוכח מגוון המעבדים העצום שיש בשוק. לרוע המזל, הכלים הבסיסיים למדידת זמן ב-Windows, קרי שעון המערכת ורכיבי Timer סטנדרטיים, אינם מדויקים ו/או בעלי רזולוציה מספקת למטרותינו. אנו נאלץ למצוא פתרון חכם יותר, וכרמז נזכיר בינתיים את שמות הפונקציות QueryPerformanceCounter ו-QueryPerformanceFrequency.

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

קדימה, לעבודה

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

כל הזכויות שמורות 2011 © נענע 10 בע"מ
 
 
 
עוד בערוץ Online
 
 
עוד ב- nana10
 
ערוצים  Online  אוכל ורק אוכל  אופנה ולייף סטייל  בידור  גיימר  הורדת תוכנות  חדשות  ילדים  ישרא-בלוג    כסף  מוזיקה  מבזקים  פורומים  צ'אט  ברנז'ה  סלבס  ספורט  תחזית מזג אוויר  מיוחדים  בלוג הספורט - קרב 10  אמץ ספורטאי אולימפי  WTF - חדשות מוזרות  לקראת הסכם עם איראן?  אסטרולוגיה  טיפים מרעננים לבית  עולם היופי והשיער  עולם היין  תלתלים: כל הטיפים  שירותים  אימייל  אינדקס אתרים  הורוסקופ  הכוונת לימודים  טבלת קלוריות  לוח הופעות חיות  קופונים ודילים  שליחת קבצים גדולים  מחירוני בעלי מקצוע  משחקים וכיף  משחקים - ראשי  משחקי אקשן  באבלס  בן 10  משחקי בנות  משחקים לילדים  משחקים להורדה  סרטים לקטנטנים  אנגרי בירדס  תוכניות ערוץ 10  גיא פינס  בני ערובה   אמבוש   דוקו 10  הבוקר עם אורלי וגיא  היום שהיה  המגזין  המהדורה המרכזית  צינור לילה    בובה של מדינה  לונדון את קירשנבאום  לילה כלכלי  ערב טוב עם גיא פינס  פנים אמיתיות  צינור לילה  שעת הדרקון  >> כל התוכניות  >> שידור חי 
 
nana10 גם ב-
 
 
כל הזכויות שמורות © Nana10 בע"מ
Video powered by