بازی کارتی تجاری پوکمون (TCG) نزدیک به 30 سال است که در سراسر جهان از آن لذت می برند. Pokémon TCG Pocket اخیراً منتشر شده به گونهای طراحی شده است که به بازیکنان اجازه میدهد مجموعهها و نبردهای پوکمون را در هر زمان و هر مکان و بدون نیاز به کارتهای فیزیکی تجربه کنند. دسترسی به این بازی در گوشی های هوشمند به محبوبیت گسترده آن در بین کاربران کمک کرده است.
در حالی که ممکن است به نظر یک بازی کارتی تجاری معمولی باشد، Pokemon TCG Pocket از سایه بان های پیچیده استفاده می کند که چالش مهمی در کاهش زمان کامپایل ایجاد می کند. برای رفع این مشکل و اطمینان از گرافیک با کیفیت و تجربه بازی روان، نسخه اندروید Pokémon TCG Pocket از Vulkan، API گرافیکی نسل بعدی استقبال کرده است.
این سند به بررسی پذیرش Vulkan توسط تیم توسعه TCG Pokémon، چالشهای پیش روی و مزایایی که Vulkan ارائه میدهد، میپردازد.
دلایل اتخاذ Vulkan
در ابتدا، تیم توسعه Pokémon TCG Pocket قصد داشت از OpenGL ES استفاده کند. با این حال، آنها تصمیم گرفتند Vulkan، یک API گرافیکی با آینده امیدوارکننده را به کار گیرند. دلایل اصلی انتخاب ولکان عبارت بودند از:
- مدیریت برنامه های بلند مدت : با تشخیص روند تبدیل شدن Vulkan به API گرافیکی غالب برای اندروید، تیم تشخیص داد که Vulkan انتخاب بهینه برای مدیریت طولانی مدت برنامه است.
- عملکرد پایدار در دستگاه های با مشخصات پایین : برای ارائه یک تجربه روان برای طیف گسترده ای از کاربران، عملکرد پایدار در دستگاه های با مشخصات پایین ضروری است. انتظار می رود توانایی Vulkan برای کاهش بار CPU باعث بهبود نرخ فریم و مصرف باتری شود.
- اجتناب از تغییرات در مقیاس بزرگ پس از انتشار : تغییر از OpenGL ES به Vulkan پس از انتشار تغییرات گستردهای را در پی خواهد داشت که به طور بالقوه تجربه کاربر را مختل میکند. پذیرش Vulkan از همان ابتدا نیاز به چنین تغییرات مهمی را کاهش داد.
Vulkan را با یونیتی پیاده سازی کنید
Pokémon TCG Pocket از Unity به عنوان موتور بازی خود استفاده می کند. Unity یک فرآیند ساده برای پیاده سازی Vulkan با یک کلیک ارائه می دهد. با استفاده از Unity، تیم توسعه به طور یکپارچه Vulkan را بدون نیاز به آموزش تخصصی یکپارچه کرد. علاوه بر این، فقدان سازگاری های خاص Vulkan برای محیط ها و ابزارهای توسعه به مقرون به صرفه بودن کمک می کند.

چالش های پیاده سازی Vulkan
در حالی که اجرای Vulkan نسبتاً ساده بود، تیم توسعه پس از آن با چالشهایی مواجه شد:
- مشکلات مربوط به دستگاه : در مقایسه با OpenGL ES، برخی از درایورهای سازنده پایداری کمتری با Vulkan نشان دادند که منجر به مشکلات خاص دستگاه شد.
- پشتیبانی ناقص از Vulkan در میانافزار : برخی از میانافزارها فاقد پشتیبانی کامل از Vulkan هستند، و تیم باید منتظر بهروزرسانی میانافزار باشد.
تیم توسعه این چالشها را از طریق استراتژیهای متعدد، از جمله جمعآوری تیمی از توسعهدهندگان بازیهای مصرفکننده با تجربه برای عیبیابی (از آنجایی که در API گرافیکی سطح پایین یا موتور سفارشی تجربه خوبی داشتند) و همکاری با تیمهای Google و Unity برای حل مشکلات فردی، برطرف کردند. برای گسترش سازگاری دستگاه، آزمایش شامل دستگاههای پیشرفته متوسط تا قدیمی (منتشر شده 2 تا 3 سال پیش) برای تعیین مشخصات دستگاه توصیه شده بود .
مزایای Vulkan
پذیرش Vulkan چندین مزیت را برای Pokémon TCG Pocket به همراه داشت:
- کاهش زمان کامپایل شیدر : Vulkan به طور قابل توجهی زمان کامپایل سایه بان را حتی برای تعداد زیادی شیدر کاهش داد. به عنوان مثال، زمان کامپایل OpenGL ES می تواند از 1 ثانیه تجاوز کند، اما این دیگر نگرانی با رندر Vulkan نیست.
- گستره وسیعتر دستگاههای پشتیبانیشده : بهبود در نرخ فریم و مصرف باتری به طیف وسیعتری از دستگاههای پشتیبانیشده اجازه میدهد و تجربه نرمتری را برای کاربران بیشتر تضمین میکند.
- تله متری بهتر با لایه های اعتبار سنجی Vulkan : لایه اعتبار سنجی Vulkan در شناسایی علت اصلی مشکلات بسیار مفید بود و اطلاعات ارائه شده توسط Vitals ANR/Crash را تکمیل می کرد.
پیام به توسعه دهندگان
تیم توسعه Pokémon TCG Pocket توصیه های زیر را به توسعه دهندگانی که Vulkan را برای پروژه های خود در نظر می گیرند ارائه می دهد:
- فراتر از کاهش زمان کامپایل شیدر، Vulkan مزایای عملکرد قابل توجهی را ارائه می دهد.
- استفاده از vkQuality برای بازگشت به OpenGL ES میتواند به طور بالقوه پشتیبانی دستگاه را افزایش دهد، حتی اگر Pokémon TCG Pocket هنوز از آن استفاده نمیکند.
نتیجه گیری
با پذیرش Vulkan، تیم توسعه Pokémon TCG Pocket توانست گرافیک را در طیف وسیعی از دستگاهها بهینه کند تا تجربهای روان و جذاب را برای هر بازیکنی تضمین کند. انتظار می رود Vulkan با اضافه شدن ویژگی های مداوم و پتانسیل های آینده در حال تحول، مزایای بیشتری را در طول زمان به ارمغان آورد.