ผู้คนทั่วโลกสนุกกับเกมการ์ดโปเกมอน (TCG) มาเกือบ 30 ปีแล้ว Pokémon TCG Pocket ที่เพิ่งเปิดตัวไปเมื่อเร็วๆ นี้ออกแบบมาเพื่อให้ผู้เล่นได้สัมผัสประสบการณ์การสะสมและต่อสู้กับโปเกมอนได้ทุกที่ทุกเวลาโดยไม่ต้องใช้การ์ดจริง ความสามารถในการเข้าถึงเกมบนสมาร์ทโฟนมีส่วนทำให้เกมได้รับความนิยมอย่างแพร่หลายในหมู่ผู้ใช้
แม้ว่าจะดูเหมือนเกมการ์ดสะสมแบบสบายๆ แต่ Pokemon TCG Pocket ได้ใช้โปรแกรมเปลี่ยนสีที่ซับซ้อน ซึ่งทำให้เกิดปัญหาสำคัญในการลดเวลาคอมไพล์ เพื่อเป็นการแก้ไขปัญหานี้และเพื่อให้มั่นใจว่ากราฟิกมีคุณภาพสูงและประสบการณ์การเล่นเกมราบรื่น Pokémon TCG Pocket เวอร์ชัน Android จึงรองรับ Vulkan ซึ่งเป็น API กราฟิกรุ่นถัดไป
เอกสารนี้จะเจาะลึกการใช้งาน Vulkan ของทีมพัฒนา Pokémon TCG Pocket, ปัญหาที่พบ และข้อดีของ Vulkan
เหตุผลในการใช้ Vulkan
ในช่วงแรก ทีมพัฒนา Pokémon TCG Pocket วางแผนที่จะใช้ OpenGL ES แต่ตัดสินใจที่จะใช้ Vulkan ซึ่งเป็น API กราฟิกที่อนาคตสดใส เหตุผลหลักที่เลือกใช้ Vulkan มีดังนี้
- การจัดการแอปในระยะยาว: ทีมตระหนักดีว่า Vulkan กำลังกลายเป็น API กราฟิกที่โดดเด่นสำหรับ Android จึงพิจารณาว่า Vulkan เป็นตัวเลือกที่ดีที่สุดสำหรับการจัดการแอปในระยะยาว
- ประสิทธิภาพที่เสถียรในอุปกรณ์ที่มีสเปคต่ำ: ประสิทธิภาพที่เสถียรในอุปกรณ์ที่มีสเปคต่ำเป็นสิ่งจำเป็นเพื่อให้ผู้ใช้จำนวนมากได้รับประสบการณ์การใช้งานที่ราบรื่น ความสามารถในการลดภาระของ CPU ของ Vulkan คาดว่าจะช่วยปรับปรุงอัตราเฟรมและการสิ้นเปลืองแบตเตอรี่
- หลีกเลี่ยงการเปลี่ยนแปลงครั้งใหญ่หลังการเผยแพร่: การเปลี่ยนจาก OpenGL ES เป็น Vulkan หลังการเผยแพร่จะทำให้เกิดการแก้ไขอย่างกว้างขวาง ซึ่งอาจส่งผลต่อประสบการณ์ของผู้ใช้ การใช้ Vulkan ตั้งแต่เริ่มต้นช่วยลดความจำเป็นในการเปลี่ยนแปลงที่สำคัญเช่นนี้
ใช้ Vulkan กับ Unity
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 มีประโยชน์มากในการระบุสาเหตุของปัญหา ซึ่งช่วยเสริมข้อมูลที่ได้รับจากรายงาน ANR/ข้อขัดข้องของ Vitals
ข้อความถึงนักพัฒนาแอป
ทีมพัฒนา Pokémon TCG Pocket มีคำแนะนำต่อไปนี้สำหรับนักพัฒนาแอปที่พิจารณาใช้ Vulkan ในโปรเจ็กต์
- นอกจากจะช่วยประหยัดเวลาในการคอมไพล์ shader แล้ว Vulkan ยังให้ประโยชน์ด้านประสิทธิภาพที่สำคัญ
- การใช้ vkQuality เพื่อเปลี่ยนไปใช้ OpenGL ES อาจขยายการรองรับอุปกรณ์ได้ แม้ว่า Pokémon TCG Pocket ยังไม่ได้ใช้ก็ตาม
บทสรุป
การใช้ Vulkan ทำให้ทีมพัฒนา Pokémon TCG Pocket สามารถเพิ่มประสิทธิภาพกราฟิกในอุปกรณ์ที่หลากหลายเพื่อให้ผู้เล่นทุกคนได้รับประสบการณ์ที่ราบรื่นและน่าดึงดูด คาดว่า Vulkan จะมีประโยชน์มากขึ้นเรื่อยๆ เนื่องจากมีการเพิ่มฟีเจอร์อย่างต่อเนื่องและศักยภาพที่พัฒนาขึ้นในอนาคต