Pokémon TCG Pocket: שימוש בפיתוח ב-Vulkan בלבד למשחקים לקהל הרחב

צילום מסך של הלוגו של שם המשחק מ-Pokémon TCG Pocket.

משחק הקלפים של Pokémon (TCG) נהנה מפופולריות רבה ברחבי העולם כבר כמעט 30 שנה. המשחק Pokémon TCG Pocket, שפורסם לאחרונה, מאפשר לשחקנים ליהנות מאוספים ומקרבות של פוקימונים בכל זמן ובכל מקום, בלי צורך בכרטיסים פיזיים. הגישה למשחק בסמארטפונים תרמה לפופולריות הרחבה שלו בקרב המשתמשים.

למרות ש-Pokemon TCG Pocket נראה כמו משחק קלפים רגילה, הוא משתמש ב-shaders מורכבים, מה שמציב אתגר משמעותי בהפחתת זמן הידור. כדי לטפל בבעיה הזו ולהבטיח גרפיקה באיכות גבוהה וחוויית משחק חלקה, בגרסה ל-Android של Pokémon TCG Pocket נעשה שימוש ב-Vulkan, ממשק ה-API הבא של הגרפיקה.

במאמר הזה נסביר על השימוש של צוות הפיתוח של Pokémon TCG Pocket ב-Vulkan, על האתגרים שהצוות נתקל בהם ועל היתרונות של Vulkan.

איור 1. סצנות משחק של Pokémon TCG Pocket.

סיבות לשימוש ב-Vulkan

בהתחלה, צוות הפיתוח של Pokémon TCG Pocket תכנן להשתמש ב-OpenGL ES. עם זאת, הם החליטו להשתמש ב-Vulkan, ממשק API לגרפיקה עם עתיד מבטיח. הסיבות העיקריות לבחירה ב-Vulkan היו:

  • ניהול אפליקציות לטווח ארוך: מאחר ש-Vulkan הופך לממשק ה-API הדומיננטי לגרפיקת Android, הצוות קבע ש-Vulkan הוא הבחירה האופטימלית לניהול אפליקציות לטווח ארוך.
  • ביצועים יציבים במכשירים עם מפרט נמוך: כדי לספק חוויה חלקה למגוון רחב של משתמשים, חיוניים ביצועים יציבים במכשירים עם מפרט נמוך. היכולת של Vulkan להפחית את העומס על ה-CPU צפויה לשפר את קצב הפריימים ואת צריכת הסוללה.
  • הימנעות משינויים נרחבים לאחר השקה: מעבר מ-OpenGL ES ל-Vulkan אחרי השקה ידרוש שינויים נרחבים, שעלולים לשבש את חוויית המשתמש. השימוש ב-Vulkan כבר מההתחלה צמצם את הצורך בשינויים משמעותיים כאלה.

הטמעת Vulkan באמצעות Unity

מנוע המשחק של Pokémon TCG Pocket הוא Unity. ב-Unity יש תהליך פשוט להטמעת Vulkan בלחיצה אחת. בעזרת Unity, צוות הפיתוח שילב את Vulkan בצורה חלקה בלי צורך בהכשרה מיוחדת. בנוסף, היעדר ההתאמות הספציפיות ל-Vulkan לסביבות פיתוח ולכלים תרם ליעילות התהליך.

Auto Graphics API ב-Unity
איור 2. Auto Graphics API ב-Unity.

אתגרים בהטמעת Vulkan

ההטמעה של Vulkan הייתה פשוטה יחסית, אבל צוות הפיתוח נתקל באתגרים מסוימים לאחר מכן:

  • בעיות ספציפיות למכשיר: בהשוואה ל-OpenGL ES, מנהלי התקנים של יצרנים מסוימים הפגינו יציבות נמוכה יותר ב-Vulkan, מה שהוביל לבעיות ספציפיות למכשיר.
  • תמיכה חלקית ב-Vulkan בתוכנות ביניים: בחלק מתוכנות הביניים לא הייתה תמיכה מלאה ב-Vulkan, ולכן הצוות נאלץ להמתין לעדכונים של תוכנות הביניים.

צוות הפיתוח טיפל באתגרים האלה באמצעות כמה אסטרטגיות, כולל הקמת צוות של מפתחי משחקים מנוסים לצרכנים לצורך פתרון בעיות (כי הם היו בעלי ניסיון רב ב-API של הגרפיקה ברמה נמוכה או במנוע מותאם אישית) ושיתוף פעולה עם צוותי Google ו-Unity לפתרון בעיות ספציפיות. כדי להרחיב את תאימות המכשירים, הבדיקה כללה מכשירים מתקדמים מהדור הקודם (שפורסמו לפני 2-3 שנים) כדי לקבוע את מפרטי המכשירים המומלצים.

היתרונות של Vulkan

השימוש ב-Vulkan הביא כמה יתרונות ל-Pokémon TCG Pocket:

  • קיצור זמן הידור של תוכנות הצללה (shader): Vulkan קיצר באופן משמעותי את זמן הידור של תוכנות הצללה, גם במספר גדול של תוכנות הצללה. לדוגמה, זמן הידור של OpenGL ES יכול לחרוג משנייה אחת, אבל זה כבר לא בעיה עם רינדור של Vulkan.
  • מגוון מורחב של מכשירים נתמכים: שיפורים בקצב הפריימים ובצריכת הסוללה אפשרו להרחיב את מגוון המכשירים הנתמכים, וכך להבטיח חוויה חלקה יותר למספר גדול יותר של משתמשים.
  • טלמטריה משופרת עם שכבות אימות של Vulkan: שכבת האימות של Vulkan הייתה שימושית מאוד בזיהוי שורש הבעיות, והיא הוסיפה לנתונים שסופקו בדוחות Vitals על קריסות או על אירועי ANR.

הודעה למפתחים

צוות הפיתוח של Pokémon TCG Pocket מציע את העצות הבאות למפתחים שרוצים להשתמש ב-Vulkan בפרויקטים שלהם:

  • בנוסף להפחתת זמן הידור של תוכנות הצללה (shader), Vulkan מציע יתרונות משמעותיים בביצועים.
  • שימוש ב-vkQuality כדי לעבור ל-OpenGL ES עשוי להרחיב את תמיכת המכשירים, למרות שעדיין לא נעשה שימוש ב-vkQuality ב-Pokémon TCG Pocket.

סיכום

בעזרת Vulkan, צוות הפיתוח של Pokémon TCG Pocket הצליח לבצע אופטימיזציה של הגרפיקה במגוון רחב של מכשירים כדי להבטיח חוויה חלקה ומעניינת לכל שחקן. עם הזמן, נוסיף עוד תכונות ונגלה את הפוטנציאל העתידי של Vulkan, כך שהוא צפוי להניב עוד יתרונות.