Pokémon TCG Pocket: استخدام Vulkan فقط لتطوير الألعاب البسيطة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تُلعب لعبة Pokémon Trading Card Game (TCG) في جميع أنحاء العالم منذ حوالى
30 عامًا. تم تصميم لعبة Pokémon TCG Pocket التي تم إصدارها مؤخرًا للسماح للاعبين بالاستمتاع بتجربة مجموعات وحوش Pokémon ومعاركها في أي وقت وأي مكان بدون الحاجة إلى استخدام البطاقات المطبوعة. ساهمت سهولة استخدام اللعبة على الهواتف الذكية في
انتشارها على نطاق واسع بين المستخدمين.
على الرغم من أنّها قد تبدو كلعبة بطاقات عادية، تستخدم لعبة Pokémon TCG Pocketshaders
معقدة، ما يشكّل تحديًا كبيرًا في تقليل وقت التجميع. لحلّ هذه المشكلة وضمان تقديم رسومات عالية الجودة وتجربة لعب سلسة، تم استخدام Vulkan، وهي واجهة برمجة تطبيقات رسومات من الجيل التالي، في إصدار Android من لعبة Pokémon TCG Pocket.
يتناول هذا المستند استخدام فريق تطوير Pokémon TCG Pocket لتكنولوجيا رسوم Vulkan والتحدّيات التي واجهها والمزايا التي تقدّمها هذه التكنولوجيا.
الشكل 1. مشاهد من أسلوب اللعب في لعبة Pokémon TCG Pocket
أسباب استخدام Vulkan
في البداية، خطط فريق تطوير Pokémon TCG Pocket لاستخدام OpenGL ES.
ومع ذلك، قرّر الفريق استخدام Vulkan، وهي واجهة برمجة تطبيقات للرسومات ذات مستقبل واعد.
إليك الأسباب الرئيسية لاختيار Vulkan:
إدارة التطبيقات على المدى الطويل: مع إدراك الفريق لاتجاه أن تصبح Vulkan هي واجهة برمجة التطبيقات المهيمنة للرسومات على Android، اتّخذ الفريق قرارًا بأنّ Vulkan هي الخيار الأمثل لإدارة التطبيقات على المدى الطويل.
الأداء الثابت على الأجهزة ذات المواصفات المنخفضة: لتوفير تجربة سلسة لمجموعة كبيرة من المستخدمين، من الضروري أن يكون الأداء ثابتًا على الأجهزة ذات المواصفات المنخفضة. من المتوقّع أن تؤدي قدرة Vulkan على تقليل عبء وحدة المعالجة المركزية (CPU) إلى تحسين عدد اللقطات في الثانية واستهلاك البطارية.
تجنُّب إجراء تغييرات كبيرة بعد الإصدار: سيؤدي التبديل من OpenGL ES إلى Vulkan بعد الإصدار إلى إجراء تعديلات كبيرة، ما قد يؤدي إلى تعطيل تجربة المستخدم. وقد ساعد استخدام Vulkan منذ البداية في تقليل الحاجة إلى إجراء تغييرات كبيرة كهذه.
استخدام Vulkan مع Unity
تستخدم لعبة Pokémon TCG Pocket Unity كمحرّك لألعابها. تقدّم Unity عملية
مبسّطة لتنفيذ Vulkan بنقرة واحدة. باستخدام Unity، دمج فريق التطوير مكتبة Vulkan بسلاسة بدون الحاجة إلى دورات تدريبية متخصصة. بالإضافة إلى ذلك، ساهم عدم توفّر عمليات تكييف خاصة بـ Vulkan لأدوات تطوير
البرامج وبيئات التطوير في تحقيق الكفاءة من حيث التكلفة.
الشكل 2. Auto Graphics API في Unity
التحديات في تنفيذ Vulkan
على الرغم من أنّ تنفيذ Vulkan كان مباشرًا نسبيًا، واجه فريق التطوير
بعض التحديات بعد ذلك:
المشاكل المتعلّقة بالأجهزة: مقارنةً بـ OpenGL ES، أظهرت برامج تشغيل بعض المصنّعين ثباتًا أقل مع Vulkan، ما أدّى إلى حدوث مشاكل خاصة بالأجهزة.
عدم اكتمال توافق Vulkan في الوسيط: لم يكن بعض الوسائط متوافقًا بالكامل مع Vulkan، ما اضطر الفريق إلى انتظار تحديثات الوسائط.
وقد عالج فريق التطوير هذه التحديات من خلال اتباع استراتيجيات متعدّدة،
بما في ذلك تجميع فريق من المطوّرين المتمرّسين في ألعاب المستهلكين لتحديد الصعوبات وحلّها (نظرًا لخبرتهم الواسعة في واجهة برمجة التطبيقات المخصّصة للرسومات المنخفضة المستوى أو
المحرك المخصّص) والتعاون مع فِرق Google وUnity لحلّ الصعوبات الفردية. لتوسيع نطاق التوافق مع الأجهزة، شمل الاختبار
الأجهزة المتوسطة والقديمة المزوّدة بميزات عالية المستوى (التي تم طرحها قبل عامين أو 3 أعوام) لتحديد
مواصفات الأجهزة المقترَحة.
مزايا Vulkan
وفّرت تقنية Vulkan العديد من المزايا للعبة Pokémon TCG Pocket:
تقليل وقت تجميع أدوات التظليل: خفّض Vulkan بشكل كبير وقت تجميع أدوات التظليل، حتى مع استخدام عدد كبير منها. على سبيل المثال، يمكن أن يتجاوز وقت تجميع OpenGL ES ثانية واحدة، ولكن لم يعُد ذلك مصدر قلق عند استخدام ميزة العرض في Vulkan.
مجموعة موسّعة من الأجهزة المتوافقة: من خلال التحسينات التي تم إجراؤها على معدّل عرض اللقطات واستهلاك البطارية، أصبح بإمكان مجموعة أكبر من الأجهزة المتوافقة استخدام التطبيق، ما يضمن تجربة سلسة لعدد أكبر من المستخدمين.
تحسين بيانات التتبُّع باستخدام طبقات التحقّق من Vulkan: كانت طبقة التحقّق من Vulkan مفيدة جدًا في تحديد السبب الجذري للمشاكل، ما يكمل البيانات المقدَّمة من تقارير أخطاء ANR/الأعطال في Vitals.
رسالة إلى المطوّرين
يقدّم فريق تطوير Pokémon TCG Pocket النصائح التالية
للمطوّرين الذين يفكرون في استخدام Vulkan في مشاريعهم:
بالإضافة إلى تقليل وقت تجميع أدوات التظليل، يوفّر Vulkan مزايا كبيرة في الأداء.
يمكن أن يؤدي استخدام vkQuality للرجوع إلى OpenGL ES إلى توسيع نطاق الأجهزة المتوافقة، على الرغم من أنّ لعبة Pokémon TCG Pocket لا تستخدمه بعد.
الخاتمة
من خلال استخدام Vulkan، تمكّن فريق تطوير Pokémon TCG Pocket من
تحسين الرسومات على مجموعة واسعة من الأجهزة لضمان تجربة سلسة و
ممتعة لكل لاعب. ومن خلال إضافة ميزات جديدة باستمرار وتطوير إمكاناتها المستقبلية، من المتوقّع أن يوفّر Vulkan المزيد من المزايا
بمرور الوقت.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-05-16 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-05-16 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Pokémon TCG Pocket: Adopting Vulkan-only development for casual games\n\nThe Pokémon Trading Card Game (TCG) has been enjoyed across the globe for nearly\n30 years. The recently released Pokémon TCG Pocket is designed to let players\nexperience Pokémon collections and battles anytime, anywhere, without the need\nfor physical cards. The game's accessibility on smartphones has contributed to\nits widespread popularity among users.\n\nWhile it may appear to be a casual trading card game, Pokemon TCG Pocket utilizes\ncomplex shaders, posing a significant challenge in reducing compilation time. To\naddress this and ensure high-quality graphics and a smooth gaming experience, the\nAndroid version of Pokémon TCG Pocket has embraced Vulkan, the next-generation\ngraphics API.\n\nThis document delves into the Pokémon TCG Pocket development team's adoption of\nVulkan, the challenges encountered, and the advantages Vulkan offers.\n**Figure 1.** Pokémon TCG Pocket game play scenes.\n\n#### Reasons for adopting Vulkan\n\nInitially, the Pokémon TCG Pocket development team planned to use OpenGL ES.\nHowever, they decided to adopt Vulkan, a graphics API with a promising future.\nThe primary reasons for choosing Vulkan were:\n\n- **Long-term app management**: Recognizing the trend of Vulkan becoming the dominant graphics API for Android, the team determined that Vulkan is the optimal choice for long-term app management.\n- **Stable performance on low-spec devices**: To provide a smooth experience for a wide range of users, stable performance on low-spec devices is essential. Vulkan's ability to reduce CPU load is expected to improve frame rates and battery consumption.\n- **Avoidance of large-scale post-release changes**: Switching from OpenGL ES to Vulkan after release would entail extensive modifications, potentially disrupting the user experience. Adopting Vulkan from the outset mitigated the need for such significant changes.\n\n#### Implement Vulkan with Unity\n\nPokémon TCG Pocket uses Unity as its game engine. Unity offers a streamlined\nprocess for implementing Vulkan with a single click. By using Unity, the\ndevelopment team seamlessly integrated Vulkan without requiring specialized\ntraining. Additionally, the lack of Vulkan-specific adaptations for development\nenvironments and tools contributed to cost-effectiveness.\n**Figure 2.** Auto Graphics API in Unity.\n\n#### Challenges in implementing Vulkan\n\nWhile Vulkan implementation was relatively straightforward, the development team\nencountered some challenges afterward:\n\n- **Device-specific issues**: Compared to OpenGL ES, some manufacturers' drivers exhibited lower stability with Vulkan, leading to device-specific issues.\n- **Incomplete Vulkan support in middleware**: Some middleware lacked full Vulkan support, requiring the team to wait for middleware updates.\n\nThe development team addressed these challenges through multiple strategies,\nincluding assembling a team of experienced consumer game developers for\ntroubleshooting (as they were well experienced in the low-level graphics API or\ncustom engine) and collaborating with Google and Unity teams for individual\nissue resolution. To expand device compatibility, testing included mid- to old\nhigh-end devices (released 2-3 years ago) to determine the\n[recommended device specifications](https://app-ptcgp.pokemon-support.com/hc/en-us/articles/39076135557145-What-is-the-recommended-smart-device-for-this-app \"Recommended device specifications\").\n\n#### Advantages of Vulkan\n\nAdopting Vulkan brought several benefits to Pokémon TCG Pocket:\n\n- **Reduced shader compilation time**: Vulkan significantly reduced shader compilation time, even for a large number of shaders. For example, the OpenGL ES compilation time could exceed 1 second, but this is no longer a concern with Vulkan rendering.\n- **Expanded range of supported devices**: Improvements in frame rate and battery consumption allowed for a wider range of supported devices, ensuring a smoother experience for more users.\n- **Better telemetry with Vulkan validation layers** : The [Vulkan validation layer](/ndk/guides/graphics/validation-layer) was very useful in identifying the root cause of problems, supplementing the data provided by Vitals ANR/Crash reports.\n\n#### Message to developers\n\nThe Pokémon TCG Pocket development team offers the following advice to\ndevelopers considering Vulkan for their projects:\n\n- Beyond shader compilation time reduction, Vulkan offers substantial performance benefits.\n- Using [vkQuality](/games/engines/unity/unity-vkquality) to fall back to OpenGL ES could potentially expand device support, even though Pokémon TCG Pocket is not using it yet.\n\n#### Conclusion\n\nBy embracing Vulkan, the Pokémon TCG Pocket development team was able to\noptimize graphics across a broad range of devices to ensure a smooth and\nengaging experience for every player. With ongoing feature additions and\nevolving future potential, Vulkan is expected to bring even more benefits\nover time."]]