תוכן העניינים
Published: 10 July 2009
Hebrew translation by Aviv Sharon.
מה זה 0 A.D.?
0 A.D. הוא משחק אסטרטגיה בזמן אמת (RTS) בתלת-מימד, בפיתוח חופשי, המבוסס על ההיסטוריה העתיקה. הוא מפותח על ידי צוות מתנדבים מכל העולם בשם Wildfire Games.
מה אתם עושים?
עברנו מתהליך פיתוח סגור לקוד פתוח. כלומר, שחררנו את קוד המקור של המשחק תחת רישיון GPL, ואת התוכן החזותי (ה"ארט") תחת רישיון CC-BY-SA, כדי לעודד מפתחים חדשים מבחוץ להשתתף במאמץ הפיתוח. אנחנו עובדים על 0 A.D. בזמננו החופשי כבר מספר שנים, ועכשיו אנחנו רוצים להראות לכולם מה השגנו ולהקל על כל מי שרוצה להצטרף לפרויקט.
0 A.D. הוא פרוייקט מורכב ושאפתני מאוד. הושקעה בו עבודה רבה, אבל נותר גם הרבה מה לעשות. יודגש שאנחנו לא מפיצים משחק גמור – עד אז עוד יחלוף זמן רב. המשחק עדיין סובל מ"מחלות ילדות" בדמות תכונות חסרות, באגים ופינות שצריך לסגור. המשחק מופץ כפרוייקט בהרצה, במצב טרום-אלפא, המיועדת למפתחים שעשויים להתעניין בו, בתקווה לשתף את קהילת פיתוח המשחקים - שאחרת הייתה מנותקת מהעשייה אצלנו.
זהו צעד ניסיוני, ואנחנו עוד לא בטוחים מה יעבוד בצורה הטובה ביותר. לכן בכוונתנו להתקדם לאט לאט ולהסתגל למענה שנקבל. אמנם מסמך זה מתאר את כוונותינו ברגע זה – אבל נשמח למשוב בנושא! דברו איתנו בפורומים או בערוץ #wfg בשרת QuakeNet ב-IRC.
למה זה חשוב?
אנחנו סבורים שאנחנו יכולים להרים משחק לא רע בכלל, שיתאפיין בכמה תכונות מיוחדות. אולי אתם רוצים לתת כתף ולתרום למאמץ.
אולי אתם רוצים ללמוד מחווית העבודה על פרוייקט תוכנה מורכב, או בפרט על משחק מחשב. הפיתוח משלב מגוון רחב של תחומים, החל מהגרפיקה והשמע, דרך הבינה המלאכותית (AI), ממשק המשתמש (UI) והטיפול בקבצים, וכלה בסקריפטים, ברשתות ועוד. היסודות כבר הונחו, וחלקם כבר יציבים מאוד, אבל עדיין יש מקום רב ליוזמה ולהתעמקות ברכיבים השונים.
אולי אתם רוצים לשפר את הרצת המשחק בפלטפורמה האהובה עליכם. אולי אתם רוצים להראות לנו כמה אנחנו טיפשים, ולכתוב קוד משופר בהרבה. (אנחנו לא מושלמים, רחוק מזה).
אולי אתם רוצים לנצל חלקים מהקוד או מהארט לצרכיכם בפרוייקט משלכם. אולי אתם רוצים להשתמש בקוד לקורס הוראת פיתוח משחקים. ואולי יש לכם סיבות אחרות.
למה החלטתם ככה?
אנחנו עובדים על המשחק הזה בצורות שונות מאז 2001. התקדמנו הרבה מאז, אבל האמת שקשה ליצור משחק מסוג כזה. חברי הצוות המקוריים היו סטודנטים, ומאז כבר התקדמו בחיים וכבר לא יכולים להקדיש זמן רב לפרוייקט. קשה למשוך מפתחים חדשים, ולמעטים יש הזמן והמיומנות הדרושים ללמוד איך לעבוד במסגרת הקוד הקיים ולתרום לו משמעותית. לכן רצינו להנמיך את הרף ולהקל על הגולשים להתבונן בפרויקט ולבחון אם הוא מעניין אותם, בתקווה שחלק יחליטו שכן.
כמו כן, יש לנו כמה רעיונות, כלים ושורות קוד שמוצאים חן בעינינו והיינו רוצים לחלוק אותם עם כולם. עם הזמן, מוטב אם ננקה אותם ונתעד אותם כיאות כדי שישמשו את הזולת, אבל הצעד הראשון וההכרחי הוא להפוך את הקוד לזמין. בנוסף, שחרור לקוד פתוח מפשט את ההפצה והדיבוג, במיוחד בלינוקס, וכך החיים הופכים לפשוטים יותר עבורנו ועבור ציבור המשתמשים.
עד כה, הגישה לפרוייקט הוגבלה לחברים "רשמיים" של הקבוצה בלבד, אף על פי שהרעיון היה תמיד להפיק משחק חינמי וההצטרפות לקבוצה הייתה חופשית למדי. רעיון הקוד הפתוח פשוט לא עניין אותנו לפני מספר שנים, אבל הזמנים השתנו וכעת נראה שזו הדרך הטבעית לפתח את הפרוייקט שלנו.
אז איך יאורגן הפיתוח?
בפיתוח הפרוייקט, עלינו לכבד את הקהילה ולספק לה מידע, תקשורת ותמיכה ככל שיתאפשר, כדי שאתם תוכלו ליהנות מההשתתפות בפרוייקט, (בתקווה שתתרמו בחזרה לנו, כמובן!). יש לאזן שיקול זה עם הרצון להגיע למשחק באיכות גבוהה ועם אילוצים מהארגון שלנו בעבר.
כפי שבעבר כל המפתחים היו חלק מה"צוות" הרשמי, גם עתה, כל אחד יכול להציע את מועמדותו להצטרף ל-Wildfire Games. עם המתעניינים נערוך ראיון היכרות קצר ב-IRC. אם יתברר שיש לכם את הזמן, הכוח והמיומנות לתרום באופן משמעותי, נצרף אתכם לקבוצה בשמחה. בכוונתנו לשמור על ליבת המפתחים ועל אמצעי התקשורת הפרטיים שלנו – איננו רוצים להסתכן בלהרוס את הקבוצה הקיימת. אנחנו מתכוונים לכוון לעבר חזון מוגדר למשחק שתוכנן מראש, ולא לסטות ממנו הרבה – אנחנו מעדיפים שלא להוסיף תכונות שהן לא חלק מהמטרה שהצבנו, וגם לא להצטרך לתחזק אותן. בנוסף, אנחנו משחררים את הארט ואת נתוני המשחק עבור שתיים משש התרבויות שייכללו במשחק, אבל שומרים אצלנו את החומר על ארבע התרבויות שעדיין בעבודה עד שיהיה מוכן ושימושי יותר.
עם זאת, יחד עם ההגבלות, אנחנו פותחים את הגישה לשרת השליטה על קוד המקור (Subversion), ולמערכת התיעוד ובקרת המשימות (Trac), ומעבירים את הדיונים הטכניים שלנו לפורום פתוח. מעתה כל אחד יכול להוריד, להדר ולהריץ את הגרסה האחרונה של המשחק. בהתחלה נטפל בתרומות הגולשים באופן בסיסי מאוד: אם תערכו שינויים, תצטרכו ליצור טלאי (patch) ולשלוח לנו לאישור. ייתכן שנציע כמה שינויים, או שנטמיע אותו ישר ב-SVN.
רישוי תרומות הגולשים נותר עדיין שאלה פתוחה. מחד, אם נקבל רק קוד מורשה ב-GPL נבטיח למשתתפים שאיננו מתכוונים להשתמש ביצירותיהם לרעה. מאידך, אנחנו רוצים לשמור על אפשרויות פתוחות באמצעות קבלת קוד שהופץ ברישיון BSD, אולי כדי שנוכל להפיק גרסה מיוחדת של המשחק, הקשורה עם תוכנה קניינית למניעת רמאות במשחק, או לקשר את הקוד עם מערכות קנייניות להפצה כדי להפיץ את המשחק לקהל רחב יותר. עוד לא ברור לנו מה הפתרון המושלם, ואנחנו מעוניינים לשמוע את הצעותיכם בנושא.
מה קורה עם הקוד?
במנוע המשחק יש בערך 150 אלף שורות של קוד בשפת C++, וכלי העריכה מכילים 25 אלף שורות נוספות. הסקריפטים בתוך המשחק כתובים ב-JavaScript. אנחנו בונים תוך שימוש בספריות קיימות (OpenGL, OpenAL, ENet, ...) ולא על גבי מנוע קיים (כמו OGRE).
הקוד אינו נקי במיוחד, וגם אינו מודולרי במיוחד או כתוב במיוחד היטב. הוא נכתב על ידי מגוון רחב של תוכניתנים, והוא רחוק ממקיף. אנחנו רוצים להמשיך לנקות את הקוד כחלק מתהליך הפיתוח הרגיל. אין לנו התנגדות לשכתב חלקים שלמים אם זו הדרך היעילה ביותר לגרום להם למלא אחר הדרישות. יחד עם זאת, במקרים רבים הקוד אמין.
אפשר למחזר את הקוד?
רוב הקוד שכתבנו ספציפי לצרכי המשחק וחסר שימוש מחוצה לו, אבל חלקים מסויימים ממנו עשויים לעניין מפתחים שעובדים על פרוייקטים אחרים. לדוגמה:
- ספריית פונקציות המספקת תמיכה חוצת-פלטפורמות לניהול משאבים (טעינת קבצי ארכיון, טקסטורות והצללות GL, ...), כלי דיבוג (דיווח שגיאות, מעקב אחר הזיכרון, stack dumps), כלי תיזמון, קלט-פלט אסינכרוני, מקצי זיכרון, ...
- ממיר ממודלים של COLLADA עם אנימציית שלד לפורמט פשוט וידידותי למשחקי מחשב.
- מערכת בינארית להטמנת XML, להעלאה מהירה יותר של משאבים.
- כלים להידור אוטומטי בעזרת Amazon EC2.
- קוד מתמטי משעמם למטריצות, וקטורים ואלגברת קווטרניונים.
איך משתווה 0 A.D. למשחקים אחרים?
אנו מכירים מספרי משחקים נוספים מסוג אסטרטגיה בזמן-אמת (RTS) שמפותחים בקוד פתוח. המשחק גלסט (Glest), לדוגמה, הגיע לגרסה יציבה ומבוסס על עולם פנטזיה עם זיקה לימי הביניים. חוקי המשחק והגרפיקה בו מורכבים פחות מב-0 A.D. אך הוא כבר מכיל יריבים בעלי אינטליגנציה מלאכותית (AI), מה שחסר עדיין ל-0 A.D.. כמו-כן, ORTS היא מערכת המדגישה יותר את המחקר באינטליגנציה מלאכותית מאשר משחק מחשב שאפשר ליהנות ממנו. ספרינג (Spring) הוא מנוע RTS שנראה שנבנה לסוגי משחקים בסגנון של Total Annihilation. מנגד, 0 A.D. שואף לבדל עצמו באמצעות חוקי משחק חדשים, גרפיקה מפורטת ורקע היסטורי אותנטי.
איך מתחילים?
קראו את חוברת Getting Started (באנגלית) כדי למצוא מידע נוסף על המשחק, על פורומים לדיון, הנחיות להידור והרצה, וכן קישורים לפרטים נוספים.