2K ลดอัตรา ANR ลง 35% ด้วย Android Game Development Kit
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ฉากหลัง

Cat Daddy Games เป็นสตูดิโอของ 2K ที่อยู่ในเมืองคิลลันด์ รัฐวอชิงตัน และเป็นบริษัทพัฒนาเกม NBA 2K Mobile
ทีมต้องการปรับปรุงคุณภาพและความเสถียรโดยรวมของเกม โดยเฉพาะอย่างยิ่งการลดข้อผิดพลาด "แอปพลิเคชันไม่ตอบสนอง" (ANR) ANR จะแสดงขึ้นเมื่อเธรด UI ของแอป Android ถูกบล็อกนานเกินไป เมื่อเกิดกรณีเช่นนี้ เธรดหลักของแอปซึ่งมีหน้าที่อัปเดต UI จะวาดหรือประมวลผลเหตุการณ์อินพุตของผู้ใช้ไม่ได้ ซึ่งทำให้ผู้ใช้ไม่พอใจ
หากแอปทำงานอยู่เบื้องหน้า ระบบจะแสดงกล่องโต้ตอบที่อนุญาตให้ผู้ใช้บังคับปิดแอป
สิ่งที่พวกเขาทำ
การลด ANR เป็นสิ่งที่ Cat Daddy ให้ความสำคัญสูง ทีม QA ทํางานอย่างไม่หยุดหย่อนและระบุรูปแบบ ANR ที่พบบ่อยได้ ซึ่งก็คือเมื่อแอปหยุดชั่วคราวแล้วกลับมาทํางานต่ออย่างรวดเร็ว อินพุตการสัมผัสจํานวนมากอาจทําให้เกิด ANR จากการตรวจสอบเพิ่มเติมด้วย Firebase Crashlytics พบว่า ANR นี้เป็นประเภท android.os.MessageQueue.nativePollOnce ซึ่งเป็น ANR ประเภทที่พบบ่อยที่สุดสำหรับ NBA 2K Mobile
Cat Daddy ยังพบว่าการจัดการอินพุตที่ปรับปรุงแล้วใน GameActivity ช่วยหลีกเลี่ยง ANR ประเภทนี้ได้ จึงตัดสินใจเปลี่ยนไปใช้ GameActivity
GameActivity เป็นส่วนประกอบของ Android Game Development Kit ซึ่งออกแบบมาเพื่อช่วยเกม Android ในการจัดการกับคำสั่งรอบการทำงานของแอป เหตุการณ์อินพุต และการป้อนข้อความในโค้ด C/C++ ของแอปพลิเคชัน GameActivity มีการปรับปรุงที่มุ่งเน้นเกมจํานวนมากเมื่อเทียบกับ NativeActivity
เช่น Fragment
การแสดงผลเป็น SurfaceView
และการสนับสนุนอื่นๆ สําหรับไลบรารีที่เกี่ยวข้องกับการพัฒนาเกมยอดนิยม
นอกจากนี้ GameActivity ยังใช้บัฟเฟอร์คู่ในบัฟเฟอร์อินพุต ซึ่งช่วยให้เกมจัดการกับกรณีที่มีอินพุตจำนวนมากได้ดียิ่งขึ้น
ผลลัพธ์
การใช้ GameActivity ทำให้ Cat Daddy ปรับปรุงการจัดการอินพุตของเกมได้อย่างมาก ซึ่งส่งผลให้ข้อผิดพลาด ANR ลดลง 35% ซึ่งช่วยปรับปรุงประสบการณ์ของผู้ใช้และสร้างประสบการณ์การเล่นเกมที่เสถียรยิ่งขึ้น
ในฐานะโบนัสเพิ่มเติม เนื่องจาก GameActivity สืบทอดมาจาก FragmentActivity
CatDaddy จึงผสานรวม EmbeddedWebView และ EmbeddedVideoView ได้ด้วย ซึ่งจําเป็นสําหรับการผสานรวมเกมโซเชียลที่ได้รับความนิยมมากที่สุดบางเกม
เริ่มต้นใช้งาน
ปรับปรุงประสบการณ์การเล่นเกมของคุณด้วย GameActivity และ Android Game Development Kit ที่เหลือ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2022-12-09 UTC
[null,null,["อัปเดตล่าสุด 2022-12-09 UTC"],[],[],null,["# 2K reduces ANR rate by 35% with the Android Game Development Kit\n\nBackground\n----------\n\nCat Daddy Games is a wholly-owned\n[2K](https://play.google.com/store/apps/dev?id=6681606924556273560)\nstudio based in Kirkland, Washington and the developer of NBA 2K Mobile.\nThe team wanted to improve the overall quality and stability of their games,\nspecifically by reducing \"Application Not Responding\" errors (ANRs). ANRs\noccur when the UI thread of an Android app is blocked for too long. When\nthat happens, the app's main thread, which is responsible for updating the\nUI, can't draw or process user input events, causing frustration to the user.\nIf the app is running in the foreground, the system displays a dialog that\nallows the user to force-quit the app.\n\nWhat they did\n-------------\n\nReducing ANRs has been a high priority for Cat Daddy. The QA team worked\nrelentlessly and nailed down a common ANR pattern: they found that when the app\nwas paused and then quickly resumed, a large amount of touch input could cause\nan ANR. Further investigation with\n[Firebase Crashlytics](https://firebase.google.com/docs/crashlytics) showed\nthat this ANR was of type android.os.MessageQueue.nativePollOnce, the most\ncommon type of ANR for NBA 2K Mobile.\n\nCat Daddy also saw that the improved input handling in GameActivity could avoid\nthis type of ANRs, so they decided to move to GameActivity.\n\n[GameActivity](/games/agdk/game-activity) is a component of the\n[Android Game Development Kit](/stories/games/games/agdk), which\nis designed to assist Android games in processing app cycle commands, input\nevents, and text input in the application's C/C++ code. GameActivity offers a\nnumber of game-focused improvements over `NativeActivity`, such as\n[`Fragment`](/reference/androidx/fragment/app/Fragment), rendering to a\n[`SurfaceView`](/reference/android/view/SurfaceView), and other support\nfor popular game development-related libraries.\n\nGameActivity also uses double buffering in its input buffer, allowing the game\nto better handle this case of high input volume.\n\nResults\n-------\n\nBy implementing GameActivity, Cat Daddy was able to significantly improve the\ninput handling of the game, leading to a 35% reduction in ANR errors. This\nimproved the user experience and created a more stable gameplay experience.\n\nAs an added bonus, because GameActivity inherits from\n[`FragmentActivity`](/reference/androidx/fragment/app/FragmentActivity),\nCatDaddy was also able to integrate EmbeddedWebView and EmbeddedVideoView,\nwhich were required for some of the most popular social game integrations.\n\nGet started\n-----------\n\nImprove your own game experience with [GameActivity](/games/agdk/game-activity)\nand the rest of the [Android Game Development Kit](/games/agdk)."]]