เพิ่มการสนับสนุนสำหรับการเข้าถึงทันที

ขั้นตอนในการตั้งค่าแอปให้ทำงานใน Google Play Instant ตามที่อธิบายไว้ ใน สร้าง Instant App แรกของคุณ จะใช้ได้กับเกมด้วย คู่มือนี้เน้นขั้นตอนการตั้งค่าบางอย่างที่เฉพาะเจาะจงสำหรับเกม

คุณสามารถพัฒนาเกมสำหรับ Google Play Instant ได้โดยใช้ Unity (มีหรือไม่มีปลั๊กอิน Google Play Instant Unity), Cocos2D, Android Studio หรือเอ็นจินที่กำหนดเอง

คู่มือนี้ถือว่าคุณทราบอยู่แล้วว่าต้องการมอบประสบการณ์การเล่นเกมแบบใด หากต้องการดูไอเดียและแนวทางปฏิบัติแนะนำในการสร้างเกมคุณภาพสูง โปรดอ่านแนวทางปฏิบัติแนะนำเกี่ยวกับ UX สำหรับเกมใน Google Play Instant

นอกจากนี้ คุณควรอ่านรายการตรวจสอบข้อกำหนดทางเทคนิค ก่อนเผยแพร่เกมที่ทำงานใน Google Play Instant ได้

กิจกรรมที่มีตัวกรอง Intent ต่อไปนี้จะกลายเป็นจุดแรกเข้าสำหรับประสบการณ์ Google Play Instant

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

ระบบจะเปิดใช้กิจกรรมนี้เมื่อผู้ใช้แตะปุ่มลองเลย ใน Play Store หรือปุ่มเล่นทันที ในแอป Google Play Games นอกจากนี้ คุณยังเปิดใช้กิจกรรมนี้ได้โดยตรงโดยใช้ Deep Link API

กำหนดโค้ดเวอร์ชันที่ถูกต้อง

โค้ดเวอร์ชันของประสบการณ์แบบใช้งานได้ทันทีของเกมต้องน้อยกว่าโค้ดเวอร์ชันของเกมที่ติดตั้งได้ การกำหนดเวอร์ชันแอปด้วยวิธีนี้จะช่วยให้ผู้เล่นย้ายจากประสบการณ์ Google Play Instant ไปดาวน์โหลดและติดตั้งเกมลงในอุปกรณ์ได้ เฟรมเวิร์ก Android ถือว่าการเปลี่ยนนี้เป็นการอัปเดตแอป

หากต้องการตรวจสอบว่าคุณใช้รูปแบบการกำหนดเวอร์ชันที่แนะนำ ให้ทำตามกลยุทธ์ใดกลยุทธ์หนึ่งต่อไปนี้

  • รีสตาร์ทโค้ดเวอร์ชันสำหรับประสบการณ์ Google Play Instant ที่ 1
  • เพิ่มโค้ดเวอร์ชันของแอปที่ติดตั้งได้ด้วยตัวเลขจำนวนมาก เช่น 1000 เพื่อให้มีพื้นที่เพียงพอสำหรับเพิ่มหมายเลขเวอร์ชันของประสบการณ์ Instant

คุณสามารถพัฒนาเกม Instant และเกมที่ติดตั้งได้ในโปรเจ็กต์ Android Studio 2 โปรเจ็กต์แยกกัน แต่หากทำเช่นนั้น คุณต้องทำตามขั้นตอนต่อไปนี้เพื่อเผยแพร่เกมใน Google Play

  1. ใช้ชื่อแพ็กเกจเดียวกันในโปรเจ็กต์ Android Studio ทั้ง 2 โปรเจ็กต์
  2. ใน Google Play Console ให้อัปโหลดทั้ง 2 ตัวแปรลงในแอปพลิเคชันเดียวกัน

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าเวอร์ชันของเกมได้ที่ กำหนดเวอร์ชัน แอป

รองรับสภาพแวดล้อมการดำเนินการ

เกมใน Google Play Instant จะทำงานในแซนด์บ็อกซ์ที่จำกัดในอุปกรณ์เช่นเดียวกับแอปอื่นๆ หากต้องการรองรับสภาพแวดล้อมการดำเนินการนี้ ให้ทำตามขั้นตอนที่แสดงในส่วนต่อไปนี้

เลือกไม่ใช้การรับส่งข้อมูลแบบข้อความธรรมดา

เกมใน Google Play Instant ไม่รองรับการรับส่งข้อมูล HTTP หากเกมกำหนดเป้าหมายเป็น Android 9 (ระดับ API 28) ขึ้นไป Android จะปิดใช้การรองรับข้อความธรรมดาในเกมโดยค่าเริ่มต้น

แต่หากเกมกำหนดเป้าหมายเป็น Android 8.1 (ระดับ API 27) ลงมา คุณต้อง สร้างไฟล์การกำหนดค่าความปลอดภัยของเครือข่าย ในไฟล์นี้ ให้ตั้งค่า cleartextTrafficPermitted เป็น false ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

อัปเดตเวอร์ชันแซนด์บ็อกซ์เป้าหมาย

อัปเดตไฟล์ AndroidManifest.xml ของเกม Instant เพื่อให้กำหนดเป้าหมายเป็นสภาพแวดล้อมแซนด์บ็อกซ์ที่ Google Play Instant รองรับ คุณสามารถทำการอัปเดตนี้ได้โดยการเพิ่มแอตทริบิวต์ android:targetSandboxVersion ลงในองค์ประกอบ <manifest> ของเกม ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ targetSandboxVersion แอตทริบิวต์

อย่าพึ่งพาการมีอยู่ของแคชหรือข้อมูลแอป

ประสบการณ์แบบใช้งานได้ทันทีของคุณจะยังคงดาวน์โหลดอยู่ในอุปกรณ์ของผู้ใช้จนกว่าจะมีการล้างแคชของประสบการณ์แบบใช้งานได้ทันที ซึ่งจะเกิดขึ้นในกรณีใดกรณีหนึ่งต่อไปนี้

  • ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วของแคชประสบการณ์แบบใช้งานได้ทันที เนื่องจากอุปกรณ์มีหน่วยความจำที่พร้อมใช้งานเหลือน้อย
  • ผู้ใช้รีสตาร์ทอุปกรณ์

หากกระบวนการใดกระบวนการหนึ่งเกิดขึ้น ผู้ใช้จะต้องดาวน์โหลดประสบการณ์แบบใช้งานได้ทันทีอีกครั้งจึงจะโต้ตอบกับประสบการณ์ดังกล่าวได้

หากระบบมีพื้นที่เก็บข้อมูลเหลือน้อยมาก ระบบอาจนำข้อมูลผู้ใช้ของประสบการณ์แบบใช้งานได้ทันทีออกจากที่จัดเก็บข้อมูลภายใน ดังนั้น เราขอแนะนำให้ซิงค์ข้อมูลผู้ใช้กับเซิร์ฟเวอร์ของเกมเป็นระยะๆ เพื่อรักษาความคืบหน้าของผู้ใช้ไว้

ลดขนาดแอป

เกมใน Google Play Instant มีขนาดดาวน์โหลดสูงสุด 15 MB ซึ่งแตกต่างจากแอปประเภทอื่นๆ คุณอาจต้องปรับโครงสร้างตรรกะของเกมใหม่เพื่อสร้างเกมที่มีขนาดเท่านี้ ส่วนนี้จะอธิบายเครื่องมือและเทคนิคบางอย่างที่จะช่วยเพิ่มประสิทธิภาพขนาดของเกม

เครื่องมือ

รายการเครื่องมือต่อไปนี้จะช่วยคุณระบุสิ่งที่ทำให้เกมมีขนาดใหญ่ขึ้น

  • ตัววิเคราะห์ APK: แสดงภาพรวมของ เนื้อหา APK ที่คอมไพล์แล้ว มุมมองนี้จะช่วยให้คุณกำหนดจำนวนไบต์ที่แต่ละองค์ประกอบมีส่วนทำให้ขนาดโดยรวมใหญ่ขึ้น ใช้เครื่องมือนี้เพื่อตรวจสอบขนาดของทรัพยากร ชิ้นงาน ตรรกะ และไลบรารีเนทีฟที่เกมใช้ได้อย่างรวดเร็ว
  • Bloaty McBloatface: แสดง โปรไฟล์ขนาดของไฟล์ไบนารี
  • Android GPU Inspector: ดูผลกระทบของขนาดไฟล์จากการลดขนาดพื้นผิวโดยไม่ต้องคอมไพล์เกมใหม่

เทคนิค

ต่อไปนี้เป็นรายการเทคนิคที่คุณใช้เพื่อลดขนาดของเกมได้

  • แยกตรรกะบางส่วนของเกมและวางไว้ในโมดูลฟีเจอร์ อย่างน้อย 1 โมดูล ซึ่งจะไม่ นับรวมในขีดจำกัดขนาด
  • ลดความละเอียดของพื้นผิวของเกม
  • พิจารณาใช้รูปแบบ WebP โดยเฉพาะอย่างยิ่งหากคุณใช้พื้นผิวที่ไม่ได้บีบอัดใน GPU รูปแบบ WebP จะสร้างรูปภาพที่มีคุณภาพเท่ากับรูปภาพ JPEG แต่มีขนาดเล็กกว่า 15% ถึง 30% แม้ว่าการบีบอัดรูปภาพ WebP จะใช้เวลานานกว่า แต่เวลาในการบีบอัดนี้ก็ยังสั้นกว่าเวลาดาวน์โหลดพื้นผิวของเกมอย่างมาก นอกจากนี้ Google ยังได้ผสานรวมรูปแบบนี้เข้ากับเอ็นจินเกมโอเพนซอร์สด้วย
  • บีบอัดหรือนำเสียงและเพลงกลับมาใช้ใหม่
  • ใช้แฟล็กการคอมไพล์ที่แตกต่างกันเพื่อช่วยให้ไฟล์ไบนารีมีขนาดเล็กลง ดังนี้
    • -fvisibility=hidden ซึ่งเป็นแฟล็กที่สำคัญที่สุด ใน cmake คุณสามารถระบุแฟล็กนี้ได้ดังนี้
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz ซึ่งมีความสำคัญต่อการลดขนาดด้วย หากคอมไพล์โดยใช้ gcc ให้ใช้ -Os แทน
    • -flto ซึ่งบางครั้งจะลดขนาดไฟล์
    • แฟล็ก Linker – ใช้ --gc-sections ร่วมกับแฟล็กคอมไพเลอร์ เช่น -ffunction-sections และ -fdata-sections
  • ใช้ Proguard เพื่อ ย่อขนาดโค้ดและทรัพยากร
  • ใช้ Gradle 4.4 ขึ้นไปเพื่อสร้างไฟล์ DEX ที่มีขนาดเล็กลง
  • ใช้การนำส่งชิ้นงานผ่านระบบคลาวด์

แบ่งเกมขนาดใหญ่ออกเป็น APK หลายรายการ

การเพิ่มประสิทธิภาพประสบการณ์ Google Play Instant เพื่อให้เกมมีขนาดพอดีกับ APK ขนาด 15 MB รายการเดียวอาจเป็นเรื่องยาก แม้หลังจากใช้คำแนะนำในการลดขนาด APKแล้วก็ตาม คุณสามารถแบ่งเกมออกเป็น APK หลายรายการเพื่อแก้ปัญหานี้ ผู้เล่นจะเริ่มดาวน์โหลด APK หลักที่เป็นฐานก่อน จากนั้นระบบจะทำให้ APK แยกที่เหลือพร้อมใช้งานสำหรับเกมในเบื้องหลังขณะที่ผู้เล่นเล่นเกม

ตัวอย่างเช่น APK ฐานอาจมีเกมเอนจินหลักและชิ้นงานที่จำเป็นในการแสดงหน้าจอการโหลด เมื่อ APK ฐานเปิดตัว APK ฐานจะแสดงหน้าจอการโหลดและขอ APK แยกเพิ่มเติมที่มีข้อมูลเกมและระดับทันที หลังจากที่ APK แยกนั้นพร้อมใช้งานแล้ว APK แยกจะโหลดเนื้อหาลงในเกมเอนจินและแสดงเนื้อหาที่ผู้เล่นต้องใช้เพื่อเริ่มเกม

ใช้แนวทางปฏิบัติแนะนำเกี่ยวกับ UX

หลังจากกำหนดค่าเกมให้รองรับประสบการณ์ Instant แล้ว ให้เพิ่มตรรกะที่แสดงในส่วนต่อไปนี้เพื่อมอบประสบการณ์ที่ดีแก่ผู้ใช้

รองรับสถาปัตยกรรม 64 บิต

แอปที่เผยแพร่ใน Google Play ต้องรองรับสถาปัตยกรรม 64 บิต การเพิ่มแอปเวอร์ชัน 64 บิตจะช่วยปรับปรุงประสิทธิภาพและเตรียมความพร้อมสำหรับอุปกรณ์ที่มีฮาร์ดแวร์แบบ 64 บิตเท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับ 64 บิต

ตรวจสอบว่าเกมกำลังทำงานในประสบการณ์แบบใช้งานได้ทันทีหรือไม่

หากตรรกะบางส่วนของเกมขึ้นอยู่กับว่าผู้ใช้มีส่วนร่วมในประสบการณ์แบบใช้งานได้ทันทีหรือไม่ ให้เรียกใช้เมธอด isInstantApp() เมธอดนี้จะแสดงผล true หากกระบวนการที่กำลังทำงานอยู่เป็นประสบการณ์แบบใช้งานได้ทันที

การตรวจสอบนี้จะช่วยให้คุณกำหนดได้ว่าแอปต้องทำงานใน สภาพแวดล้อมการดำเนินการที่จำกัดหรือใช้ประโยชน์จาก ฟีเจอร์แพลตฟอร์มได้

แสดงข้อความแจ้งให้ติดตั้ง

หากคุณสร้างประสบการณ์ Google Play Instant เวอร์ชันทดลอง เกมควรแจ้งให้ผู้เล่นติดตั้งเวอร์ชันเต็มลงในอุปกรณ์เมื่อถึงจุดหนึ่ง หากต้องการทำเช่นนั้น ให้ใช้ showInstallPrompt() เมธอดใน Google APIs for Android

ดูข้อมูลเพิ่มเติมเกี่ยวกับเวลาและวิธีแจ้งให้ผู้เล่นติดตั้งได้ที่ ดู แนวทางปฏิบัติแนะนำเกี่ยวกับ UX สำหรับเกมใน Google Play Instant

โอนข้อมูลไปยังประสบการณ์ที่ติดตั้ง

หากผู้เล่นชื่นชอบประสบการณ์ทดลองเล่น ผู้เล่นอาจตัดสินใจติดตั้งเกมเวอร์ชันเต็ม การโอนความคืบหน้าของผู้เล่นจากประสบการณ์แบบใช้งานได้ทันทีไปยังเกมเวอร์ชันเต็มเป็นสิ่งสำคัญเพื่อให้ผู้เล่นได้รับประสบการณ์ของผู้ใช้ที่ดี

หากเกมระบุ targetSandboxVersion เป็น 2 ระบบจะโอนความคืบหน้าของผู้เล่น ไปยังเกมเวอร์ชันเต็มโดยอัตโนมัติ ไม่เช่นนั้น คุณต้องโอนข้อมูลที่เกี่ยวข้องกับความคืบหน้าของผู้เล่นด้วยตนเอง หากต้องการทำเช่นนั้น ให้ใช้ Cookie API - แอปตัวอย่าง

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Google Play Instant ได้จากแหล่งข้อมูลเพิ่มเติมต่อไปนี้

Codelab: สร้าง Instant App แรกของคุณ
เพิ่มการรองรับ Google Play Instant ในแอปที่มีอยู่
Codelab: สร้าง Instant App ที่มีหลายฟีเจอร์
แยกโมดูลของแอปที่มีหลายฟีเจอร์