TV oyunları oluşturma

Televizyon ekranında mobil oyuna yeni gelebilecek pek çok husus yer alıyor birlikte çalışır. Bu alanlar arasında büyük boyutu, kontrol şeması ve tüm oyuncuların aynı anda görüntülemesi yer alır.

Ekran

TV ekranına yönelik oyun geliştirirken aklınızda bulundurmanız gereken iki temel şey, düşük gecikme desteği sağlıyor.

Yatay ekranı destekle

TV her zaman yataydır: Döndüremezsiniz ve dikey yönde görüntü alamazsınız. Her zaman tasarlayın TV oyunlarınızın yatay modda görüntülenmesi gerekir.

Otomatik düşük gecikme modu

Belirli ekranlar grafik son işleme gerçekleştirebilir. İşleme sonrası, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda, bu son işleme işlemini kapatarak gecikmeyi en aza indiren bir otomatik düşük gecikme modu (ALLM) bulunur. Örneğin, hakkında daha fazla bilgi için HDMI 2.1 spesifikasyonu. Diğer Ekranlar, benzer davranışa sahip bir oyun modunu destekleyebilir.

Android 11 ve sonraki sürümlerde bir pencerede otomatik düşük gecikme modu veya oyun izni istenebilir modun, mümkünse minimum işleme sonrası işlem isteği yapılarak kullanılmasını sağlayın. Bu özellik, özellikle düşük gecikmenin mümkün olan en iyi grafiklere sahip olmaktan daha önemli olduğu oyun ve video konferans uygulamaları için faydalıdır.

Minimum işleme sonrası özelliğini etkinleştirmek veya devre dışı bırakmak için Window.setPreferMinimalPostProcessing(), veya pencerenin preferMinimalPostProcessing özelliğini true olarak değiştirin. Tüm ekranlar minimum son işleme özelliğini desteklemez. Belirli bir ekranın bu özelliği destekleyip desteklemediğini öğrenmek için Display.isMinimalPostProcessingSupported() yöntemini çağırın.

Giriş cihazları

TV'lerde dokunmatik arayüz olmadığından, kontrollerinizi doğru şekilde belirlemek ve oyuncuların bunları sezgisel ve eğlenceli bulmasını sağlamak daha da önemlidir. Denetleyicileri kullanma takip etmek gibi dikkat edilmesi gereken başka sorunlar da mevcuttur. ve elektrik prizleri sorunsuz bir şekilde kopuyor. Oyunlar da dahil olmak üzere tüm TV uygulamaları sağlamak için çok önemlidir. Şunu okuyun: TV'yi Yönetme kullanma hakkında daha fazla bilgi için TV kumandalarını Belirli oyunlar için oyun kumandalarını yönetin Oyunlar için TV kumandalarını kullanma hakkında bilgi.

Klavye düzenleri

Android 13 (API düzeyi 33) ve sonraki sürümlerde getKeyCodeForKeyLocation() kullanarak klavye düzenlerini belirleyebilirsiniz. Örneğin, oyununuz WASD tuşlarını kullanarak hareket etmeyi destekliyor olabilir ancak bu, A ve W tuşları farklı konumlarda olan bir AZERTY klavyesinde düzgün çalışmayabilir. Tuş kodlarını buradan belirli konumlarda istediğiniz anahtarlar için:

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);
}

Bu örnekte, AZERTY klavyede keyUp değeri KeyEvent.KEYCODE_Z, keyLeft KeyEvent.KEYCODE_Q olarak ayarlandı, keyDown ve keyRight ise KeyEvent.KEYCODE_S olarak ayarlanır ve KeyEvent.KEYCODE_D. Artık bu önemli kodlar için önemli etkinlik işleyicileri oluşturabilir ve beklenen davranışı uygulayabilirsiniz.

Manifest

Oyunların Android manifest dosyasına eklemesi gereken bazı özel öğeler vardır.

Oyununuzu ana ekranda gösterin

Android TV ana ekranında, oyunlar normal uygulamalardan ayrı bir satırda gösterilir. Oyununuzun oyun listesinde görünmesi için uygulama manifest'inizin android:isGame özelliğini <application> etiketinde "true" olarak ayarlayın. Örnek:

<application
    ...
    android:isGame="true"
    ...
>

Oyun denetleyicileri için destek beyan etme

Oyun kontrol cihazları, TV cihazı kullanıcıları tarafından kullanılamayabilir veya etkin olmayabilir. Kullanıcıları oyununuzun oyun kumandasını desteklediğini doğru şekilde bilgilendirmek için uygulama manifestinize aşağıdaki girişi eklemeniz gerekir:

  <uses-feature android:name="android.hardware.gamepad" android:required="false"/>

Not: android:hardware:gamepad desteğini belirtirken android:required özelliğini "true" ile ilişkilendirin. Bunu yaparsanız kullanıcılar uygulamanızı TV cihazlarına yükleyemez.

Manifest girişleri hakkında daha fazla bilgi için Uygulama manifesti başlıklı makaleyi inceleyin.

Google Play oyun hizmetleri

Oyununuzda Google Play Games Hizmetleri entegre edilmişse başarılar, oturum açma ve oyunları kaydetme ile ilgili bazı hususları göz önünde bulundurmanız gerekir.

Başarılar

Oyununuz en az beş (kazanılabilir) başarı içermelidir. Yalnızca oyunu kontrol eden bir kullanıcı desteklenen bir giriş cihazından başarıları kazanabilmeniz gerekir. Daha fazla bilgi için ve bunların nasıl uygulanacağıyla ilgili bilgiler için Android'de Başarılar başlıklı makaleyi inceleyin.

Oturum açma

Oyununuz, başlatılırken kullanıcının oturum açmasını denemelidir. Oyuncu oturum açmayı arka arkaya birkaç kez reddederse oyununuz isteği durdurur. Oturum açma hakkında daha fazla bilgiyi Android'de oturum açma özelliğini uygulama başlıklı makalede bulabilirsiniz.

Kaydediliyor

Oyun kaydınızı depolamak için Google Play Hizmetleri Kayıtlı Oyunlar'ı kullanın. Oyununuzun, kullanıcı oyun kayıtlarında yer almak üzere tarafından benzersiz bir şekilde tanımlanabilir: Oynatıcı ister telefon ister TV kullanıyor olsun, oyunun kayıt bilgilerini aynı kullanıcı hesabından alabilmelidir.

Oyununuzun kullanıcı arayüzünde, oyuncunun yerel olarak ve bulutta depolanan verileri silmesine olanak tanıyan bir seçenek de sunmanız gerekir. Bu seçeneği oyunun Settings ekranına yerleştirebilirsiniz. Play Hizmetleri'ni kullanarak kayıtlı oyunları uygulamayla ilgili ayrıntılı bilgi için Android'de Kayıtlı Oyunlar başlıklı makaleyi inceleyin.

Çık

Kullanıcının oyundan sorunsuz bir şekilde çıkmasını sağlayan tutarlı ve belirgin bir kullanıcı arayüzü öğesi sağlayın. Bu öğeye D-pad gezinme düğmeleriyle erişilebilir. Çıkış yapmak için ana sayfa düğmesine güvenmek yerine bunu yapın. Bu düğme, farklı kumandalarda tutarlı ve güvenilir değildir.

Web

Android TV için oyunlarda web tarayıcısını etkinleştirmeyin. Android TV, web tarayıcısını desteklemiyor.

Not: Giriş işlemleri için WebView sınıfını kullanarak şu işlemleri gerçekleştirebilirsiniz: sosyal medya hizmetleridir.

Ağ Ürünleri

Oyunlar, optimum performans sağlamak için genellikle daha yüksek bant genişliğine ihtiyaç duyar ve pek çok kullanıcı bunu tercih eder Ethernet'i kablosuz ağa bağlayabilirsiniz. Uygulamanız hem kablosuz hem de ethernet bağlantılarını kontrol etmelidir. Uygulamanız yalnızca TV için kullanılıyorsa 3G/LTE hizmetini kontrol etmeniz gerekmez. mobil uygulama için