Game Engines
Game Engines

יומנו של מתכנת: כיצד נוצרו משחקי המחשב שכולנו משחקים בהם?

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

מהו מנוע משחק?

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

אז עכשיו, לאחר שהצצנו בקצרה מעבר לחלון והבנו יותר מהו מנוע משחק נעבור לשאלה הבאה – כיצד מנוע משחק באמת נוצר? ובכן פה מגיעה ערימה ענקית של שורות קוד. מנוע משחק נוצר על ידי תכנות. אפשר להשתמש בשפות תכנות שונות כדי ליצור מנוע משחק, ברוב המוחלט של המקרים מנוע המשחק יהיה מורכב משפות תכנות שהן low level כגון c,c++,Assembly ועוד. כפי שכבר הבנתם עד כה, כדי לבנות מנוע משחק צריך ידע מעמיק ביותר בשפות תכנות, אך כדי להשתמש במנוע משחק שכבר קיים מספיק לדעת את אותה שפת התכנות שבה משתמשים כדי ליצור משחקים. בניגוד למה שמצופה לחשוב, שפת התכנות המשומשת בתוך מנוע המשחק לא תמיד זהה לשפת התכנות אשר איתה נוצר המשחק. הפעם אנחנו נצא למסע ונעבור על משחקים שכולנו מכירים ועל מנועי משחק שונים ונתחיל להבין יותר כיצד באמת משחקי מחשב נוצרים.

id tech – ברוך הבא Doom אב האומה

id Tech Engine
id Tech Engine

מי שלא מכיר את Doom שיצא מהכתבה(סתם לא באמת, תשארו 🙂 ). Doom הוא אחת הנוסטלגיות שהכניסו חלק לא קטן מאיתנו אל עולם הגיימינג.כשאמרתי שאנחנו יוצאים למסע באמת התכוונתי לזה. אז המשחק Doom יצא בשנת 1993 והוא מבוסס על מנוע המשחק id tech. מנוע משחק שנבנה בשפת c והשימוש בו נעשה בשפת ActionScript. מנוע המשחק הוא דו מימדי, הסיבה שהמשחק Doom הינו תלת מימדי היא בזכות פונקציות חכמות שיצרו אשליה תלת מימדית.

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

 

אני רוצה לקפוץ לדור השישי של המנוע, id tech6. כדי להראות איפה אנחנו באמת עומדים היום מבחינת יכולות מנועי המשחק החדשים שנוצרים :

זהו Doom 4. המשחק הוצג בכנס E3 האחרון והותיר את כל הקהל וגם אותי פעורי פה. משנה לשנה המנועים רק מתחזקים והאפשרויות רק מתרחבות.

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

iw engine -סדרת Call of duty

 

id Tech Engine
id Tech Engine

אני מניח שכולם ישאלו למה גם כאן שמתי את תמונת המנוע id tech במקום את של iw engine. הסיבה לכך היא שליבת המנוע שבו נבנה Call Of Duty הראשון היתה בעצם מנוע ה id tech III. זאת גם הסיבה שהבאתי אותו כאן. אז Call Of Duty התחילו ממנוע המשחק שנוצר בשביל Doom, הוסיפו עליו ופיתחו את מנוע ה iw engine ויצרו את משחק ה COD הראשון. ומאז לכל כותר בסדרה נוצרת גרסה חדשה למנוע המשחק iw engine. בכותרי משחקי ה Black Ops שבסדרה המנועה נקרא Black Ops engine אבל גם הוא בנוי על אותו עיקרון של שדרוג המנוע הקודם שכבר היה קיים. הנה טריילר המשחק Call Of Duty Black Ops III, המשתמש במנוע המשחק Black Ops III Engine, העדכני ביותר שיצא לסדרת Call Of Duty:

FROSBITE – המנוע של EA ו DICE

FROSTBITE
FROSTBITE

אי שם בעבר, בשנת 2008, EA נכנסת לשיתוף פעולה עם DICE וביחד הן יוצרות את Frostbite 1.0. המנוע, הבנוי בשפת c++, הביא חידושים שלא נראו עד אז – טכנולוגיית ה HDR Audio שאיפשרה לשמוע קולות חשובים במשחק גם אם יש קולות אחרים שמפריעים(לדוגמא: קולות של יריות תמיד היו נשמעים מעל מוזיקת המשחק), וכמובן טכנולוגיית Destruction 1.0 שאיפשרה לשחקנים להרוס חלקים שונים מהמפה כמו קירות(כי מי לא ניסה סתם לפוצץ מבנה בשביל הספורט). מנוע המשחק הזה הביא לנו את הכותר Battlefield: Bad Company. כשנה לאחר מכן יצא Frostbite 1.5 עם טכנולוגיית Destruction 2.0 המשפרת את כל הכאוס שאפשר ליצור במשחק על ידי הריסת אובייקטים שונים. מנוע משחק זה הביא לנו את Battlefield 1943 בשנת 2009, ואת Battlefield: Bad Company 2 בשנת 2010. בשנת 2011 הגיע אלינו המשחק Battlefield 3 שנוצר בגרסת המנוע הבאה, שהיא Frostbite 2. מלבד העובדה שהחליטו לקרוא למנוע המשחק לא בשם עשרוני(שימו לב שאין נקודה לאחר המספר אצלו) המנוע מצוייד בטכנולוגיית Destruction 3.0, שאיתה, אתם יכולים לשער, מגיע שיפור בחווית הריסת הבניינים היקרה שלנו. כבר משנת 2011, Frostbite 3 היה בפיתוח. כיום הוא מנוע המשחק העדכני ביותר בסדרה. הנה טריילר המאפיינים של מנוע המשחק:

 

 

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

Plants vs. Zombies: Garden Warfare , Dragon Age: InquisitionNeed for Speed RivalsMedal of Honor: Warfighter. מלבד זאת גם הכותרים העתידיים לבוא של משחקי Mass Effect ו Mirror's Edge מפותחים במנוע משחק זה. 

Unreal Engine – חברת Epic שיחקה אותה

 

Unreal engine 4
Unreal engine 4

הכירו את Unreal Engine – מנוע המשחק שגרסתו הראשונה פותחה בשנת 1998 על ידי חברת Epic. המנוע פותח בשפות C++,C#, ו – Assembly. האמת היא שאני נורא מתרגש מלכתוב עליו, כי הוא מנוע המשחק שהכי הפתיע אותי לטובה, ועוד מעט תבינו למה. נתחיל מגרסתו הראשונה – Unreal Engine 1 אשר הביא לנו את אחד מהמשחקים הנוסטלגיים האהובים עלי – Unreal Tournament. הנה סרטון מהמשחק כדי שנקבל נקודת מבט על היכן הכל התחיל בשביל אותו מנוע משחק:

בין אותם משחקים אשר פותחו ב Unreal Engine 1 אפשר למצוא גם את שני המשחקים הראשונים בסדרת הארי פוטר.

נתקדם ארבע שנים לשנת 2002 מאז מנוע המשחק בגרסתו הראשונה ונקבל את Unreal Engine 2. השיפור הכי משמעותי שהמנוע קיבל היה במערכת הפיזיקה שלו. עם הזמן הוא קיבל עוד ועוד שיפורים וליטושים, ואיתם הגיעה רשימה מרשימה של משחקי מחשב שפותחו דווקא במנוע המשחק הזה. ביניהם אפשר למצוא את  Killing Floor, I Am Alive, Bioshck 1, Bioshock 2, סדרת Splinter Cell האגדית ועוד.

בשנת 2004 פורסמו לראשונה תמונות ממנוע המשחק Unreal Engine 3, מאז הוא היה בפיתוחים מתמשכים. כדי להיכנס לקנה מידה על הצלחתו של המנוע. בשנת 2012 רכשו ה FBI את רישיון המנוע שעוד היה בפיתוח מתמשך בכדי להשתמש בו למטרת אימונים על ידי סימולציה. זו היתה פרצת דרך למנוע שגרמה לו לצעוד אל מעבר לעולם הגיימינג שעד כה יצא לו להכיר. מנוע משחק זה פעל בצמוד למנוע המשחק Unreal Engine 2, מה שגרם לתוצאה מוזרה – יכולתם למצוא משחק שפותח בשנת 2010 על ידי מנוע המשחק Unreal Engine 3. ושנה לאחר מכן משחק אחר שפותח במנוע המשחק Unreal Engine 2. בין המשחקים שפותחו במנוע המשחק Unreal Engine 3 אפשר למצוא אתMortal Kombat X, Mirror's Edge, Outlast, הכותר החדש של Thief, סדרת Mass Effect, וכמובן שאציין פה את Unreal Tournament 3 לשם סגירת מעגל קטנה. הנה הטריילר שיצא למנוע המשחק Unreal Engine 3 בשנת 2012:

 

ועכשיו נגיע לחלק הכי מעניין שהוא – Unreal Engine 4. התחלת פיתוחו של מנוע משחק זה התחילה למעשה כבר משנת 2003 על ידי מחלקה אחרת בחברת Epic. אך ההכרזה על פיתוחו של אותו מנוע הגיעה רק כשנתיים לאחר מכן. גרסתו הרשמית יצאה לשוק בשנת 2014. אחד המשחקים שזכו להיות מפותחים במנוע משחק זה הינו Daylight.

כדי לקבל מבט יותר טוב עליו, הנה סרטון הטריילר של מנוע המשחק:

הנה סרטון נוסף של ארכיטקטורה במנוע המשחק Unreal Engine 4:

ומה אם אני רוצה התחיל לבנות משחק משלי?

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

GameMaker Studio

Game Maker
Game Maker

GameMaker Studio הוא מנוע משחק חינמי בגרסתו הבסיסית, שהיא בפני עצמה מספיקה ביותר בשביל להתחיל ליצור משחקים התחלתיים. המנוע הוא מנוע דו ממדי עם אפשרויות מסויימות שנותנות אפקט תלת ממדי(מנועים אלה מוגדרים בתור 2.5D) ומשומש בעיקר למשחקי אינדי. מקום טוב מאוד להתחיל ממנו פיתוח משחקים. פיתוח המשחקים במנוע נעשה בשתי דרכים – גרירה של פעולות(אם השחקן אסף את המטבע נגרור פעולה שתגדיל את הניקוד שלו ב-1), או תכנות בשפה שנוצרה במיוחד למנוע הנקראת Game Maker Language(לעיתים תיפגשו בה בתור הקיצור GML). השפה אינה קשה ללמידה וישנם מגוון מדריכים גם באתרו הרשמי של מנוע המשחק  וגם ביוטיוב. הנה סרטון הממחיש את יכולות המנוע מהשנה האחרונה:

מנוע המשחק זמין להורדה בחנות ה Steam. מוזמנים לחפש.

Unity 3D

 Unity 3D
Unity 3D

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

 

אז מה ההמלצה שלי? תורידו את GameMaker Studio ותלמדו את שפת המנוע או תשתמשו באפשרות הגרירה שהזכרתי לעיל, ותפתחו את משחק האינדי הכי פשוט שאתם יכולים. אני בטוח שלכולם יש רעיונות בראש למשחק מדהים שיכול להביא משהו חדש אבל זה לא יעבוד, לא כרגע. הדבר הראשון שצריכים לעשות לפני שמנסים לירות אל המטרה הסופית הוא לירות אל מטרה יותר קרובה, כמו שובר לבנים או Pong הידוע. לאחר מכן או שתנסו לבנות משחק יותר מתקדם ב GameMaker Studio, או שתעברו ל Unity 3D ותלמדו את שפת התכנות C#, שעליה דיברתי בשבוע שעבר בנוסף לשפות תכנות אחרות.

סוף דבר

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

 

אודות יאיר משניות

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

5 תגובות

  1. איך אתם מדברים על מנועים בלי לכתוב על source?

    • יאיר משניות

      כפי שאפשר לראות מנוע המשחק Source נמצא בתמונת הכתבה כך שזה לא שאיני מכירו. כמון כן גם מנוע המשחק Cryengine אינו בכתבה כיוון שרציתי להציג את מנועי המשחק שממקיפים כמה שיותר משחקים. מכיוון שיש עשרות של מנועי משחק, טבעי שחלקם לא יהיו על אף שהם הביאו משחקים טובים. אחרת הייתי מביא פה גם את מנוע המשחק Creation Engine שהביא את Skyrim אבל כמו שאמרתי הייתי מעוניין להקיף כמה שיותר משחקים.

  2. ממתי אסמבלי היא שפה עילית?
    היא בסה״כ שלב אחד מעל שפת מכונה, תרגום ישיר של פקודות המעבד הבינאריות.
    גם על C יש שיתווכחו האם היא נחשבת עילית כיום (ואפילו על C++..)

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

    • יאיר משניות

      צודק במאה אחוז, הכוונה היתה לשפות low level וחלב בלבול קל במהלך הכתיבה. תודה רבה על התיקון

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

השאר\י תגובה