GameActivity   เป็นส่วนหนึ่งของ Android Game Development Kit

GameActivity เป็นไลบรารี Jetpack ที่ออกแบบมาเพื่อช่วยเกม Android ในการจัดการคําสั่งวงจรแอป เหตุการณ์อินพุต และอินพุตข้อความในโค้ด C/C++ ของแอปพลิเคชัน GameActivity พัฒนามาจาก NativeActivity โดยตรงและใช้สถาปัตยกรรมที่คล้ายกัน

alt_text

ดังที่แสดงในแผนภาพด้านบน GameActivity จะทําหน้าที่ต่อไปนี้

  • การโต้ตอบกับเฟรมเวิร์ก Android ผ่านคอมโพเนนต์ฝั่ง Java
  • ส่งผ่านคําสั่งวงจรแอป เหตุการณ์การป้อนข้อมูล และข้อความที่ป้อนไปยังฝั่งเนทีฟ
  • การสร้างโมเดลซอร์สโค้ด C/C++ เป็นคอมโพเนนต์เชิงตรรกะ 3 รายการ ได้แก่
    • ฟังก์ชัน JNI ของ GameActivity ซึ่งรองรับฟังก์ชันการทำงานของ Java ของ GameActivity โดยตรงและจัดคิวเหตุการณ์ไปยัง native_app_glue
    • native_app_glue ซึ่งส่วนใหญ่จะทำงานในเธรดเนทีฟของตัวเอง (แตกต่างจากเธรดหลักของแอปพลิเคชัน) และดำเนินการกับงานด้วย Looper
    • โค้ดเกมของแอปพลิเคชัน ซึ่งจะตรวจสอบและประมวลผลเหตุการณ์ที่จัดคิวไว้ภายใน native_app_glue และเรียกใช้โค้ดเกมภายในเธรด native_app_glue

GameActivity จะช่วยให้คุณมุ่งเน้นที่การพัฒนาเกมหลักและหลีกเลี่ยงการใช้เวลามากเกินไปกับโค้ด JNI

หากคุณคุ้นเคยกับ NativeActivity อยู่แล้ว ความแตกต่างที่สำคัญระหว่าง GameActivity กับ NativeActivity มีดังนี้

  • GameActivity จะแสดงผลเป็น SurfaceView ซึ่งช่วยให้เกมโต้ตอบกับคอมโพเนนต์ UI อื่นๆ ได้ง่ายขึ้นมาก
  • สําหรับเหตุการณ์การสัมผัสและการป้อนข้อมูลด้วยแป้นพิมพ์ GameActivity มีการใช้งานแบบใหม่ทั้งหมดที่มีอินเทอร์เฟซ android_input_buffer ซึ่งแยกจาก InputQueue ที่ NativeActivity ใช้
  • GameActivity เป็นคลาสที่มาจาก AppCompatActivity ซึ่งช่วยให้คุณใช้คอมโพเนนต์อื่นๆ ของ Jetpack ได้อย่างราบรื่น ActionBar, Fragment และอื่นๆ พร้อมใช้งานทั้งหมด
  • GameActivity เพิ่มฟังก์ชันการป้อนข้อความโดยการผสานรวมคลัง GameTextInput
  • แอปที่มาจาก GameActivity จะต้องสร้างโค้ด C/C++ ทั้ง 3 ส่วนเป็นไลบรารีเดียว ในทางกลับกัน ฟังก์ชัน JNI ของ NativeActivity เป็นส่วนหนึ่งของเฟรมเวิร์ก (ระบบปฏิบัติการจะโหลดเสมอ) ดังนั้นจึงควรสร้างเฉพาะnative_app_glueและโค้ด C/C++ ของแอปพลิเคชันเป็นไลบรารีเดียว
  • NativeActivity เป็นส่วนหนึ่งของเฟรมเวิร์ก Android และเป็นไปตามวงจรการเผยแพร่ (โดยทั่วไปคือรายปี) GameActivity เป็นส่วนหนึ่งของไลบรารี Jetpack ซึ่งมีรอบการเผยแพร่ที่บ่อยกว่ามาก (โดยปกติคือ 2 สัปดาห์ครั้ง) ฟีเจอร์ใหม่และการแก้ไขข้อบกพร่องจึงจะพร้อมใช้งานเร็วกว่ามาก

สถานที่เผยแพร่

คลัง GameActivity มีให้บริการในช่องต่อไปนี้

  • เป็นส่วนหนึ่งของคลัง Android Jetpack (แนะนำ)
  • ในฐานะที่เป็นซอร์สโค้ด AOSP

โค้ด C/C++ จะแสดงเป็นซอร์สโค้ดในช่องทางรุ่นทั้งหมดโดยใช้รูปแบบ Prefab GameActivity เวอร์ชัน 1.2.2 จะเพิ่มไลบรารีแบบคงที่ลงในชุดแจกจ่าย ตั้งแต่เวอร์ชันนี้เป็นต้นไป เราขอแนะนำให้คุณใช้ไลบรารีแบบคงที่แทนซอร์สโค้ด

เนื้อหาของไลบรารี Jetpack และแพ็กเกจ ZIP ของ AGDK

เมื่อใช้ไลบรารี Jetpack และช่องทางแพ็กเกจ ZIP ของ AGDK ระบบจะเผยแพร่ GameActivity ด้วย AAR AAR นี้ประกอบด้วยคอมโพเนนต์หลักต่อไปนี้

  • ไฟล์ JAR สำหรับโค้ด Java
  • ไลบรารีแบบคงที่ C/C++ game-activity_static จะรวมอยู่ใน GameActivity เวอร์ชัน 1.2.2 ขึ้นไป
  • ซอร์สโค้ด C/C++ (ในโฟลเดอร์ /prefab)

วิธีการผสานรวมที่ลิงก์มาจากหน้านี้ถือว่าคุณสามารถใช้ Prefab ในระบบบิลด์ได้ หากไม่เช่นนั้น คุณสามารถคัดลอกซอร์สโค้ดที่แพ็กไว้ใต้โฟลเดอร์ prefab/modules/game-activity/include ไปยังระบบบิลด์ แล้วทำตามขั้นตอนการผสานรวมที่จำเป็น โครงสร้างไฟล์ที่คล้ายกันนี้มีอยู่สำหรับรุ่นต่างๆ ในส่วน androidx สำหรับไลบรารี Android Jetpack โดยค่าเริ่มต้น Gradle จะแตกไฟล์ AAR ในไดเรกทอรีแคช (~/.gradle/caches/...) คุณค้นหาซอร์สโค้ด C/C++ ได้โดยค้นหา prefab/modules/game-activity/include แล้วเลือกตำแหน่งในส่วนเวอร์ชันที่คุณต้องการเผยแพร่

ดูวิธีการผสานรวมโดยใช้ไลบรารี Jetpack ได้ที่หัวข้อเริ่มต้นใช้งาน GameActivity

เนื้อหาของซอร์สโค้ด AOSP

AOSP มีซอร์สโค้ดล่าสุดเสมอ ทำตามวิธีการสร้างเพื่อสร้างรุ่นของคุณเอง หรือผสานรวมแหล่งที่มาเข้ากับสภาพแวดล้อมการสร้างโดยตรง ซอร์สโค้ด C/C++ จะบันทึกไว้ในโครงสร้างไฟล์ที่คล้ายกับโครงสร้างของไลบรารี Jetpack และแพ็กเกจ ZIP ของ AGDK

คู่มือการผสานรวม

ทำตามคำแนะนำเหล่านั้นเพื่อผสานรวม GameActivity เข้ากับแอปพลิเคชัน

แหล่งข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับ GameActivity ได้ที่

ความคิดเห็น

หากต้องการรายงานข้อบกพร่องหรือขอฟีเจอร์ใหม่ใน GameActivity ให้ใช้เครื่องมือติดตามปัญหาของ GameActivity