หน้าจอทีวีมีการพิจารณาหลายๆ อย่างที่อาจเป็นเรื่องใหม่สำหรับเกมในอุปกรณ์เคลื่อนที่ พื้นที่เหล่านี้ประกอบด้วยขนาดใหญ่ รูปแบบการควบคุม และข้อเท็จจริงที่ว่าผู้เล่นทั้งหมด กำลังดูพร้อมกัน
จอแสดงผล
สิ่งสำคัญ 2 ประการที่ต้องคำนึงถึงเมื่อพัฒนาเกมสำหรับหน้าจอทีวีคือการออกแบบ เกมในแนวนอนและรองรับเวลาในการตอบสนองต่ำ
รองรับการแสดงผลแนวนอน
ทีวีตะแคงข้างเสมอ: คุณหมุนไม่ได้ และไม่มีการวางในแนวตั้ง ออกแบบเสมอ เกมทีวีของคุณให้แสดงในโหมดแนวนอน
โหมดเวลาในการตอบสนองต่ำอัตโนมัติ
จอแสดงผลบางรุ่นสามารถประมวลผลกราฟิกในภายหลังได้ การประมวลผลหลังจะช่วยปรับปรุงกราฟิก แต่อาจทำให้เวลาในการตอบสนองเพิ่มขึ้น จอแสดงผลรุ่นใหม่ๆ ที่รองรับ HDMI 2.1 จะมีคะแนนต่ำโดยอัตโนมัติ โหมดเวลาในการตอบสนอง (ALLM) ซึ่งลดเวลาในการตอบสนองโดยการปิดการประมวลผลหลังนี้ สำหรับ รายละเอียดเพิ่มเติมเกี่ยวกับ ALLM ได้ที่ ข้อมูลจำเพาะของ HDMI 2.1 อื่นๆ จอแสดงผลอาจรองรับโหมดเกมที่มีลักษณะคล้ายกัน
ใน Android 11 ขึ้นไป หน้าต่างสามารถขอโหมดหรือเกมที่มีเวลาในการตอบสนองต่ำโดยอัตโนมัติ (หากมี) โดยการขอการประมวลผลหลังการประมวลผลขั้นต่ำ โดยเฉพาะอย่างยิ่ง มีประโยชน์สำหรับแอปพลิเคชันเกมและวิดีโอการประชุม ซึ่งเวลาในการตอบสนองต่ำนั้นสำคัญกว่า มีกราฟิกที่ดีที่สุดเท่าที่จะเป็นไปได้
หากต้องการเปิดหรือปิดใช้หลังการประมวลผลขั้นต่ำ ให้เรียกใช้
Window.setPreferMinimalPostProcessing()
,
หรือตั้งค่า
preferMinimalPostProcessing
เป็น true
บางจอแสดงผลอาจไม่รองรับการประมวลผลหลังการประมวลผลเพียงเล็กน้อย เพื่อดูว่า
จอแสดงผลบางจอรองรับ เรียก
Display.isMinimalPostProcessingSupported()
วิธี
อุปกรณ์อินพุต
ทีวีไม่มีอินเทอร์เฟซแบบสัมผัส ดังนั้น สิ่งที่สำคัญกว่านั้นคือการทำให้การควบคุมถูกต้องและ เพื่อให้ผู้เล่นเห็นว่าใช้ง่ายและสนุก การจัดการตัวควบคุม ก็จะนำไปสู่ปัญหาอื่นๆ ที่ควรให้ความสำคัญ เช่น การติดตาม คอนโทรลเลอร์ และการจัดการการเชื่อมต่อถูกตัดการเชื่อมต่ออย่างมีชั้นเชิง แอปทีวีทั้งหมดรวมถึงเกมควรจัดการ ควบคุมได้อย่างต่อเนื่อง อ่านจัดการทีวี ตัวควบคุมสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ตัวควบคุมทีวีและ จัดการตัวควบคุมสำหรับเกม ข้อมูลเกี่ยวกับการใช้ตัวควบคุมทีวีสำหรับเกม
รูปแบบแป้นพิมพ์
ใน Android 13 (API ระดับ 33) ขึ้นไป คุณสามารถกำหนดรูปแบบแป้นพิมพ์ได้โดยใช้
getKeyCodeForKeyLocation()
ตัวอย่างเช่น เกมของคุณสนับสนุนการเคลื่อนไหวโดยใช้คีย์ WASD แต่อาจทำงานได้ไม่ถูกต้องบน
แป้นพิมพ์ AZERTY ที่มีแป้น A และ W ในตำแหน่งที่ต่างกัน คุณสามารถรับรหัสคีย์
สำหรับคีย์ที่คุณคาดหวังในบางตำแหน่ง:
Kotlin
val inputManager: InputManager? = requireActivity().getSystemService() inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) } ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC } ?.let { inputDevice -> keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W) keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A) keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S) keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D) }
Java
InputManager inputManager = requireActivity().getSystemService(InputManager.class); InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds()) .mapToObj(inputManager::getInputDevice) .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) .filter(Objects::nonNull) .findFirst() .orElse(null); if (inputDevice != null) { keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W); keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A); keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S); keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D); }
ในตัวอย่างนี้ เมื่อใช้แป้นพิมพ์ AZERTY ระบบจะตั้งค่า keyUp
เป็น
KeyEvent.KEYCODE_Z
, keyLeft
ได้รับการตั้งค่าเป็น KeyEvent.KEYCODE_Q
ขณะที่ตั้งค่า keyDown
และ keyRight
เป็น KeyEvent.KEYCODE_S
และ KeyEvent.KEYCODE_D
ตามลำดับ ตอนนี้คุณสร้างเครื่องจัดการเหตุการณ์สำคัญสำหรับเหตุการณ์เหล่านี้แล้ว
โค้ดหลักและใช้ลักษณะการทำงานตามที่คาดไว้
ไฟล์ Manifest
เกมควรรวมสิ่งพิเศษบางอย่างไว้ในไฟล์ Manifest ของ Android
แสดงเกมในหน้าจอหลัก
หน้าจอหลักของ Android TV แสดงเกมในแถวแยกต่างหากจากแอปทั่วไป
หากต้องการให้เกมปรากฏในรายการเกม ให้ตั้งค่า
android:isGame
เป็นแอตทริบิวต์ของ "true"
ในไฟล์ Manifest ของแอป
<application>
เช่น
<application ... android:isGame="true" ... >
ประกาศการรองรับตัวควบคุมเกม
ตัวควบคุมเกมอาจไม่พร้อมใช้งานหรือไม่พร้อมใช้งานสำหรับผู้ใช้อุปกรณ์ทีวี เพื่อให้สามารถ แจ้งให้ผู้ใช้ทราบว่าเกมของคุณรองรับเกมคอนโทรลเลอร์ คุณจะต้องรวมรายการต่อไปนี้ไว้ใน ไฟล์ Manifest ของแอป
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
หมายเหตุ: เมื่อระบุการรองรับ android:hardware:gamepad
โปรดอย่าตั้งค่า
android:required
เป็น "true"
หากคุณทำเช่นนี้ ผู้ใช้จะไม่สามารถ
ติดตั้งแอปของคุณบนอุปกรณ์ทีวี
ดูข้อมูลเพิ่มเติมเกี่ยวกับรายการไฟล์ Manifest ได้ที่ ไฟล์ Manifest ของแอป
บริการเกมของ Google Play
หากเกมของคุณผสานรวมบริการเกมของ Google Play ที่คุณควรคำนึงถึง ที่เกี่ยวข้องกับรางวัลพิเศษ การลงชื่อเข้าใช้ และการบันทึกเกม
ความสำเร็จ
เกมของคุณควรมีรางวัลพิเศษ (สร้างรายได้) อย่างน้อย 5 รางวัล เฉพาะผู้ใช้ที่ควบคุมเกมเพลย์ จากอุปกรณ์อินพุตที่รองรับควรรับรางวัลพิเศษได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ และวิธีนำรางวัลพิเศษไปใช้ได้ที่รางวัลพิเศษใน Android
ลงชื่อเข้าใช้
เกมของคุณควรพยายามให้ผู้ใช้ลงชื่อเข้าใช้เมื่อเปิดตัว หากผู้เล่นปฏิเสธการลงชื่อเข้าใช้หลายครั้ง ติดต่อกันหลายครั้ง เกมของคุณไม่ควรจะถามอีก ดูข้อมูลเพิ่มเติมเกี่ยวกับการลงชื่อเข้าใช้ได้ที่การใช้งานการลงชื่อเข้าใช้ใน Android
กำลังบันทึก
ใช้บริการ Google Play เกมที่บันทึกไว้เพื่อจัดเก็บ การบันทึกเกมของคุณ เกมของคุณควรเชื่อมโยงการบันทึกเกมกับบัญชี Google ที่เจาะจงเพื่อให้เป็น ระบุตัวตนได้อย่างแน่ชัดบนอุปกรณ์ต่างๆ ไม่ว่าผู้เล่นจะใช้โทรศัพท์มือถือหรือทีวี เกมควรจะสามารถดึงข้อมูลการบันทึกเกมจากบัญชีผู้ใช้เดียวกันได้
คุณควรระบุตัวเลือกใน UI ของเกมด้วยเพื่อให้ผู้เล่นลบภายในเครื่องได้
ในระบบคลาวด์ คุณอาจวางตัวเลือกไว้ในหน้าจอ Settings
ของเกม สำหรับ
ดูรายละเอียดเกี่ยวกับการใช้งานเกมที่บันทึกไว้โดยใช้บริการ Play ได้ที่เกมที่บันทึกไว้ใน Android
ออก
ใส่องค์ประกอบ UI ที่ชัดเจนและสอดคล้องกันเพื่อให้ผู้ใช้ออกจากเกมได้อย่างสง่างาม ช่วงเวลานี้ ควรเข้าถึงส่วนประกอบได้โดยใช้ปุ่มนำทาง D-pad ดำเนินการนี้แทนที่จะพึ่งพา ปุ่มหน้าแรกเพื่อใช้ออก เนื่องจากตัวควบคุมต่างๆ อาจไม่สอดคล้องกันหรือเชื่อถือได้
เว็บ
อย่าเปิดใช้การท่องเว็บในเกมสำหรับ Android TV Android TV ไม่รองรับเว็บเบราว์เซอร์
หมายเหตุ: คุณสามารถใช้ชั้นเรียน WebView
เพื่อเข้าสู่ระบบเพื่อ
ซึ่งเป็นบริการโซเชียลมีเดีย
เครือข่าย
เกมมักต้องการแบนด์วิดท์ที่มากขึ้นเพื่อให้ประสิทธิภาพสูงสุด และผู้ใช้จำนวนมากก็ชอบ อีเทอร์เน็ตเข้ากับ Wi-Fi เพื่อให้มีประสิทธิภาพการทำงาน แอปของคุณควรตรวจสอบทั้ง Wi-Fi และอีเทอร์เน็ต การเชื่อมต่อ หากแอปมีไว้สำหรับทีวีเท่านั้น คุณไม่จำเป็นต้องตรวจสอบบริการ 3G/LTE อย่างที่ควร สำหรับแอปบนอุปกรณ์เคลื่อนที่