כולנו נתקלנו בצמד המילים "מנוע משחק". מה זה אומר? אילו מנועים קיימים? מאיפה הם הגיעו? מה עושים איתם? כל התשובות בכתבה!
בימינו, כאשר נראה שהגביע הקדוש בעיני המפתחים הוא לעצב משחק שיתהדר בגרפיקה מציאותית ככל האפשר, אנחנו נתקלים הרבה במושג "מנוע משחקים". רבים מאיתנו מכירים את לוגו ה-U הוותיק במשחקים שעוצבו במנוע המשחקים Unreal, וחלקנו וודאי זוכרים את המשפט האייקוני Achieved with CryEngine שהופיע בפתיחת משחקי Crysis לדורותיהם. אבל מה הם בעצם אותם מנועי משחקים, וכיצד הם משרתים את המפתח בבואו ליצור משחק שיגרום לשחקנים לשמוט את הלסת בהפתעה?
כדי לענות על השאלה הזאת, נצטרך לחזור לשנות ה-80: בשנים הללו הזיכרון שעמד לרשות המחשבים האישיים היה רק שבריר ממה שאנחנו רגילים לו כיום, ולכן כדי לאפשר את הרצת המשחק שפיתחו, נאלצו מפתחים לבצע מיטובי זיכרון שינצלו עד תום את יכולות המחשוב שעמדו לרשותם. נוסף על כך, ההתקדמות הטכנולוגית הייתה מהירה מאוד, כך שכל כמה שנים יצאה חומרה שמאפשרת להשתמש בהרבה יותר זיכרון, ואפשרה למפתחים לבצע דברים ששנה קודם לכן היו נחשבים לניסים. לעובדות הללו היו 3 השלכות עיקריות: הראשונה היא שמפתחים לרוב התעקשו לבנות את המשחקים מאפס, תוך שימוש בכלים המסובכים לשימוש מצד אחד אך מקנים שליטה ניכרת בזיכרון מצד שני. השנייה היא שגרפיקה לא היה נושא שהוקצו לו משאבי מחשוב גדולים מדי, שכן רוב המשאבים נדרשו לתפעול הבסיסי של המשחק. השלישית היא שהקוד שהשתמשו בו בפיתוח לרוב נזרק אחרי שהשתמשו בו למשחק אחד, שכן עד שהמשחק יצא לאוויר העולם, שוחררה לשוק חומרה שאפשרה לעשות הרבה יותר.
אמנם היו מנועי משחק בשנות ה-80, כמו מנוע המשחק שסיפק את סט הכלים לתכנות משחק הפינבול "PINBALL CONSTRUCTION SET (1983)", אך לא השם ("מנוע משחק") ולא הקונספט עליו הוא מבוסס היו נפוצים ולא נעשה בהם שימוש נרחב. כל זה השתנה עם עלייתה של גרפיקת התלת-מימד באמצע שנות ה-90, כאשר חברה בשם Id Software ניסתה להשיג את היכולת להציג משחק לחימה בגרפיקה תלת-מימדית עם רמת החומרה שעמדה אז לרשותה. תוך מודעות גדולה להגבלות שהציבה אותה חומרה, החברה פעלה בנחישות כדי למצוא קיצורי דרך שיאפשרו להריץ גרפיקת תלת-מימד תוך שימוש מינימלי במשאבי המחשב. הניסיון הזה הוביל ליצירתם של נכסי צאן ברזל דוגמת Quake, Doom, ומאוחר יותר מבית היוצר של המתחרים - Unreal, ובעצם לעלייתו של ז'אנר ה-FPS כפי שהוא מוכר לנו כיום. אותם קיצורי דרך, אותם הכלים שאפשרו ליצור את המשחקים האלה ולהריץ אותם על מחשבים שחלשים יותר מהסמארטפונים שלנו כיום, יקבלו לימים את הכינוי "מנועי משחק", ולעתים גם את שמות המשחקים מהם הם נבעו (Quake Engine, Unreal Engine וכו').
היכולת לאגד את הכלים הללו, שהקלו על יצירתם של דברים מסובכים יחסית לפיתוח כמו סביבות תלת-מימד, התנגשויות בין עצמים, סימולציות פיזיקליות ועוד, האפשרות להשתמש בהם שוב במשחקים נוספים, למכור אותם למפתחים שרוצים לעשות בהם שימוש, או אפילו לשחרר אותם ככלי חינמי לקהילה ששדרגה אותם באופן התנדבותי, כל אלו הפכו את מנועי המשחק לדבר שימושי מאוד - וגם מאוד רווחי.
מאז עברו מים רבים בנהר, עולם הגיימינג עבר תלאות ותהפוכות, מנועי משחק קמו ונפלו. כיום ההגדרה הנכונה ביותר ל"מנוע משחק" תהיה:
סביבת פיתוח (IDE) המאגדת בתוכה את הכלים הדרושים ליצירת משחקים. על מנוע משחק להכיל דרך לכתוב ולעבד קוד, דרך לרנדר את סביבת המשחק בזמן אמת, ולרוב יכיל גם דרך לממש קונספטים בסיסיים במשחקים כמו פיזיקה, התנגשויות בין עצמים, אנימציה וסאונד.
יתרונות נוספים של מנועי המשחק הם היכולת לפתח באמצעותם לכמה פלטפורמות במקביל, והיכולת לעשות שימוש ברכיבים שכתבו יוצרים אחרים, בין אם מדובר בקטעי קוד הידועים בשם "ספריות" או באלמנטים מתחום הגרפיקה כמו אנימציות, דמויות ומבנים הידועים בשם "אסטים" (Assets).
חשוב להבהיר ולעמוד על ההבדל בין סביבת פיתוח (IDE) לבין ממשק תכנות יישומים (API) כמו Vulkan, DirectX ו-OpenGL. בעוד מנוע משחק הוא סביבת פיתוח, שמכילה בתוכה כלים ויזואלים שעוזרים למפתח לראות כיצד המשחק שלו ייראה וירוץ בזמן אמת, וכלים המסייעים לו לתכנת את הפונקציות המתאימות, ממשקי תכנות יישומים (API) לעיבוד תלת-מימדי כמו Vulkan ו-Direct3D, הם בעצם ממשקים המאפשרים למפתח לתקשר עם המעבד והכרטיס הגרפי של המחשב, ולבצע עליהם פקודות, פונקציות והליכים שנבנו בעבר ע"י מתכנתים המתמחים בנושא, ומיועדים לביצוע משימות בצורה היעילה ביותר האפשרית. API מאפשרים טיפול יעיל למשל באחסון ושליפת נתונים, ניהול זיכרון, קישור ליישומים אחרים ועוד, ובעולם הגיימינג מסייעים לדברים כמו מיטוב חלוקת העומס בין המעבד לכרטיס הגרפי, ומיטוב העומס על הליבות במעבד. לרוב, חלוקת המשימות ע"י ה-API מגדירה שהכרטיס הגרפי מבצע משימות גרפיות כמו רינדור ההצללות והטקסטורות, והמעבד מבצע את שאר הפונקציות הנדרשות מהמשחק.
מפיצות רבות בוחרות כיום לפתח מנועי משחק משלהם, דבר הדורש משאבים רבים כמו זמן ומימון, אך מאפשר גמישות רבה בפיתוח המשחק ואף את הרחבת הפונקציונליות של המנוע בקלות בגרסאות הבאות. למרות זאת, מעטות החברות שיכולות להרשות לעצמן לפתח מאפס מנוע משחק משלהן, ולכן רובן משתמשות באחד מבין כמה מנועים נפוצים השולטים היום בשוק.
יש כמה נקודות דמיון המשותפות לכל מנועי המשחק ומקלות רבות על עבודת המפתחים, האומנים והאנימטורים שעובדים על המשחק בצוותא, כל אחד מהכיוון שלו.
Level Designer: כלי עיצובי שמאפשר ליצור את השלבים בצורה ויזואלית, לשנות את תוואי הקרקע ולהוסיף לו טקסטורות כך שינתן יהיה להבחין בבירור בין גבעה מיוערת לבין חול מדבר או ים, ולהוסיף לו אלמנטים שונים כמו צמחייה, מבנים, שחקנים ואפילו תאורה.
Collision and Physics System: מערכת שמסמלצת את אחד הדברים הכי חשובים במשחקים והכי ברורים מאליו בעולם האמיתי: חוקי הפיזיקה. כדי שמשחק ייראה אמיתי, האלמנטים בו צריכים להיות מושפעים מגרביטציה, להתנגש בצורה משכנעת ככה שעצמים לא יעברו אחד בתוך השני, ולעשות עוד פעולות שלאדם הנורמטיבי נראות סטנדרטיות ופשוטות. עצם העובדה שלא צריך לתכנת את כל חוקי הפיזיקה בכל משחק מחדש, מסייעת מאוד למפתחים לממש פעולות הקשורות יותר למשחק הספיציפי וייחודיות לו בלבד.
Material Creator: דרך קלה ופשוטה ליצור טקסטורות של חומר מסויים. אם אני רוצה להוסיף בית למשחק, אני מעוניין שהקירות שלו ייראו כמו לבנים והגג ייראה כמו רעפים. בשביל זה אני צריך ליצור חומר מסוג "לבנים" וחומר מסוג "רעפים" ו"להלביש" אותם על הבית עצמו כדי שייראה כמו בית ולא כמו מבנה לבן וחסר ייחוד,. זה נכון לכל דבר בעולם המשחק כולל הבגדים שילבשו הדמויות השונות, והמראה של האוייבים עצמם, ודרוש כלי פשוט שיאפשר לאומן ליצור באופן גמיש טקסטורות חדשות המתאימות לחזון האומנותי של היוצר.
Time ,Animation and Sound: מימד חשוב נוסף במשחק הוא ציר הזמן. כמו בעולם האמיתי, עולם המשחק צריך לזוז ולהשתנות כל הזמן, ולא יכול להיות קבוע. לכן דרוש כלי שידע לעבד ולשמור את התנועות והצלילים שעושים דברים בעולם המשחק, יהיו אלה גלי הים המתנפצים על החוף, סיורים של כוחות אויב, או רצפות פלטפורמה זזות. לכל אחד מהדברים הללו יש דפוס חוזר, אנימציה מתאימה שצריכה להופיע, קולות יחודיים וטריגר שמפעיל אותם, ודרוש כלי שידע להגדיר את הפרמטרים אלה, לשמור אותם ולהריץ אותם ברגע המתאים.
אחרי שדיברנו על נק' הדמיון בין המנועים השונים, חשוב להבין גם את ההבדלים ביניהם. כדי להמחיש את ההבדלים הללו , אסקור בקצרה 4 מנועי משחק: Unreal Engine, Unity, CryEngine, Godot.
Unreal Engine
המנוע המוכר ביותר בתעשייה, וככל הנראה גם הוותיק ביותר שנמצא עדיין בשימוש. הגרסה הראשונה של המנוע הושקה בשנת 1998 יחד עם משחק היריות Unreal.ונועדה להתחרות במנוע Quake Engine של Id Software. כרגע, המנוע נמצא בגרסתו הרביעית (UE4) והיא נמצאת בשימוש נרחב ע"י יוצרי משחקים מסביב לעולם. משחקים שפותחו באמצעותו לאחרונה הם לדוגמה: Fortnite, Final Fantasy VII Remake, Returnal, The Medium וגם Of Bird And Cage הישראלי. הוכרז כי הגרסה החמישית של המנוע, UE5 תצא בסוף שנת 2021. עד לשנת 2015, השימוש במנוע היה מותנה ברכישת מנוי לתקופה מסויימת, והיה צורך לחדשו. בשנת 2015, בשל התחרות עם מנוע הפיתוח Unity, המנוע שוחרר באופן חינמי לכל המשתמשים, תמורת 5% מההכנסות העתידיות של המשחק כאשר הוא יעבור רף הכנסות מסוים. המנוע מתבסס על שפת C++ ורוב התכנות במנוע נעשה בשפה זו, אך הוא אינו מחייב ידע בתכנות לשם שימוש בו, ומאפשר תכנות ויזואלי באמצעות קטעי קוד מוכנים מראש בשם Blueprints.
מנוע שמתמחה בגרפיקה תלת-מימדית מרשימה, ונעשה בו שימוש בעיקר ע"י סטודיואים גדולים, ליצירת משחקי טריפל A. שימוש נוסף בכלי האנימציה החזקים של המנוע נעשה גם בתעשיית הקולנוע, בסדרות דוגמת The Mandalorian ו-Westworld.
Unity
המתחרה הגדול ביותר של Unreal Engine ואחד המנועים הנפוצים ביותר בעולם, והנפוץ ביותר בישראל. הגרסה הראשונה של המנוע הושקה בשנת 2005 ונועדה להנגיש את עולם פיתוח המשחקים לציבור הרחב. הגרסה האחרונה של המנוע היא Unity 2021, והמנוע מתעדכן באופן שוטף עם שיפורים קלים על בסיס שבועי. כותרים מוכרים שיוצרו עם המנוע הם לדוגמה: Escape From Tarkov, Hollow Knight, Cuphead, Pray for the Gods, Genshin Impact ו-Call Of Duty Mobile
המנוע Unity הוא חינמי לחלוטין ונכון להיום מבוסס על שפת התכנות C# ומאפשר תכנות ויזואלי גם ללא ידע בתכנות באמצעות Bolt. המנוע נחשב לקל יותר לשימוש מאשר Unreal, ומכיל את חנות האסטים הגדולה ביותר מבין כל המנועים הגרפיים הפתוחים לשימוש. Unity הטמיע תמיכה בפיתוח לפלטפורמות IOS ו-Android בשלב מוקדם יחסית במחזור החיים שלו ומכיל כלים רבים המקלים על פיתוח למובייל אשר מתעדכנים באופן תדיר. כל היתרונות הללו הפכו אותו למנוע המועדף על יוצרי משחקים עצמאיים.
המנוע מתמחה בעיקר בגרפיקת דו-מימד אך מסוגל לייצר גם סביבות תלת-מימד מרשימות עבור מעט יותר מאמץ. השימוש בו שכיח בעיקר בקרב סטודיואים קטנים, מפתחים עצמאיים, ומפתחים לפלטפורמות המובייל.
CryEngine
אם Unreal Engine היה מדור המייסדים של המנוע הגרפי, ו-Unity מקביל לאביב העמים ולמהפכות הדמוקרטיות, אז CryEngine היה ללא ספק המהפכה התעשייתית. מה שהחל כדמו טכנולוגי לאינבידיה, והפך למשחק ברגע שזיהו את הפונטציאל הטמון בו, התחיל תקופה שבה גרפיקה היא לא דבר שנדחק לשוליים בשל הגבלות חומרה, אלא במובן מסויים ההישג עצמו. המשחק הראשון שפותח במנוע הוא Far Cry ב-2004, וגרסת המנוע בה השתמשו לפיתוח המשחק נמכרה מהר מאוד ליוביסופט ושמה שונה ל-Dunia Engine. המנוע שנצרב לגיימרים בתודעה הוא בעצם CryEngine 2, המנוע שבישר על מהפכת הפוטוריאליזם בגיימינג עם המשחק Crysis. מדובר בפעם הראשונה שבה משחק כיוון ישירות לגרפיקה פורצת דרך, ולא ניסה לבצע מיטובים אלא דרש את דרישות המערכת הגבוהות ביותר האפשריות, שנשארו גבוהות גם עשור אחרי יציאת המשחק והביאו ליצירת המים הטכנולוגי המוכר "But Can It Run Crysis?", ולשדרוגי חומרה מסיביים בעשור העוקב. בשל המעבר לתמיכה בקונסולות, אשר מבוססות על חומרה שמתיישנת עם השנים ואינה יכולה להשתדרג, יוצרת המנוע, חברת קרייטק הגרמנית, החליטה לנטוש את גישתה הקודמת של "פיתוח רק לחומרת מחשב עילית". אף על פי כן, הנטייה לגרפיקה מושקעת ולדרישות מערכת גבוהות נותרה בעינה ומתבטאת גם בשאר המשחקים המפותחים במנוע.
CryEngine המקורי שוחרר ב-2002, והגרסה האחרונה שלו היא CryEngine V. עקב קשיים פיננסיים החברה נכנסה לשותפות עם חברת אמאזון, ויחד הן יצרו מנוע המשך חינמי לשימוש לגמרי היורש מ- CryEngine את כלי הפיתוח והנטייה לפוטוריאליזם, ומאמזון את הגישה לשרתים והאינטגרציה עם Twitch, ונקרא Amazon Lumberyard.
משחקים שנוצרו עם CryEngine הם: Crysis series, Prey, Evolve ,Kingdom Come: Deliverance, Sniper Ghost Warrior series ועוד.
CryEngine מתמחה בגרפיקת תלת-מימד ובסביבות פוטוריאליסטיות גדולות, בעיקר חיצוניות ועתירות צמחייה. שפות הפיתוח בו הן C++, Lua ו-C#. הוא אינו תומך כרגע במובייל אך אמור להתחיל לתמוך בו בקרוב.
GODOT
מנוע חינמי תחת רישיון קוד פתוח. משתמש ב-C++, C, ובשפת סקריפטים משלו הנקראת ;GDScript. עם מאמץ קטן, המנוע מאפשר גם שימוש בשפות תכנות רבות אחרות. הגרסה היציבה הראשונה שוחררה בדצמבר 2014, והמנוע מיועד לפשט את התכנות באמצעות שימוש במערכת הקרויה חוליות וסצנות (או Nodes ו-Scenes) , כך שהתכנות לא יהיה בהכרח באמצעות שפת תכנות, אלא אינטואיטיבי וגרפי בעיקרו.
המנוע מיועד בעיקר ליוצרים עצמאיים, ומתמחה בגרפיקת דו-מימד, על אף שניתן לעבוד בו גם בתלת-מימד, ותומך במערכות ההפעלה העיקריות למחשבים האישיים ובמובייל. (אין תמיכה מובנית בקונסולות, אך ניתן לבצע להן פורטים באמצעות תוכנות צד שלישי).
מדובר במנוע צעיר שאין באמתחתו משחקים מוכרים להתהדר בהם, ועדיין חסר יכולות ועומק שקיימים במנועים האחרים. אף על פי כן, מדובר במנוע שמפותח ומשודרג כל הזמן בהתנדבות ע"י הקהילה, מה שמאפשר לו גמישות גדולה ויכולת להשתפר כל הזמן, בניגוד לריכוזיות במנועים אחרים. GODOT הוא בעצם הלינוקס או האנדרואיד של מנועי הפיתוח, ומי שמכיר מעט את ההיסטוריה של שני האחרונים יודע שככל הנראה שווה מאוד לעקוב אחריו.
כמובן שקיימים מנועים רבים אחרים כמו למשל Ren'py למובייל או GameMaker, אבל אלו 4 המנועים העיקריים שלדעתי חשוב להכיר. מקווה שהצלחתי להסביר קצת מה הם מנועי משחק, מאיפה הגיעו ולשם מה אנחנו צריכים אותם. אם יש לכם שאלות נוספות או שאתם מעוניינים בהבהרה, אתם יותר ממוזמנים לשאול בתגובות ואשתדל לענות ולהרחיב, מאחל לכולנו ימים שקטים ובטוחים ולהתראות בכתבה הבאה!
*רוצים לקבל את כל החדשות החמות ישר לנייד? הצטרפו לערוץ הטלגרם של Vgames!*
תגובות
1
18:07 01.06.2021 | Guy94
כתבה מעניינת ומקצועית, תודה!
2
| פורסם ע"י