TV oyunları oluşturma

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

Ekran

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

Yatay ekranı destekle

Televizyon her zaman yan duruyor: Döndüremezsiniz ve dikey yön yoktur. Her zaman tasarlayın TV oyunlarınızın yatay modda görüntülenmesi gerekir.

Otomatik düşük gecikme modu

Belirli ekranlar, grafik işleme sonrası süreci gerçekleştirebilir. İşleme sonrası, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda otomatik düşük gecikme modunu (ALLM) seçin. Ö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, özellikle düşük gecikmenin daha önemli olduğu oyun ve video konferans uygulamalarında her zaman en iyisi olabilir.

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 işleme sonrası sürecini desteklemez; ve projenizin başarılı olup olmadığını desteklemesi durumunda, Display.isMinimalPostProcessingSupported() yöntemini çağırın.

Giriş cihazları

TV'lerin dokunmatik arayüzleri olmadığından, kontrollerinizi doğru şekilde yapmak daha da önemlidir. Böylece oyuncuların bunları sezgisel ve eğlenceli bulduğundan emin olabilirsiniz. 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 klavye düzenlerini belirlemek için şunları kullanabilirsiniz: getKeyCodeForKeyLocation() Örneğin, oyununuz WASD tuşlarını kullanarak hareketi destekliyor, ancak bu, AZERTY klavyesi. Bu klavyede A ve W tuşları farklı yerlerde bulunuyor. Tuş kodlarını buradan belirli konumlarda beklediğ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 bunlar için önemli etkinlik işleyiciler oluşturabilirsiniz ve beklenen davranışı nasıl uygulayacağınız hakkında daha fazla bilgi edinin.

Manifest

Android manifest dosyasında oyunların içermesi gereken bazı özel şeyler var.

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'inizde "true" olarak ayarlanmış android:isGame özelliğini <application> etiketiyle ilgili bir değişikliktir. Örnek:

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

Oyun kumandaları için destek beyan etme

Oyun kumandaları, TV cihazının kullanıcıları tarafından kullanılamayabilir veya etkin olmayabilir. Bu e-postaları nasıl oyununuzun bir oyun kumandasını desteklediğini kullanıcılara bildirmek için aşağıdaki girişi uygulama manifestiniz:

  <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 şunları yapamaz: uygulamanızı TV cihazlarına yükleyin.

Manifest girişleri hakkında daha fazla bilgi için Uygulama manifesti.

Google Play oyun hizmetleri

Oyununuz Google Play Games hizmetlerini entegre ediyorsa, projeyi ilerletmek için ilgili hususlara dikkat edin.

Başarılar

Oyununuzda en az beş (kazanılabilir) başarı bulunmalıdır. 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şlangıçta kullanıcının oturum açmasını sağlamaya çalışacaktır. Oyuncu oturum açmayı birkaç kez reddederse işlemi tekrarlamanız durumunda, oyununuz size sormayı bırakacaktır. Oturum açma hakkında daha fazla bilgi için: Android.

Kaydediliyor

Depolamak için Google Play Hizmetleri'ndeki Kaydedilmiş Oyunlar'ı kullanın elde edersiniz. 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.

Ayrıca, oyununuzun kullanıcı arayüzünde oyuncunun yerel olarak silme ve depolanan verileri içerebilir. Bu seçeneği oyunun Settings ekranına yerleştirebilirsiniz. Örneğin, kaydedilen oyunları Play Hizmetleri'ni kullanarak uygulamayla ilgili ayrıntılı bilgi için Android'de Kaydedilmiş Oyunlar bölümüne bakın.

Çık

Kullanıcının oyundan sorunsuz bir şekilde çıkmasına olanak tanıyan tutarlı ve bariz bir kullanıcı arayüzü öğesi sağlayın. Bu öğesine D-pad gezinme düğmeleriyle erişilebilmelidir. Bu Farklı kumandalar arasında tutarlı veya güvenilir olmadığından çıkış sağlayan ana sayfa düğmesi

Web

Android TV için oyunlarda web'e göz atmayı etkinleştirme. 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 ağı hem de Ethernet'i kontrol etmelidir bağlantılar. Uygulamanız yalnızca TV için kullanılıyorsa 3G/LTE hizmetini kontrol etmeniz gerekmez. mobil uygulama için