Call of Duty Warzone Mobile משתמש ב-Vulkan לקבלת גרפיקה טובה יותר

צילום מסך של הלוגו של שם המשחק מ-Call of Duty Warzone Mobile.

Call of Duty: Warzone Mobile הוא משחק פעולה בגוף ראשון בסדרה הפופולרית Call of Duty. הגרסה לנייד של המשחק הפופולרי מאוד למחשב ולקונסולה משתמשת בממשקי API ברמה נמוכה לנייד כדי לספק חוויית משחק מעולה.

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

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

Vulkan, ממשק API מודרני של גרפיקה תלת-ממדית בפלטפורמות שונות, נבחר בתור ממשק ה-rendering לקצה העורפי של ה-renderer של גרף המשימות ב-Android.

איור 1. רקע מפורט עם גרפיקה שכבתית.

היתרונות של Vulkan API

כדי לשמור על הסגנון החזותי הייחודי של Call of Duty ולתמוך טוב יותר בהתקדמות המשותפת בין Call of Duty: Warzone Mobile לבין הגרסאות שלו למחשב ולקונסולה, המשחק משתמש ב-API לעיבוד גרפיקה (rendering) שדומה לזה של הטמעות קיימות למחשב ולקונסולה. ב-Android, Vulkan מאפשר ל-Activision להשתמש בכלים, בצינורות עיבוד הנתונים ובשידרוגים הקיימים שלה ולתמוך בתוכן שנוצר על ידי אומנים, בלי צורך לשנות את כל סטאק התוכנות.

ניסיון להשיג זאת באמצעות עיבוד גרפי שונה לגמרי יהיה יקר מדי, וניסיון לתמוך בממשקי API של גרפיקה מדור קודם בצינור עיבוד הנתונים של Call of Duty ישפיע בצורה משמעותית על קבוצת התכונות. ב-Activision קבעו ש-Vulkan הוא הבחירה המתאימה ביותר כדי להביא תכונות מלאות ל-Android תוך צמצום ההשפעה על תקציב הפיתוח הכולל. Vulkan זכה לתמיכה משמעותית בקרב יצרני מכשירי Android, כך שממשק ה-API הוא בחירה טובה גם לפיתוח עתידי.

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

תאימות ל-API קיים של פלטפורמה

Vulkan דומה מבחינה מושגית לממשקי ה-API הקיימים שנעשה בהם שימוש ב-Call of Duty: Warzone, עם ניהול משאבים מפורש, החלפת שמות של זיכרון, צינור עיבוד נתונים דומה למחשוב וגישה למשאבים ללא קישור. הדמיון בין הממשקים אפשר ל-Activision לשמור על עקביות מבנית של המרת התמונה עם המרת התמונה במסוף ובמחשב, תוך צורך בשינויים רק בקצה העורפי כדי ליצור ממשק עם Vulkan.

תמיכה ב-shaders קיימים שמבוססים על HLSL עם קבוצות תכונות מלאות באמצעות הידור של DXC ל-SPIR-V מאפשרת ל-Android להשתלב בצינורות עיבוד הנתונים הקיימים ל-build של Activision. התהליך הזה אמנם כולל אתגרים, אבל הוא עדיין מועיל יותר מכתיבה מחדש ומהעלויות הנלוות של תחזוקה של כמה גרסאות או שפות.

איור 2. סביבה מורכבת לעיבוד תמונה.
איור 3. רינדור של תוכן באיכות גבוהה.

תכונות Vulkan שנעשה בהן שימוש ב-Call of Duty: Warzone Mobile

  • חלופות לשמות משאבים ושליטה מפורשת במחסומים מאפשרים לתרשים המשימות של הרינדור לצמצם באופן משמעותי את דרישות הזיכרון של יעדי הרינדור בהשוואה להקצאה סטטית.
    • הגמישות מאפשרת להשתמש בשיטות שמתאימות לניידים במשימות רינדור.
    • שלבי רינדור כתכונות ליבה מאפשרים למעבד הרינדור לקבל החלטות אופטימליות לארכיטקטורות נפוצות של מעבדי GPU לנייד. רוב ההחלטות האלה מניבות תוצאות טובות גם בפלטפורמות אחרות.
    • תרשים המשימות תומך כברירת מחדל ברזולוציה דינמית של סצנות, ומאפשר לשלוט במידה מסוימת בביצועים ובצריכת החשמל.
  • צינור עיבוד נתונים מלא של GPU עם סינון נרחב מבוסס-מחשוב מאפשר להגדיל באופן משמעותי את המורכבות של הסצנה.
    • איזון רמת הפירוט של החיסכון בנתונים, כדי להביא בחשבון טירגוט של מעבדי גרפיקה שמושהים ומבוססים על משבצות.
    • צוואר בקבוק הוא עומס עבודה מורכב של מחשוב, בניגוד למספר המשולשים.
      • צינור עיבוד הנתונים של GPU תוכנן בהתאם לתרחישים שונים.
      • אפשרויות לשינוי רמת הפירוט של הסינון.
  • קבוצות מתארים גדולות מאוד מאפשרות עיבוד גרפי מלא ללא קישור בחומרה תואמת, וכתוצאה מכך מפחיתות באופן משמעותי את עלות היצירה של קריאות גרפיות למעבד, עם יתרונות משניים של ביצועים, צריכת חשמל וטמפרטורה.
  • HW configurator מאפשר לבצע שינויים בהגדרות האיכות בהתאם לדגמי מכשירים ספציפיים, כדי לספק את חוויית המשתמש הטובה ביותר.
    • המשתמשים מגדירים את המצב: ביצועים הכי טובים, איכות הכי טובה או חיסכון בסוללה.
  • תכנון קבוצות של שגיאות ספציפיות למכשיר מספק קבוצות שונות של שגיאות להגדרות קבועות מראש של GPU (הגדרות איכות ותצוגה מציאותית). הכלי להגדרת חומרה עוזר למשחק לבחור את קבוצת השיזרים הטובה ביותר למכשיר.
    • עוזרת לצמצם את הפיצוץ הקומבינטורי של שיבושים (shaders) שניתן להגדיר אותם בצורה רחבה, באמצעות הדרישות ליצירת אובייקטים של צינור עיבוד נתונים.
    • כולל קבוצות של שגיאות שחזור ללא קישור (bindless) כדי לטרגט טלפונים ומנהלי התקנים ישנים יותר שלא תומכים במספר רב של משאבי שגיאות.
  • שימוש חכם בקבועות התמחות כדי להתמודד עם הבדלים בין מנהלי התקנים.
    • רוב הבאגים במהדר של שגיאות בדרייברים נפתרים באמצעות שימוש בקבצים קבועים של התאמה אישית.
    • מאזן בין מספר קבוצות ה-shader הספציפיות למכשיר.
איור 4. צינור עיבוד נתונים מלא של GPU עם סינון נרחב מבוסס-מחשוב שמאפשר ליצור סצנות מורכבות.

יצירת פרופילים וניפוי באגים

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

רמת דיוק גבוהה באמצעות Vulkan

Call of Duty: Warzone Mobile פועל במגוון רחב של מכשירי Android שתומכים ב-Vulkan, באמצעות טכנולוגיית רינדור שקיימת גם במשחקים למסוף ולמחשב. Vulkan הפחית את התקורה ואת החיכוך בפיתוח, והאפשרות להשתמש בו אפשרה לספק לשחקני Android תוכן ומשחק אותנטיים באיכות גבוהה של Call of Duty.